Store Call Detail Records in a MySQL database -- create the CDR schema, configure cdr_mysql.conf, and query call history with SQL.
Use Set() for variable assignment, string slicing, and pattern-based digit manipulation in Asterisk dialplans.
Configure Busy Lamp Field hints so desk phones show real-time extension status. Covers hint syntax, PJSIP device state subscriptions, and mapping BLF ...
Ring multiple extensions simultaneously and route based on DIALSTATUS -- busy, no answer, or unavailable each get different handling.
A reusable subroutine that handles every DIALSTATUS value after outbound Dial(), using Q.850 HANGUPCAUSE codes to distinguish bad numbers from trunk f...
Set up a call queue with timeout-based failover to voicemail or another destination. Covers agent membership, queue options in queues.conf, and DIALST...
Ring external cell phones through Local channels while preserving the original inbound DID as caller ID. Covers the Local channel pattern for follow-m...
Use Progress() to send early media (183 Session Progress) to the caller -- play audio before formally answering the call, useful for custom ringback t...
A centralized Gosub subroutine that handles DND, call forward, follow-me, and DIALSTATUS routing for any extension. Eliminates duplicating call-handli...
Configure and verify Asterisk voicemail email delivery, attachment formats, sendmail-compatible transport, retention, and delete-after-email behavior.
Let users record custom IVR prompts and greetings over the phone using the Record() application, with automatic playback for review.
Star code feature toggles stored in AstDB -- Do Not Disturb, Call Forwarding, and Follow Me, all controllable from the phone dial pad.
Enable one-touch call recording via DTMF during active calls -- configure automixmon in features.conf and enable it in Dial() options.
Ad-hoc conference rooms with ConfBridge -- users dial a feature code, enter a room number, and are bridged together. Includes bridge and user profiles...
Define custom DTMF-triggered features during active calls using features.conf -- configure blind/attended transfers, call parking, and create your own...
Pick up ringing calls by group using *8 or by targeting a specific extension with **XXXX. Configures named_call_group and named_pickup_group on PJSIP ...