Troubleshooting Guide

From AstriPedia

Jump to: navigation, search
Asterisk Troubleshooting Guide

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"

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      )

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