Tenants (clients)
Agents / extensions
Phone star-codes (from the extension itself):
*78/*79 DND on/off,
*72+dest/*73 CFU,
*90+dest/*91 CFB,
*92+dest/*93 CFNA,
*70/*71 always-record on/off.
In-call *1 toggles recording on this call.
Dest can be *721002 or *72 then digits + #.
DID routing (From / To)
Upload CSV (one DID per line). Formats:
918041999001,1001 (maps to extension) or
918041999800,ivr,main. Applies to the tenant ID above.
Gateway reloads within 60s.
SIP trunks (max 5 per tenant)
Multiple providers per tenant. Outbound PSTN uses this tenant’s trunks
(register_dids prefix match, else first trunk). Inbound INVITE from the
proxy host is matched to DIDs below. After adding a trunk that must
REGISTER, restart sipgw_app once.
Voicebots (From / To matching)
Auto-attendant (IVR)
Seeded menu main: press 1 → 1001, 2 → 1002, 3 → voicemail 1003. Dial 0 internally or DID 918041999800. prompt_text is rendered to WAV by python3 workers/miniai_worker.py.
Voicemail mailboxes
Retrieve: dial *97 or 5000, then PIN (default = mailbox number). # skip, * delete. MWI NOTIFY is sent when a message is left. In-call: *2 blind transfer, *3 3-way, *4+ext+# consult, *5 complete, *6 cancel. Worker: python3 workers/vm_notify.py.
Messages
Live registrations
Queues
Call detail records
Recordings
CRM webhooks
sipgw queues call.start, call.end, and recording.ready. Worker: python3 workers/crm_webhook.py POSTs JSON with optional HMAC X-SIPGW-Signature.
Gateway SIP log / debug
VM email / MiniAI (workers)
STT is WebSocket PCM16 8 kHz. TTS is HTTP /synthesize (audio/L16 8 kHz). LLM is Ollama /api/generate. Run python3 workers/miniai_worker.py and python3 workers/vm_notify.py beside sipgw_app — never on the SIP thread.