Troubleshooting Guide
From AstriPedia
- Asterisk Troubleshooting Guide
[edit]
Asterisk dialplan rule order
Important to Know! Working with dialplan it may be useful to know the order of the commands, here a small example.
[My-Context] 1. include => context1 2. include => context2 3. exten => 100,1,... 4. exten => _1XX,1,... 5. exten => _XXX,1,... 6. exten => _X.,1,...
The number in the first column shows the rule order. The following CLI command check how the order for the exten 100 are work
asterisk -rx "show dialplan 100@My-Context"
[edit]
Read all Asterisk variables
Here is an example to read all variables used by macro-callforwarding
[macro-callforwarding]
exten => s,1,Set(temp=${DB(CFI/${ARG1})})
exten => s,n,GotoIf(${temp}?cf:cf_busy)
exten => s,n(cf),NoOp(CFI CALLFORWARDING CFI/${ARG1} -> ${temp} )
#include extensions_var.conf
exten => s,n,SetCallerID(62915${ARG1})
exten => s,n,Dial(mISDN/g:pstn/${temp})
The file called extensions_var.conf read all used variables
;; list all asterisk variables
;; file = extensions_var.conf
;; include file = extensions_var.conf
;;
;; user to print out: grep V-V full | awk -F"R=" '{print $2}'
;;
exten => s,n,NoOp(V= [${ACCOUNTCODE}] - ACCOUNTCODE )
exten => s,n,NoOp(V-VAR= [${BLINDTRANSFER}] - BLINDTRANSFER )
exten => s,n,NoOp(V-VAR= [${BRIDGEPEER}] - BRIDGEPEER )
exten => s,n,NoOp(V-VAR= [${CALLERANI}] - CALLERANI )
exten => s,n,NoOp(V-VAR= [${CALLERID}] - CALLERID)
exten => s,n,NoOp(V-VAR= [${CALLERIDNAME}] - CALLERIDNAME )
exten => s,n,NoOp(V-VAR= [${CALLERIDNUM}] - CALLERIDNUM )
exten => s,n,NoOp(V-VAR= [${CALLINGANI2}] - CALLINGANI2 )
exten => s,n,NoOp(V-VAR= [${CALLINGPRES}] - CALLINGPRES )
exten => s,n,NoOp(V-VAR= [${CALLINGTNS}] - CALLINGTNS )
exten => s,n,NoOp(V-VAR= [${CALLINGTON}] - CALLINGTON )
exten => s,n,NoOp(V-VAR= [${CHANNEL}] - CHANNEL )
exten => s,n,NoOp(V-VAR= [${CONTEXT}] - CONTEXT )
exten => s,n,NoOp(V-VAR= [${DATETIME}] - DATETIME)
exten => s,n,NoOp(V-VAR= [${DNID}] - DNID )
exten => s,n,NoOp(V-VAR= [${EPOCH}] - EPOCH )
exten => s,n,NoOp(V-VAR= [${EXTEN}] - EXTEN )
exten => s,n,NoOp(V-VAR= [${ENV(VAR)}] - ENV VAR )
exten => s,n,NoOp(V-VAR= [${GOTO_ON_BLINDXFR}] - GOTO_ON_BLINDXFR)
exten => s,n,NoOp(V-VAR= [${HANGUPCAUSE}] - HANGUPCAUSE )
exten => s,n,NoOp(V-VAR= [${HINT}] - HINT )
exten => s,n,NoOp(V-VAR= [${HINTNAME}] - HINTNAME)
exten => s,n,NoOp(V-VAR= [${INVALID_EXTEN}] - INVALID_EXTEN )
exten => s,n,NoOp(V-VAR= [${LANGUAGE}] - LANGUAGE)
exten => s,n,NoOp(V-VAR= [${LEN(VAR)}] - LEN VAR
exten => s,n,NoOp(V-VAR= [${PRIORITY}] - PRIORITY)
exten => s,n,NoOp(V-VAR= [${PRIREDIRECTREASON}] - PRIREDIRECTREASON )
exten => s,n,NoOp(V-VAR= [${RDNIS}] - RDNIS )
exten => s,n,NoOp(V-VAR= [${TIMESTAMP}] - TIMESTAMP )
exten => s,n,NoOp(V-VAR= [${TRANSFER_CONTEXT}] - TRANSFER_CONTEXT )
exten => s,n,NoOp(V-VAR= [${UNIQUEID}] - UNIQUEID)
exten => s,n,NoOp(V-VAR= [${AQMSTATUS}] - AQMSTATUS )
exten => s,n,NoOp(V-VAR= [${AVAILSTATUS}] - AVAILSTATUS )
exten => s,n,NoOp(V-VAR= [${CHECKGROUPSTATUS}] - CHECKGROUPSTATUS )
exten => s,n,NoOp(V-VAR= [${CHECKMD5STATUS}] - CHECKMD5STATUS )
exten => s,n,NoOp(V-VAR= [${CPLAYBACKSTATUS}] - CPLAYBACKSTATUS )
exten => s,n,NoOp(V-VAR= [${DIALSTATUS}] - DIALSTATUS )
exten => s,n,NoOp(V-VAR= [${DBGETSTATUS}] - DBGETSTATUS )
exten => s,n,NoOp(V-VAR= [${ENUMSTATUS}] - ENUMSTATUS )
exten => s,n,NoOp(V-VAR= [${HASVMSTATUS}] - HASVMSTATUS )
exten => s,n,NoOp(V-VAR= [${LOOKUPBLSTATUS}] - LOOKUPBLSTATUS )
exten => s,n,NoOp(V-VAR= [${OSPLOOKUPSTATUS}] - OSPLOOKUPSTATUS )
exten => s,n,NoOp(V-VAR= [${OSPNEXTSTATUS}] - OSPNEXTSTATUS )
exten => s,n,NoOp(V-VAR= [${OSPFINISHSTATUS}] - OSPFINISHSTATUS )
exten => s,n,NoOp(V-VAR= [${PLAYBACKSTATUS}] - PLAYBACKSTATUS )
exten => s,n,NoOp(V-VAR= [${PQMSTATUS}] - PQMSTATUS )
exten => s,n,NoOp(V-VAR= [${PRIVACYMGRSTATUS}] - PRIVACYMGRSTATUS )
exten => s,n,NoOp(V-VAR= [${QUEUESTATUS}] - QUEUESTATUS )
exten => s,n,NoOp(V-VAR= [${RQMSTATUS}] - RQMSTATUS )
exten => s,n,NoOp(V-VAR= [${SENDIMAGESTATUS}] - SENDIMAGESTATUS )
exten => s,n,NoOp(V-VAR= [${SENDTEXTSTATUS}] - SENDTEXTSTATUS )
exten => s,n,NoOp(V-VAR= [${SENDURLSTATUS}] - SENDURLSTATUS )
exten => s,n,NoOp(V-VAR= [${SIPGETSTATUS}] - SIPGETSTATUS )
exten => s,n,NoOp(V-VAR= [${SYSTEMSTATUS}] - SYSTEMSTATUS )
exten => s,n,NoOp(V-VAR= [${TRANSFERSTATUS}] - TRANSFERSTATUS )
exten => s,n,NoOp(V-VAR= [${TXTCIDNAMESTATUS}] - TXTCIDNAMESTATUS )
exten => s,n,NoOp(V-VAR= [${UPQMSTATUS}] - UPQMSTATUS )
exten => s,n,NoOp(V-VAR= [${VMSTATUS}] - VMSTATUS)
exten => s,n,NoOp(V-VAR= [${VMBOXEXISTSSTATUS}] - VMBOXEXISTSSTATUS )
exten => s,n,NoOp(V-VAR= [${WAITSTATUS}] - WAITSTATUS )
exten => s,n,NoOp(V-VAR= [${CURL}] - CURL )
exten => s,n,NoOp(V-VAR= [${ENUM}] - ENUM )
exten => s,n,NoOp(V-VAR= [${EXITCONTEXT}] - EXITCONTEXT )
exten => s,n,NoOp(V-VAR= [${MONITOR}] - MONITOR )
exten => s,n,NoOp(V-VAR= [${MONITOR_EXEC}] - MONITOR_EXEC )
exten => s,n,NoOp(V-VAR= [${MONITOR_EXEC_ARGS}] - MONITOR_EXEC_ARGS )
exten => s,n,NoOp(V-VAR= [${MONITOR_FILENAME}] - MONITOR_FILENAME )
exten => s,n,NoOp(V-VAR= [${QUEUE_PRIO}] - QUEUE_PRIO )
exten => s,n,NoOp(V-VAR= [${QUEUESTATUS}] - QUEUESTATUS )
exten => s,n,NoOp(V-VAR= [${RECORDED_FILE}] - RECORDED_FILE )
exten => s,n,NoOp(V-VAR= [${TALK_DETECTED}] - TALK_DETECTED )
exten => s,n,NoOp(V-VAR= [${TOUCH_MONITOR}] - TOUCH_MONITOR )
exten => s,n,NoOp(V-VAR= [${TOUCH_MONITOR_FORMAT}] - )
exten => s,n,NoOp(V-VAR= [${TXTCIDNAME}] - TXTCIDNAME )
exten => s,n,NoOp(V-VAR= [${VPB_GETDTMF}] - VPB_GETDTMF )
exten => s,n,NoOp(V-VAR= [${MEETME_RECORDINGFILE}] - MEETME_RECORDINGFILE )
exten => s,n,NoOp(V-VAR= [${MEETME_RECORDINGFORMAT}] - MEETME_RECORDINGFORMAT )
exten => s,n,NoOp(V-VAR= [${MEETME_EXIT_CONTEXT}] - MEETME_EXIT_CONTEXT )
exten => s,n,NoOp(V-VAR= [${MEETME_AGI_BACKGROUND}] - MEETME_AGI_BACKGROUND )
exten => s,n,NoOp(V-VAR= [${MEETMESECS}] - MEETMESECS )
exten => s,n,NoOp(V-VAR= [${VM_CATEGORY}] - VM_CATEGORY )
exten => s,n,NoOp(V-VAR= [${VM_NAME}] - VM_NAME )
exten => s,n,NoOp(V-VAR= [${VM_DUR}] - VM_DUR )
exten => s,n,NoOp(V-VAR= [${VM_MSGNUM}] - VM_MSGNUM )
exten => s,n,NoOp(V-VAR= [${VM_CALLERID}] - VM_CALLERID )
exten => s,n,NoOp(V-VAR= [${VM_CIDNAME}] - VM_CIDNAME )
exten => s,n,NoOp(V-VAR= [${VM_CIDNUM}] - VM_CIDNUM )
exten => s,n,NoOp(V-VAR= [${VM_DATE}] - VM_DATE )
exten => s,n,NoOp(V-VAR= [${VM_MESSAGEFILE}] - VM_MESSAGEFILE )
exten => s,n,NoOp(V-VAR= [${AUTH_MAILBOX}] - AUTH_MAILBOX )
exten => s,n,NoOp(V-VAR= [${AUTH_CONTEXT}] - AUTH_CONTEXT )
exten => s,n,NoOp(V-VAR= [${DUNDTECH}] - DUNDTECH)
exten => s,n,NoOp(V-VAR= [${DUNDDEST}] - DUNDDEST)
exten => s,n,NoOp(V-VAR= [${ANI2}] - ANI2 )
exten => s,n,NoOp(V-VAR= [${CALLTYPE}] - CALLTYPE)
exten => s,n,NoOp(V-VAR= [${CALLEDTON}] - CALLEDTON )
exten => s,n,NoOp(V-VAR= [${CALLINGSUBADDR}] - CALLINGSUBADDR )
exten => s,n,NoOp(V-VAR= [${FAXEXTEN}] - FAXEXTEN)
exten => s,n,NoOp(V-VAR= [${PRIREDIRECTREASON}] - PRIREDIRECTREASON )
exten => s,n,NoOp(V-VAR= [${SIPCALLID}] - SIPCALLID )
exten => s,n,NoOp(V-VAR= [${SIPDOMAIN}] - SIPDOMAIN )
exten => s,n,NoOp(V-VAR= [${SIPUSERAGENT}] - SIPUSERAGENT )
exten => s,n,NoOp(V-VAR= [${SIPURI}] - SIPURI )
exten => s,n,NoOp(V-VAR= [${SIP_CODEC}] - SIP_CODEC )
exten => s,n,NoOp(V-VAR= [${SIP_URI_OPTIONS}] - SIP_URI_OPTIONS )
exten => s,n,NoOp(V-VAR= [${AGENTMAXLOGINTRIES}] - AGENTMAXLOGINTRIES )
exten => s,n,NoOp(V-VAR= [${AGENTUPDATECDR}] - AGENTUPDATECDR )
exten => s,n,NoOp(V-VAR= [${AGENTGOODBYE}] - AGENTGOODBYE )
exten => s,n,NoOp(V-VAR= [${AGENTACKCALL}] - AGENTACKCALL )
exten => s,n,NoOp(V-VAR= [${AGENTAUTOLOGOFF}] - AGENTAUTOLOGOFF )
exten => s,n,NoOp(V-VAR= [${AGENTWRAPUPTIME}] - AGENTWRAPUPTIME )
exten => s,n,NoOp(V-VAR= [${AGENTNUMBER}] - AGENTNUMBER )
exten => s,n,NoOp(V-VAR= [${AGENTSTATUS}] - AGENTSTATUS )
exten => s,n,NoOp(V-VAR= [${AGENTEXTEN}] - AGENTEXTEN )
exten => s,n,NoOp(V-VAR= [${DIALEDPEERNAME}] - DIALEDPEERNAME )
exten => s,n,NoOp(V-VAR= [${DIALEDPEERNUMBER}] - DIALEDPEERNUMBER )
exten => s,n,NoOp(V-VAR= [${DIALEDTIME}] - DIALEDTIME )
exten => s,n,NoOp(V-VAR= [${ANSWEREDTIME}] - ANSWEREDTIME )
exten => s,n,NoOp(V-VAR= [${DIALSTATUS}] - DIALSTATUS )
exten => s,n,NoOp(V-VAR= [${DYNAMIC_FEATURES}] - DYNAMIC_FEATURES )
exten => s,n,NoOp(V-VAR= [${LIMIT_PLAYAUDIO_CALLER}] - LIMIT_PLAYAUDIO_CALLER )
exten => s,n,NoOp(V-VAR= [${LIMIT_PLAYAUDIO_CALLEE}] - LIMIT_PLAYAUDIO_CALLEE )
exten => s,n,NoOp(V-VAR= [${LIMIT_WARNING_FILE}] - LIMIT_WARNING_FILE )
exten => s,n,NoOp(V-VAR= [${LIMIT_TIMEOUT_FILE}] - LIMIT_TIMEOUT_FILE )
exten => s,n,NoOp(V-VAR= [${LIMIT_CONNECT_FILE}] - LIMIT_CONNECT_FILE )
exten => s,n,NoOp(V-VAR= [${OUTBOUND_GROUP}] - OUTBOUND_GROUP )
exten => s,n,NoOp(V-VAR= [${AVAILCHAN}] - AVAILCHAN )
exten => s,n,NoOp(V-VAR= [${AVAILORIGCHAN}] - AVAILORIGCHAN )
exten => s,n,NoOp(V-VAR= [${AVAILSTATUS}] - AVAILSTATUS )
exten => s,n,NoOp(V-VAR= [${MACRO_EXTEN}] - MACRO_EXTEN )
exten => s,n,NoOp(V-VAR= [${MACRO_CONTEXT}] - MACRO_CONTEXT )
exten => s,n,NoOp(V-VAR= [${MACRO_PRIORITY}] - MACRO_PRIORITY )
exten => s,n,NoOp(V-VAR= [${MACRO_OFFSET}] - MACRO_OFFSET )
exten => s,n,NoOp(V-VAR= [${OSPHANDLE}] - OSPHANDLE )
exten => s,n,NoOp(V-VAR= [${OSPTECH}] - OSPTECH )
exten => s,n,NoOp(V-VAR= [${OSPDEST}] - OSPDEST )
exten => s,n,NoOp(V-VAR= [${OSPTOKEN}] - OSPTOKEN)
exten => s,n,NoOp(V-VAR= [${OSPRESULTS}] - OSPRESULTS )
[edit]
feature digit timeout
This feature can solve troubles with phone devices by call transfer, using featuredigittimeout insert into features.conf
[general] featuredigittimeout => 1000 ; Max time (ms) between digits for
