How milad-mma/voip-auto-caller works
AutoCaller is an Issabel/Elastix outbound campaign dialer. Operators configure audio and call rules, import contacts, start campaigns, and inspect per-call outcomes; API clients can also request quick calls and poll results. The campaign runner originates calls through Asterisk, whose AGI flow plays audio and handles DTMF, while outcomes and reports are persisted for later export. The graph includes the documented subsystems and sampled web/API routes; the sql/ tree mirrors application modules, but its internal wiring was not independently inspected.
Main entry points: Router.php Route dispatch · Dialer.php Campaign dialer · CampaignController.php Campaign management · Agi.php IVR handler
Components 34
Web and API
- Web front controller
public/index.php - Route dispatch
app/lib/Router.php - REST API
app/controllers/ApiController.php - Authentication
app/controllers/AuthController.php - SQL REST API
sql/app/controllers/ApiController.php - SQL authentication
sql/app/lib/Auth.php - SQL web front controller
sql/public/index.php
Campaign operations
- Campaign management
app/controllers/CampaignController.php - Quick calls
app/controllers/QuickCallController.php - Contact import
app/lib/Importer.php - Phonebook
app/controllers/PhonebookController.php - Do-not-call list
app/lib/Dnc.php - Audio library
app/lib/Audio.php - SQL campaign management
sql/app/controllers/CampaignController.php
Calling runtime
- Campaign dialer
app/lib/Dialer.php - Dialer service
bin/dialer.php - AMI client
app/lib/Ami.php - AGI entrypoint
bin/agi.php - IVR handler
app/lib/Agi.php - Trunk pool
app/lib/Trunks.php - SQL campaign dialer
sql/app/lib/Dialer.php - SQL trunk pool
sql/app/lib/Trunks.php
Administration and results
- Reports and export
app/lib/Exporter.php - PBX settings
app/controllers/SettingsController.php - Admin CLI
bin/console.php - SQL PBX settings
sql/app/controllers/SettingsController.php - SQL admin CLI
sql/bin/console.php - English translations
app/lang/en.php - Persian translations
app/lang/fa.php - SQL Persian translations
sql/app/lang/fa.php
Other components
- Operator
- API client
- Asterisk PBX
- MySQL data
Connections 34
- Operator → Web front controller: uses web UI
- API client → REST API: sends requests
- Web front controller → Route dispatch: routes requests
public/index.php - Route dispatch → Campaign management: dispatches campaigns
- Route dispatch → REST API: dispatches API
- Route dispatch → Authentication: dispatches login
- Campaign management → Contact import: imports contacts
app/controllers/CampaignController.php - Campaign management → MySQL data: stores campaign data
- REST API → Quick calls: creates quick call
app/controllers/ApiController.php - Quick calls → MySQL data: stores call
- Phonebook → Campaign management: adds contacts
- Contact import → Do-not-call list: checks exclusions
- Dialer service → Campaign dialer: runs daemon
- Campaign dialer → MySQL data: reads queued work
- Campaign dialer → Trunk pool: selects trunk
- Campaign dialer → AMI client: originates calls
- AMI client → Asterisk PBX: sends AMI events
- Asterisk PBX → AMI client: reports outcomes
- Asterisk PBX → AGI entrypoint: runs AGI
- AGI entrypoint → IVR handler: starts IVR
- IVR handler → MySQL data: records responses
- IVR handler → Asterisk PBX: handles DTMF
- Reports and export → MySQL data: reads outcomes
- PBX settings → Trunk pool: configures trunk pool
- PBX settings → MySQL data: stores settings
- Admin CLI → MySQL data: runs administration
- SQL REST API → Quick calls: creates quick call
sql/app/controllers/ApiController.php - SQL campaign management → Contact import: imports contacts
sql/app/controllers/CampaignController.php - SQL campaign dialer → MySQL data: reads queued work
- SQL campaign dialer → SQL trunk pool: selects trunk
- SQL trunk pool → Asterisk PBX: checks trunk state
- SQL PBX settings → SQL trunk pool: configures trunk pool
- SQL web front controller → SQL authentication: authenticates users
- SQL admin CLI → MySQL data: runs administration