Start with the channel's real context
The dialplan organizes actions into contexts. A channel driver sends a new channel to a named context, and Asterisk looks for the requested extension from there. An extension is a named sequence of actions rather than necessarily a physical phone, while priorities determine execution order.
Treat the endpoint or trunk context as an authorization boundary. A carrier-facing channel should not automatically inherit internal, premium, international, feature-code or emergency destinations. The file text, endpoint configuration, loaded context and context shown on the actual channel remain separate evidence.
Contexts form a call-permission boundary. Keep untrusted inbound routes separate from privileged outbound patterns.
Keep the first path exact and bounded
The fragment below exposes two exact internal destinations and ends each path explicitly. It assumes the named PJSIP endpoints already exist. The 20-second timeout is an illustrative choice, not a universal policy, and the fragment creates no trunk, emergency or outside-calling route.
Asterisk requires priority 1 and then follows the next priority. The n form is resolved from the preceding priority, but it does not replace inspection of the loaded sequence. An unlisted number failing in this restricted context is expected behavior rather than proof that registration or the PBX failed.
[lab-internal]
exten => 2101,1,NoOp(Restricted internal call to 2101)
same => n,Dial(PJSIP/2101,20)
same => n,Hangup()
exten => 2102,1,NoOp(Restricted internal call to 2102)
same => n,Dial(PJSIP/2102,20)
same => n,Hangup()Understand exact, pattern and include search
Within a context, Asterisk searches explicit extensions before pattern matches, then includes and switches. Pattern extensions begin with an underscore. X, Z and N represent different digit sets; a character set such as [2-5] is narrower still. Asterisk sorts competing patterns by specificity rather than by the order in which they appear in the file.
The period wildcard matches one or more characters, while exclamation can match zero or more and can declare a match complete immediately. Both can match more than decimal digits. Do not use a broad catch-all as a substitute for normalized, authorized destinations, especially where an included context can expose a trunk or feature.
Prevent priority fall-through across matches
Asterisk searches for the next best match at each priority. If an exact extension has priority 1 but no priority 2, a less-specific matching pattern with priority 2 can continue the channel unexpectedly. Overlapping extensions in included contexts can create the same class of surprise.
End a completed branch explicitly, normally with Hangup(), unless continued execution is intentional and documented. Draw included-context relationships, inspect overlapping exact and pattern matches, and give every conditional jump a real target. A successful GotoIf() evaluation is not evidence that its destination exists or that the later call completed.
Prove the loaded match before a live call
Use a supported dialplan reload, then inspect dialplan show lab-internal and the exact lookup dialplan show 2101@lab-internal. The latter is important when patterns or includes could also match. Confirm the running endpoint or trunk enters the intended context; registration success does not establish that call-origin context.
Inspect application help on the running build before copying version-sensitive options. Dial() attempts one or more channels and may continue at the next priority when no requested channel can be called or its timeout expires. Loaded syntax, selected extension, created outbound channel, remote response, bridge and media are separate acceptance stages.
Change, test and roll back one boundary
Record the previous file, the reload result and the loaded before-and-after dialplan. Test one allowed exact number, one denied number, every affected pattern edge, no-answer, busy and unavailable outcomes, then verify normal hangup and resource cleanup. If the change adds an outside route, test authorization and number normalization separately from trunk reachability.
Keep the previous configuration and a rollback command before reloading. A parsed dialplan is not proof of a successful call, and one completed call is not evidence that every overlapping pattern, included context, endpoint class or failure branch is safe. No PBX, dialplan, endpoint, route, call or media path was tested for this guide.
Preserve the Local-channel lifecycle when re-entering dialplan
A Local/extension@context destination creates two internal channel halves and normally optimizes out after answer. Use the Local-channel lifecycle guide to decide whether the layer is necessary, which half executes the requested context, which variables or Dial() options must survive and whether /n is justified. A loaded context does not by itself prove the retained feature, bridge or post-optimization data owner.
Load hints in the intended context
A hint is a special dialplan priority whose extension, context and mapped providers must be confirmed in the running dialplan. The device-state and hints guide separates that mapping and its aggregate state from the PJSIP subscription and handset display.
Use a bounded Gosub instead of duplicating a branch
For reusable dialplan logic, the Gosub guide adds explicit arguments, stack frames, Return() and channel ownership. A loaded target and a returned frame remain narrower evidence than a completed call.
Keep post-bridge targets attached to one channel
The after-bridge guide maps the configured target, next bridge, owner survival and first executed priority instead of treating bridge completion as a whole-call dialplan return.
Keep TALK_DETECT arguments and ownership explicit
Use the TALK_DETECT guide to keep the channel owner, silence milliseconds, talking magnitude and removal point visible in dialplan review.
Make channel-group admission explicit
A channel-group guard needs an exact group, category, channel owner, assignment point, comparison and at-limit destination. The number is local channel state rather than proof of trunk capacity.
Make menu context, match order and timeouts explicit
For an interruptible menu, the BackGround and WaitExten guide records the destination context, explicit extensions, patterns, includes, i and t branches, digit timeout and response timeout rather than treating every keypress as a direct jump.
Treat generated contact strings as dialplan evidence
When ringing multiple PJSIP registrations, record the generated contact dial string, the branch used when it is empty and the actual channels created by Dial().
Run media-offer changes after callee creation
For one outbound PJSIP leg, use the PJSIP_MEDIA_OFFER guide to distinguish lowercase callee pre-dial handling from uppercase caller handling and to preserve the emitted SDP.
Make URI parsing an explicit dialplan boundary
The PJSIP_PARSE_URI guide distinguishes literal-value and variable-name calls, selector-specific absence values and the later authorization or routing branch.
Attach hold interception before the device signal
The HOLD_INTERCEPT guide treats set and remove as write-only, channel-scoped lifecycle actions and preserves a recovery path when the event consumer is unavailable.
Bind each fax session option to the application channel
Use the res_fax guide to keep FAXOPT() writes on the channel that executes ReceiveFAX() or SendFAX() and to preserve the application result before routing continues.
Store RTCP fields with their channel identity
Use the RTCP statistics guide before exporting CHANNEL(rtcp,...) values so the exact PJSIP owner, stream, direction and collection time remain attached to every field.
Preserve response scope when returning from a callee handler
The response-header diagnostic separates reading the 200 response on the callee from carrying one approved value into later caller dialplan.
Handle multi-contact function results without losing identity
The PJSIP AoR/contact guide preserves the comma-separated identifier list before one contact field is selected in dialplan.
Query the endpoint owned by the current PJSIP leg
The PJSIP endpoint inspection guide uses CHANNEL(endpoint) before reading one configuration field and keeps caller and callee ownership separate.
Run the DTMF override on the channel that sends it
The PJSIP_DTMF_MODE workflow uses explicit leg ownership and callee pre-dial timing instead of assuming a caller-side write reaches every outbound channel.
Set transfer ownership before Stasis on the REFER leg
Use the PJSIP_TRANSFER_HANDLING workflow to place a write on the exact PJSIP channel before it enters the ARI application.
Run outbound From-parameter writes on the callee pre-dial leg
The PJSIP_HEADER_PARAM workflow uses lowercase b() to reach each new outbound channel before its INVITE.
Use PJSIPNotify only on a supported maintenance release
The PJSIPNotify application guide covers its version floor, named and inline content, current-dialog behavior and arbitrary-URI dependency.
Place inherited header state before child-channel creation
The PJSIP inheritable-header workflow shows why caller timing, lowercase b() callee mutation and fork-specific evidence matter.
Run media refresh logic on the exact PJSIP channel
The session-refresh guide explains why Local channels, transfers and bridge legs cannot share one implicit refresh state.
Bind header discovery to the current request and channel
The PJSIP header-list diagnostic records the INVITE, channel, prefix and selected instance before changing routing logic.
Place PJSIPHangup before answer and expect termination
The PJSIPHangup workflow shows why an implicit answer or wrong channel defeats the intended response and why priorities after the application are not a continuation branch.
Read outbound PJSIP context on the callee leg
Use a callee pre-dial handler when outbound channel values must be observed before the INVITE. The channel-context diagnostic distinguishes lowercase b() from caller-side B().
Treat MESSAGE state and MessageSend execution as separate steps
The PJSIP MessageSend guide follows MESSAGE() fields, optional MESSAGE_DATA() and MessageSend() handler status without turning one successful application return into delivery.
Make log-group assignment part of the loaded execution path
Use the LOG_GROUP diagnostic to prove the exact channel and priority that writes the group before changing logger state.
Distinguish removed Macro semantics from current Gosub execution
The FreePBX 17 macro-to-Gosub guide records how explicit targets, saved return addresses, frame-local variables and return values replace site-owned Macro assumptions.
Bind frame tracing to the executed channel and priority
Use the frame-trace guide to prove the channel and dialplan point that owns an internal trace, then restore any temporary diagnostic state.
Bound shared-state critical sections
Use the LOCK, TRYLOCK and UNLOCK guide when concurrent channels must update one shared invariant, and keep slow call handling outside the mutex.
Distinguish blank AstDB values from absent keys
The AstDB guide combines DB(), DB_EXISTS(), DB_DELETE() and DB_KEYS() without turning one blank read into proof that the key never existed.
Treat time selection as one loaded-priority decision
Use the Asterisk time-routing guide to distinguish GotoIfTime, ExecIfTime, IFTIME, omitted-label fall-through and the resolved downstream target.
Treat variable scope as part of the loaded call path
Use the Asterisk variable-scope guide to place each write before or after child creation and to distinguish a linked call from a shared variable store.
Make failure control flow visible in each context
Use the exception and application-failure guide to distinguish local i, t and T handling, the current context’s e extension and explicit status branching.
Choose the least powerful dynamic dialplan primitive
Use the lookup and evaluated-subroutine guide to prove an exact target before choosing EVAL_EXTEN() or EVAL_SUB().
Apply JITTERBUFFER before the intended media stage
Use the jitter-buffer policy guide to identify the live channel and direction before setting fixed, adaptive or disabled behavior.
Treat an ODBC lookup as a synchronous branch dependency
The func_odbc guide defines argument, result, timeout and fallback contracts before a database value controls the next dialplan priority.
Give every database write an explicit completion path
The ODBC transaction guide maps accepted, rejected, zero-row, timeout, hangup and uncertain-completion branches before a write enters production.
Create one periodic hook and retain its ID
The periodic-hook guide treats the read form as state creation and the returned ID as the handle for later on or off control.
Bound blocking media waits and branch on their exact contract
The WaitForSilence and WaitForNoise guide separates application duration, iteration count, timeout and immediate status handling.
Defer and bound polled conditions explicitly
The WaitForCondition guide shows why replacement syntax, explicit truth comparison, timeout and interval are part of the loaded dialplan contract.
Keep epoch targets and duration limits type-safe
The WaitUntil guide separates an absolute Unix epoch from seconds-based channel and digit-collection timeouts.
Make Dial ownership and return behavior explicit
The Dial guide distinguishes caller-channel results, callee-channel handlers, bridge exit and the option that authorizes post-call continuation.
Use Originate as a channel-creation boundary
The Originate application guide makes the app and exten argument forms, timeout, wait mode, destination channel and immediate status explicit.
Use Bridge only after the peer channel exists
The Bridge application guide contrasts joining two existing channels with Dial creating an outbound leg.
Keep holding handles distinct from bridge identities
The BridgeWait and BridgeAdd guide follows loaded arguments into holding membership and later bridge addition.
Keep AMI Bridge separate from dialplan Bridge
The AMI bridge-control guide preserves the manager action and dialplan application as different contracts despite their shared name.
Validate every AMI transfer destination as dialplan input
The AMI transfer-control guide keeps context, extension and Redirect priority explicit for each requested leg.
Keep attended-transfer recovery outside destination guesswork
The AMI cancel-and-recovery guide treats abort, callback timing and final topology as explicit state.
Choose whether a Local channel may leave the path
The AMI Local optimization guide covers modifier ownership and state that can disappear with the Local halves.
Relate live dialplan position to a timestamped channel snapshot
The AMI channel snapshots guide keeps context, extension, priority and application state distinct from later call completion.
Emit bounded, versioned UserEvent data
The AMI UserEvent guide documents event naming, the dialplan body format and consumer-safe correlation.
Keep DEVICE_STATE writes inside the Custom provider boundary
The AMI device-state guide distinguishes dialplan-owned Custom: writes from remote-node synchronization and provider reads.
Keep CustomPresence ownership explicit
The AMI presence-state guide confines PRESENCE_STATE() writes to CustomPresence: and records the writer, reset policy and consumer.
Keep extension-state context and hint mapping explicit
The AMI extension-state guide preserves the loaded context, extension and device mapping instead of inferring them from a display label.
Separate loaded dialplan from its durable owner
The AMI runtime dialplan guide treats a manager mutation as loaded-state change, not undocumented proof of source persistence.
Preserve profile writes and CONFBRIDGE_RESULT in channel order
The ConfBridge profiles guide treats dynamic profile templates, option writes, application entry and the later result as ordered dialplan evidence.
Make structured state observable
Use the HASH and ARRAY guide to keep writer, channel, exact key, snapshot time, delimiter shape and later branch independently observable.
Make dynamic dial membership a visible contract
Use the DIALGROUP guide to record the list owner, operation, exact readback and fallback before interpreting a call result.
Make remote lookups an explicit dialplan dependency
Use the Asterisk CURL guide to document the approved destination, effective options, response contract and safe fallback.
Treat filtering and validation as different operations
Use the input-validation guide to reject an unexpected FILTER transformation before a changed value enters routing.
Keep target existence separate from route selection
Use the DIALPLAN_EXISTS migration guide before replacing a deprecated check or assuming a positive result selects one pattern.
Keep bridge features outside normal dialplan flow
Use the custom dynamic features guide before mapping an application that expects PBX-core flow.
Watch the explanation
Starts with an extension-not-found error, then builds a small context and follows its priorities in the Asterisk console. A concrete introduction to how an incoming channel finds dialplan instructions.
Read applicability and editorial notes →Watch this video here
Historical 2014 tutorial. Contexts and priorities remain relevant; the chan_sip endpoint commands do not apply to Asterisk 22. Review used the available transcript and primary references; audio and screen readability remain unverified.
The player loads only when you choose Watch here. Playback uses YouTube’s privacy-enhanced embed; YouTube processes playback data.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
- Asterisk: contexts, extensions and priorities ↗
- Asterisk: pattern matching and match order ↗
- Asterisk: include statements and overlap warning ↗
- Asterisk: dialplan overview and reload command ↗
- Asterisk 22 Dial application reference ↗
- Asterisk Local Channel overview ↗
- Asterisk Local Channel modifiers ↗
- Asterisk Local Channel optimization ↗
- Asterisk device-state concepts ↗
- Asterisk extension state and hints ↗
- Asterisk state query and manipulation ↗
- Asterisk res_pjsip presence subscriptions ↗
- Asterisk presence-state concepts ↗
- Asterisk states and presence overview ↗
- Asterisk dialplan subroutines overview ↗
- Asterisk Gosub guide ↗
- Asterisk 22 Gosub application reference ↗
- Asterisk 22 Return application reference ↗
- Asterisk STACK_PEEK function reference ↗
- Asterisk pre-dial handlers ↗
- Asterisk pre-bridge handlers ↗
- Asterisk 22 CHANNEL function reference ↗
- Asterisk 22 Bridge application reference ↗
- Asterisk 22 Goto application reference ↗
- Asterisk 22 BridgeEnter AMI event ↗
- Asterisk 22 BridgeLeave AMI event ↗
- Asterisk 22 Hangup AMI event ↗
- Asterisk 22 TALK_DETECT function ↗
- Asterisk 22 DENOISE function ↗
- Asterisk 22 AMI ChannelTalkingStart event ↗
- Asterisk 22 AMI ChannelTalkingStop event ↗
- Asterisk 22 ARI data models ↗
- Asterisk GROUP function ↗
- Asterisk GROUP_COUNT function ↗
- Asterisk GROUP_LIST function ↗
- Asterisk GROUP_MATCH_COUNT function ↗
- Asterisk channels key concepts ↗
- Asterisk channel-variable inheritance ↗
- Asterisk 24 BackGround application ↗
- Asterisk latest WaitExten application ↗
- Asterisk latest TIMEOUT function ↗
- Asterisk PJSIP_DIAL_CONTACTS function ↗
- Asterisk Dial application ↗
- Asterisk PJSIP_AOR function ↗
- Asterisk PJSIP_CONTACT function ↗
- Asterisk PJSIP configuration relationships ↗
- Asterisk AMI PJSIPShowAors action ↗
- Asterisk AMI PJSIPShowEndpoint action ↗
- Asterisk PJSIP_MEDIA_OFFER function ↗
- Asterisk PJSIP_SEND_SESSION_REFRESH function ↗
- Asterisk PJSIP advanced codec negotiation ↗
- Asterisk res_pjsip endpoint reference ↗
- Asterisk codec modules and translation paths ↗
- Asterisk PJSIP_PARSE_URI function ↗
- Asterisk PJSIP_PARSE_URI_FROM function ↗
- Asterisk PJSIP_HEADER function ↗
- Asterisk FILTER function ↗
- Asterisk important security considerations ↗
- RFC 3261: SIP Session Initiation Protocol ↗
- Asterisk HOLD_INTERCEPT function ↗
- Asterisk AMI Hold event ↗
- Asterisk AMI Unhold event ↗
- Asterisk REST data models: ChannelHold and ChannelUnhold ↗
- Asterisk ARI Channels REST API ↗
- Asterisk PJSIP_MOH_PASSTHROUGH function ↗
- Asterisk 22 FAXOPT function ↗
- Asterisk 22 ReceiveFAX application ↗
- Asterisk 22 SendFAX application ↗
- Asterisk branch 22 res_fax sample configuration ↗
- Asterisk branch 22 res_fax implementation ↗
- Asterisk Media Experience Score ↗
- Asterisk MES implementation ↗
- Asterisk bridge media paths ↗
- Asterisk PJSIP troubleshooting: direct media ↗
- Asterisk PJSIP_RESPONSE_HEADER dialplan function ↗
- Asterisk PJSIP_RESPONSE_HEADERS dialplan function ↗
- Asterisk res_pjsip header-function source ↗
- Asterisk PJSIP_ENDPOINT dialplan function ↗
- Asterisk CHANNEL dialplan function ↗
- Asterisk PJSIP_DTMF_MODE dialplan function ↗
- Asterisk Dial application and pre-dial handler guidance ↗
- Asterisk AMI DTMFBegin event ↗
- Asterisk AMI DTMFEnd event ↗
- Asterisk PJSIP_TRANSFER_HANDLING dialplan function ↗
- Asterisk ARI transfer handling guide ↗
- Asterisk res_pjsip remote attended transfers ↗
- Asterisk PJSIP_HEADER_PARAM dialplan function ↗
- RFC 3261: SIP ↗
- Asterisk PJSIPNotify dialplan application ↗
- Asterisk PJSIPNotify AMI action ↗
- Asterisk res_pjsip_notify configuration reference ↗
- Asterisk PJSIPNotify application introduction ↗
- RFC 6665: SIP-Specific Event Notification ↗
- Asterisk PJSIP_INHERITABLE_HEADER dialplan function ↗
- Asterisk 20 PJSIP_INHERITABLE_HEADER reference ↗
- Asterisk 22 PJSIP_INHERITABLE_HEADER reference ↗
- Asterisk 23 PJSIP_INHERITABLE_HEADER reference ↗
- Asterisk 22 PJSIP_SEND_SESSION_REFRESH reference ↗
- RFC 3311: SIP UPDATE method ↗
- RFC 3264: SDP offer/answer model ↗
- Asterisk PJSIP_HEADERS dialplan function ↗
- Asterisk PJSIPHangup dialplan application ↗
- Asterisk Hangup dialplan application ↗
- Asterisk hangup-cause inspection guide ↗
- Asterisk hangup-cause mappings ↗
- Asterisk MessageSend dialplan application ↗
- Asterisk MESSAGE dialplan function ↗
- Asterisk MESSAGE_DATA dialplan function ↗
- Asterisk 22 PJSIP_ENDPOINT reference ↗
- RFC 3428: SIP MESSAGE method ↗
- Asterisk LOG_GROUP dialplan function ↗
- Asterisk 22 LOG_GROUP dialplan function ↗
- Asterisk logging overview ↗
- Asterisk basic logging commands ↗
- Asterisk call identifier logging ↗
- Asterisk collecting debug information ↗
- Sangoma: upgrading to FreePBX 17 ↗
- Sangoma: FreePBX 17 platform overview ↗
- Asterisk 20 Macro application reference ↗
- Asterisk Gosub application reference ↗
- Asterisk Return application reference ↗
- Asterisk LOCAL function reference ↗
- Asterisk LOCAL_PEEK function reference ↗
- Asterisk StackPop application reference ↗
- Asterisk FRAME_TRACE dialplan function ↗
- Asterisk FRAME_DROP dialplan function ↗
- Asterisk LOCK dialplan function ↗
- Asterisk TRYLOCK dialplan function ↗
- Asterisk UNLOCK dialplan function ↗
- Asterisk 22 SHARED dialplan function ↗
- Asterisk global variables basics ↗
- Asterisk internal database overview ↗
- Asterisk DB dialplan function ↗
- Asterisk DB_EXISTS dialplan function ↗
- Asterisk DB_DELETE dialplan function ↗
- Asterisk DB_KEYS dialplan function ↗
- Asterisk 22 GotoIfTime application ↗
- Asterisk 22 ExecIfTime application ↗
- Asterisk 22 IFTIME function ↗
- Asterisk 22 TESTTIME function ↗
- Asterisk 22 STRFTIME function ↗
- Sangoma: Time Conditions module overview ↗
- Sangoma: Time Conditions user guide ↗
- Sangoma: Time Group user guide ↗
- FreePBX Time Conditions release/17.0 metadata ↗
- Asterisk 22 Set application ↗
- Asterisk 22 MASTER_CHANNEL function ↗
- Asterisk 22 LOCAL function ↗
- Asterisk 22 LOCAL_PEEK function ↗
- Asterisk 22 VARIABLE_EXISTS function ↗
- Asterisk 22 IMPORT function ↗
- Asterisk special dialplan extensions ↗
- Asterisk 23 RaiseException application ↗
- Asterisk 23 EXCEPTION function ↗
- Asterisk 23 TryExec application ↗
- Asterisk 23 DIALPLAN_EXISTS function ↗
- Asterisk 23 EVAL_EXTEN function ↗
- Asterisk 23 EVAL_SUB function ↗
- Asterisk 23 JITTERBUFFER dialplan function ↗
- Asterisk ConfBridge configuration ↗
- Asterisk IP Quality of Service ↗
- Asterisk packet-loss concealment overview ↗
- Asterisk Configuring res_odbc ↗
- Asterisk func_odbc.conf sample ↗
- Asterisk res_odbc.conf sample ↗
- Asterisk 23 ODBC_FETCH function ↗
- Asterisk 23 SQL_ESC function ↗
- Asterisk 23 SQL_ESC_BACKSLASHES function ↗
- Asterisk security advisory AST-2022-003 ↗
- Asterisk database transactions ↗
- Asterisk latest ODBC transaction function ↗
- Asterisk latest ODBC_Commit application ↗
- Asterisk latest ODBC_Rollback application ↗
- Asterisk 23 PERIODIC_HOOK function ↗
- Asterisk 22 PERIODIC_HOOK function ↗
- Asterisk 20 PERIODIC_HOOK function ↗
- Asterisk Playback application ↗
- Asterisk 23 WaitForSilence application ↗
- Asterisk 23 WaitForNoise application ↗
- Asterisk 22 WaitForSilence application ↗
- Asterisk 22 WaitForNoise application ↗
- Asterisk 23 BackgroundDetect application ↗
- Asterisk 23 WaitForCondition application ↗
- Asterisk 22 WaitForCondition application ↗
- Asterisk dialplan expressions ↗
- Asterisk conditional applications ↗
- Asterisk 23 VARIABLE_EXISTS function ↗
- Asterisk 23 GLOBAL_EXISTS function ↗
- Asterisk 23 WaitUntil application ↗
- Asterisk 22 WaitUntil application ↗
- Asterisk 23 STRFTIME function ↗
- Asterisk 23 STRPTIME function ↗
- Asterisk HANGUPCAUSE_KEYS function ↗
- Asterisk 23 Originate application ↗
- Asterisk 22 Originate application ↗
- Asterisk 23 AMI Originate action ↗
- Asterisk ARI interface overview ↗
- Asterisk 23 Bridge application ↗
- Asterisk Bridge application overview ↗
- Asterisk 23 CHANNELS function ↗
- Asterisk ARI bridge overview ↗
- Asterisk 23 BridgeWait application ↗
- Asterisk 22 BridgeWait application ↗
- Asterisk 23 BridgeAdd application ↗
- Asterisk 22 BridgeAdd application ↗
- Asterisk 23 AMI Bridge action ↗
- Asterisk 22 AMI Bridge action ↗
- Asterisk 23 AMI BridgeList action ↗
- Asterisk 23 AMI BridgeInfo action ↗
- Asterisk 23 AMI BridgeKick action ↗
- Asterisk 22 AMI BridgeKick action ↗
- Asterisk 23 AMI BridgeCreate event ↗
- Asterisk 23 AMI BridgeEnter event ↗
- Asterisk 23 AMI BridgeLeave event ↗
- Asterisk 23 AMI BridgeInfoChannel event ↗
- Asterisk 23 AMI BridgeInfoComplete event ↗
- Asterisk 23 AMI Redirect action ↗
- Asterisk 22 AMI Redirect action ↗
- Asterisk 23 AMI BlindTransfer action ↗
- Asterisk 22 AMI BlindTransfer action ↗
- Asterisk 23 AMI Atxfer action ↗
- Asterisk 22 AMI Atxfer action ↗
- Asterisk 23 AMI BlindTransfer event ↗
- Asterisk 23 AMI AttendedTransfer event ↗
- Asterisk 23 AMI CancelAtxfer action ↗
- Asterisk 22 AMI CancelAtxfer action ↗
- Asterisk 23 attended-transfer feature configuration ↗
- Asterisk 22 attended-transfer feature configuration ↗
- Asterisk feature-code call transfers ↗
- Asterisk 23 AMI LocalOptimizeAway action ↗
- Asterisk 22 AMI LocalOptimizeAway action ↗
- Asterisk 23 AMI LocalOptimizationBegin event ↗
- Asterisk 23 AMI LocalOptimizationEnd event ↗
- Asterisk 23 AMI LocalBridge event ↗
- Asterisk AMI v2 specification: Local channel optimization ↗
- Asterisk 23 AMI CoreShowChannelMap action ↗
- Asterisk 22 AMI CoreShowChannelMap action ↗
- Asterisk 23 AMI CoreShowChannelMapComplete event ↗
- Asterisk 22 AMI CoreShowChannelMapComplete event ↗
- Asterisk 23 AMI CoreShowChannels action ↗
- Asterisk 23 AMI CoreShowChannel event ↗
- Asterisk 23 AMI CoreShowChannelsComplete event ↗
- Asterisk 23 AMI Status action ↗
- Asterisk 23 AMI Status event ↗
- Asterisk 23 AMI StatusComplete event ↗
- Asterisk 23 AMI Newchannel event ↗
- Asterisk 23 AMI Rename event ↗
- Asterisk 23 AMI UserEvent action ↗
- Asterisk 22 AMI UserEvent action ↗
- Asterisk 23 AMI UserEvent event ↗
- Asterisk 22 AMI UserEvent event ↗
- Asterisk 23 UserEvent dialplan application ↗
- Asterisk 22 UserEvent dialplan application ↗
- Asterisk AMI event filtering ↗
- Asterisk AMI command syntax ↗
- Asterisk Manager TCP/IP API ↗
- Asterisk 23 AMI DeviceStateChange action ↗
- Asterisk 22 AMI DeviceStateChange action ↗
- Asterisk 23 AMI DeviceStateList action ↗
- Asterisk 22 AMI DeviceStateList action ↗
- Asterisk 23 AMI DeviceStateChange event ↗
- Asterisk 22 AMI DeviceStateChange event ↗
- Asterisk 23 AMI DeviceStateListComplete event ↗
- Asterisk 22 AMI DeviceStateListComplete event ↗
- Asterisk 23 DEVICE_STATE function ↗
- Asterisk 22 DEVICE_STATE function ↗
- Asterisk 23 AMI PresenceState action ↗
- Asterisk 22 AMI PresenceState action ↗
- Asterisk 23 AMI PresenceStateList action ↗
- Asterisk 22 AMI PresenceStateList action ↗
- Asterisk 23 AMI PresenceStateChange event ↗
- Asterisk 22 AMI PresenceStateChange event ↗
- Asterisk 23 AMI PresenceStatus event ↗
- Asterisk 22 AMI PresenceStatus event ↗
- Asterisk 23 AMI PresenceStateListComplete event ↗
- Asterisk 22 AMI PresenceStateListComplete event ↗
- Asterisk 23 PRESENCE_STATE function ↗
- Asterisk 22 PRESENCE_STATE function ↗
- Asterisk 23 AMI ExtensionState action ↗
- Asterisk 22 AMI ExtensionState action ↗
- Asterisk 23 AMI ExtensionStateList action ↗
- Asterisk 22 AMI ExtensionStateList action ↗
- Asterisk 23 AMI ExtensionStatus event ↗
- Asterisk 22 AMI ExtensionStatus event ↗
- Asterisk 23 AMI ExtensionStateListComplete event ↗
- Asterisk 22 AMI ExtensionStateListComplete event ↗
- Asterisk 23 EXTENSION_STATE function ↗
- Asterisk 22 EXTENSION_STATE function ↗
- Asterisk 23 HINT function ↗
- Asterisk 22 HINT function ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- ↗
- Asterisk HASH dialplan function ↗
- Asterisk HASHKEYS dialplan function ↗
- Asterisk ARRAY dialplan function ↗
- Asterisk ClearHash dialplan application ↗
- Asterisk SHIFT dialplan function ↗
- Asterisk channel-variable setting and substitution ↗
- Asterisk func_strings implementation ↗
- Asterisk DIALGROUP dialplan function ↗
- Asterisk HANGUPCAUSE dialplan function ↗
- Asterisk HangupCauseClear application ↗
- Asterisk command-line interface ↗
- Asterisk func_dialgroup implementation ↗
- Asterisk CURL dialplan function ↗
- Asterisk CURLOPT dialplan function ↗
- Asterisk JSON_DECODE dialplan function ↗
- Asterisk URIENCODE dialplan function ↗
- Asterisk func_curl implementation ↗
- libcurl CURLOPT_TIMEOUT reference ↗
- libcurl CURLOPT_CONNECTTIMEOUT reference ↗
- Asterisk REGEX dialplan function ↗
- Asterisk ISNULL dialplan function ↗
- Asterisk LEN dialplan function ↗
- Asterisk FIELDQTY dialplan function ↗
- Asterisk CUT dialplan function ↗
- Asterisk dialplan-functions overview ↗
- Asterisk 22 VALID_EXTEN function and deprecation notice ↗
- Asterisk 23 dialplan-function index ↗
- Asterisk func_dialplan implementation ↗
- Asterisk CLI syntax and function-help commands ↗
- Asterisk dialplan reload and show workflow ↗
- Asterisk custom dynamic features ↗
- Asterisk built-in dynamic features ↗
- Asterisk features overview ↗
- Asterisk upstream features.conf sample ↗
- Asterisk upstream features configuration implementation ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.
