Executes an Asterisk Gateway Interface compliant program on a channel. AGI allows Asterisk to launch external programs written in any language to cont...
Find and remove duplicate cron entries that accumulate from repeated Ansible runs, manual edits, or package upgrades on Asterisk servers. Includes a s...
Diagnose the Asterisk maxsilence and minsecs warning, choose safe voicemail recording values, tune silence detection, and verify real calls.
Diagnose and fix 500 Server Internal Error responses to MWI SUBSCRIBE requests in Asterisk PJSIP. Usually caused by a missing or misconfigured mailbox...
Collect caller-entered digits with Read() for PIN verification, extension lookup, account numbers, and any numeric IVR input.
Replace Asterisk's self-signed PJSIP TLS certificate with a trusted Let's Encrypt cert, using a certbot deploy hook to keep it renewed automatically.
Play a custom audio greeting if the file exists on disk, falling back to built-in Asterisk prompts without any dialplan changes.
Simple auto-attendant using Background() and WaitExten() to play a greeting and route callers to different contexts by keypress.
Tiered after-hours routing: play a custom greeting using STAT() file checks, ring desk phones, escalate to cell phones via Local channels, then fall t...
Route incoming calls to different contexts based on time of day, day of week, and fixed holidays using GotoIfTime.
Generate Asterisk audio prompts from text using Google's gTTS Python library -- convert text to WAV files suitable for Playback() and Background().
Node.js application using ari-client to connect to Asterisk ARI, subscribe to channel events, and control the call lifecycle (ring, answer, play, hang...
Send incoming call notifications to a Slack channel via webhook, with FILTER() to prevent shell injection from caller ID data.
Enable the Asterisk REST Interface (ARI), configure HTTP and WebSocket access, and hand channels to a Stasis application for external control.
Look up caller names (CNAM) from an external HTTP service using a PHP AGI script -- normalize inbound numbers, query a CNAM provider, and set the call...
Configure the Asterisk Manager Interface (AMI) for remote control and monitoring -- TCP-based client/server access to originate calls, check status, a...
Generate a private CA and self-signed TLS certificates for PJSIP and WebRTC using Asterisk's built-in ast_tls_cert script, including client certificat...
Complete WebRTC configuration using res_pjsip -- WSS transport, DTLS/SRTP media encryption, HTTP server with TLS, and module loading for browser-based...
Restrict SIP registration and call traffic to trusted IP ranges using PJSIP ACLs, blocking scanners and brute-force attacks before authentication is a...
Practical reference for core voicemail.conf settings, mailbox syntax, recording formats, email delivery, PIN policy, retention, and storage backends.
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...
PJSIP configuration with template inheritance for endpoints, multi-transport setup, and SIP trunk registration.
Complete PJSIP SIP trunk setup with all five required objects: auth, registration, endpoint, AOR, and identify. Covers outbound caller ID, codec selec...
Configure Music on Hold classes in musiconhold.conf -- set up custom hold music directories, per-context MOH, and per-endpoint MOH assignment.
Configure ConfBridge user profiles, bridge profiles, and DTMF menus in confbridge.conf -- control participant behavior, room settings, recording, and ...
Organize large Asterisk dialplans into modular files using #include -- separate phone definitions, services, routing, and Class of Service into mainta...
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.