Request an agent to connect with the channel. Failure to find, alert the agent, or acknowledge the call will continue in the dialplan with AGENT\STATU...
Login an agent to the system. Any agent authentication is assumed to already be done by dialplan. Asterisk dialplan application reference.
Dynamically adds queue members.
Attempts to detect answering machines at the beginning of outbound calls. Simply call this application after the call has been answered (outbound only...
Executes an Asterisk Gateway Interface compliant program on a channel. AGI allows Asterisk to launch external programs written in any language to cont...
Execute the named subroutine, defined in AEL, from another dialplan language, such as extensions.conf, Realtime extensions, or Lua.
Dialplan extension that plays random Asterisk sound files in an infinite loop. Useful for load testing, demo systems, and verifying audio paths.
Configure fail2ban for Asterisk on Debian 12+ systems using journald without rsyslog. Covers the backend switch from file monitoring to systemd journa...
Fix the Asterisk warning about maxsilence needing to be less than minsecs in voicemail.conf. Explains what both settings do, why the relationship matt...
Diagnose and fix 500 Server Internal Error responses to MWI SUBSCRIBE requests in Asterisk PJSIP. Usually caused by a missing or misconfigured mailbox...
Fix logrotate failures on Debian 12+ systems running journald without rsyslog. Stale configs referencing the syslog user or rsyslog-specific directive...
Find and remove duplicate cron entries that accumulate from repeated Ansible runs, manual edits, or package upgrades on Asterisk servers. Includes a s...
Shell one-liners and a simple monitoring loop for watching queue activity, agent status, and call flow in real time from the command line.
Dialplan extension that lets you record IVR prompts by calling in, listen to the recording, and re-record if needed. No file uploads or command line r...
Enable the Asterisk REST Interface (ARI), configure HTTP and WebSocket access, and hand channels to a Stasis application for external control.
Use Progress() to send early media (183 Session Progress) to the caller -- play audio before formally answering the call, useful for custom ringback t...
Send incoming call notifications to a Slack channel via webhook, with FILTER() to prevent shell injection from caller ID data.
Generate Asterisk audio prompts from text using Google's gTTS Python library -- convert text to WAV files suitable for Playback() and Background().
Configure the Asterisk Manager Interface (AMI) for remote control and monitoring -- TCP-based client/server access to originate calls, check status, a...
Enable video calling in Asterisk -- configure video codecs (H.264, VP8, VP9) on PJSIP endpoints, set up video for WebRTC clients, and control codec ne...
Configure voicemail.conf -- mailbox definitions, email notifications, timezone formatting, recording options, password policies, and IMAP storage sett...
Complete WebRTC configuration using res_pjsip -- WSS transport, DTLS/SRTP media encryption, HTTP server with TLS, and module loading for browser-based...
Organize large Asterisk dialplans into modular files using #include -- separate phone definitions, services, routing, and Class of Service into mainta...
Configure Music on Hold classes in musiconhold.conf -- set up custom hold music directories, per-context MOH, and per-endpoint MOH assignment.
Store Call Detail Records in a MySQL database -- create the CDR schema, configure cdr_mysql.conf, and query call history with SQL.
Configure ConfBridge user profiles, bridge profiles, and DTMF menus in confbridge.conf -- control participant behavior, room settings, recording, and ...
Ring multiple extensions simultaneously and route based on DIALSTATUS -- busy, no answer, or unavailable each get different handling.
Use Set() for variable assignment, string slicing, and pattern-based digit manipulation in Asterisk dialplans.
A reusable subroutine that handles every DIALSTATUS value after outbound Dial(), using Q.850 HANGUPCAUSE codes to distinguish bad numbers from trunk f...
Enable one-touch call recording via DTMF during active calls -- configure automixmon in features.conf and enable it in Dial() options.