Difference between revisions of "Proposed Asterisk Dialplan"
From LinuxMCE
(→Ring specific user (3xx)) |
m |
||
(12 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
We desperately need to write a new Asterisk dial plan to replace the AMP generated one that has become far too bit-rotten to be of any substantial use. This page will track the conceptual flow of what will be needed for the new post Asterisk 1.8+ dialplan. | We desperately need to write a new Asterisk dial plan to replace the AMP generated one that has become far too bit-rotten to be of any substantial use. This page will track the conceptual flow of what will be needed for the new post Asterisk 1.8+ dialplan. | ||
+ | |||
+ | *This is being added to, as I write more and more of the schema, and will get much...much bigger. --[[User:Tschak909|Tschak909]] 07:30, 18 July 2013 (CEST) | ||
+ | *I added the actual existing dialplan in lmce 1204. Let's mangle it here in the wiki and put the result back into bash and sql scripts --[[User:Foxi352|Foxi352]] 22 July 2013 | ||
==Dial Plan Flow== | ==Dial Plan Flow== | ||
Line 5: | Line 8: | ||
===Call from outside line (1xx)=== | ===Call from outside line (1xx)=== | ||
*Call comes in from outside line | *Call comes in from outside line | ||
− | **Get house mode and branch between | + | **Get house mode and branch between five possible states: |
***Ring extensions | ***Ring extensions | ||
− | ****All checked extensions (2xx) are rung. | + | ****All checked extensions (2xx) are rung in parallel. |
***Transfer to a specific user | ***Transfer to a specific user | ||
****Transfer to specified (3xx) extension | ****Transfer to specified (3xx) extension | ||
Line 27: | Line 30: | ||
**Yes? ...then | **Yes? ...then | ||
***Ring specified extension | ***Ring specified extension | ||
+ | ****While ringing, user has the opportunity to: | ||
+ | *****Transfer to a specific phone (2xx) | ||
+ | *****Transfer to a specific user (3xx) | ||
+ | *****Transfer to an outside number (dial specified number given to dial pad) | ||
+ | *****dial someone else in to conference before we all pick up (this is strange, but the button is there!) | ||
+ | *****Send to General voicemail (100) | ||
+ | *****Drop the call | ||
****If extension does not pick up within specified IVR delay time, Transfer to (101) for IVR menu | ****If extension does not pick up within specified IVR delay time, Transfer to (101) for IVR menu | ||
Line 34: | Line 44: | ||
**No, it is a normal caller, Process normal caller routing (see normal/priority user routing below) | **No, it is a normal caller, Process normal caller routing (see normal/priority user routing below) | ||
**Yes, it is a priority caller, Process priority caller routing (see normal/priority user routing below) | **Yes, it is a priority caller, Process priority caller routing (see normal/priority user routing below) | ||
+ | |||
+ | ====Normal/Priority User Routing==== | ||
+ | |||
+ | For each user, there is a set of routing steps to be executed serially, depending on if the user is a normal or priority caller, and then based on the current USER mode. A user is a priority caller if they are listed in the priority callers list. Any number of steps can be created, and a dial plan segment should be created for each one. | ||
+ | |||
+ | * Get house mode | ||
+ | **If Normal caller, select normal caller steps given house mode | ||
+ | **If Priority caller, select priority caller steps given house mode | ||
+ | **If checkbox is selected for give option for voicemail, play message, listen for "#" | ||
+ | *** If checkbox selected, and If # pressed, go to user voicemail | ||
+ | *** Execute next step which is one of four possible states: (TOP) | ||
+ | **** Ring Extensions | ||
+ | ***** Parallel ring selected extensions (2xx) | ||
+ | **** Transfer to another user | ||
+ | ***** Transfer call to specified (3xx) extension | ||
+ | **** Go to user's voicemail | ||
+ | ***** Transfer call to specified user voicemail | ||
+ | **** Transfer to an outside number | ||
+ | *** Loop back around to (TOP) | ||
+ | ** If all instructions are carried out and still unresolved, drop back to menu (101) | ||
+ | |||
+ | === Security Plugin Phone Extensions === | ||
+ | |||
+ | ==== Security Notfiications (999) ==== | ||
+ | |||
+ | * run AGI to determine which rooms have been affected, generate audio message | ||
+ | * Determine priority in the following order | ||
+ | ** Orbiters then Other numbers (uses one outgoing channel) | ||
+ | *** Ring each orbiter for 15 seconds, if no answer, then ring the next orbiter | ||
+ | **** If answer, Play Security IVR | ||
+ | *** If no more orbiters, ring each "other number" for 15 seconds, if no answer, then ring next other number. | ||
+ | **** If answer, Play security IVR | ||
+ | *** (what to do here if everybody has been rung, and no answer?) | ||
+ | ** Other numbers then Orbiters (uses one outgoing channel) | ||
+ | *** Ring each "other number" for 15 seconds, if no answer, then ring the next number. | ||
+ | **** If answer, Play security IVR | ||
+ | *** If no more "other numbers", ring each Orbiter for 15 seconds, if no answer, then ring the next orbiter. | ||
+ | ** Both orbiters and other numbers at the same time. (uses two outgoing channels) | ||
+ | *** spawn two threads, one for "Orbiters" one for "Other numbers", for each thread | ||
+ | **** Ring each number for 15 seconds, if no answer, then ring the next number. | ||
+ | ***** If answer, Play security IVR | ||
+ | **** (What to do when all numbers have been rung?) | ||
+ | |||
+ | ===== Security IVR ===== | ||
+ | |||
+ | * 1 to Reset the Alarm | ||
+ | ** Play "Alarm has been reset." | ||
+ | * 2 to Ignore the alarm | ||
+ | * 3 to call emergency contacts | ||
+ | * 4 to Notify neighbors | ||
+ | * 5 to speak to the person in the house | ||
+ | |||
+ | |||
+ | ==Lists for...== | ||
+ | |||
+ | === House Modes === | ||
+ | * Armed - At Home | ||
+ | * Armed - Away | ||
+ | * Armed - Extended Away | ||
+ | * Entertaining | ||
+ | * Sleeping | ||
+ | * Unarmed - At Home | ||
+ | |||
+ | === User Modes === | ||
+ | * At Home | ||
+ | * Away | ||
+ | * Do Not Disturb | ||
+ | * Sleeping | ||
+ | |||
+ | === Incoming Call extensions === | ||
+ | * 100 - General Voicemail box | ||
+ | * 101 - IVR menu | ||
+ | |||
+ | === Example Phone extensions === | ||
+ | * 201 - Living Room | ||
+ | * 202 - Bedroom Master | ||
+ | * 203 - Den | ||
+ | * ... | ||
+ | |||
+ | === Example User extensions === | ||
+ | * 301 - Thom | ||
+ | * 302 - Lana | ||
+ | * 303 - Nina | ||
+ | * ... | ||
+ | |||
+ | === Example User voicemail extensions === | ||
+ | * 401 - Thom | ||
+ | * 402 - Lana | ||
+ | * 403 - Nina | ||
+ | |||
+ | === Security Extensions === | ||
+ | * 999 - Security | ||
+ | * 998 - Fire | ||
+ | * 997 - Air Quality | ||
+ | * 996 - Movement | ||
+ | * 995 - Information | ||
+ | * 994 - Doorbell | ||
+ | * 993 - Monitor Mode | ||
+ | * 992 - Babysitter Mode | ||
+ | * 991 - Speak to person inside house (this needs to be changed in all the code, this was 998) | ||
+ | |||
+ | === Contexts === | ||
+ | * from-trunk - Calls from outside lines | ||
+ | * from-internal - Calls originating from inside the system | ||
+ | == Actual dialplan == | ||
+ | === Call to extension - Context: ext-local === | ||
+ | * This is an example of a standard SIP phone extension 204 | ||
+ | +-------+----------+--------+-------------------+ | ||
+ | | exten | priority | app | appdata | | ||
+ | +-------+----------+--------+-------------------+ | ||
+ | | 204 | 1 | Macro | exten-vm,novm,204 | | ||
+ | | 204 | 2 | Hangup | | | ||
+ | +-------+----------+--------+-------------------+ | ||
+ | * The macro itself is still in the extensions.conf file (flatfile) | ||
+ | [macro-exten-vm] | ||
+ | exten => s,1,Macro(user-callerid) | ||
+ | exten => s,n,Set(FROMCONTEXT=exten-vm) | ||
+ | exten => s,n,Set(VMBOX=${ARG1}) | ||
+ | exten => s,n,Set(EXTTOCALL=${ARG2}) | ||
+ | exten => s,n,Set(CFUEXT=${DB(CFU/${EXTTOCALL})}) | ||
+ | exten => s,n,Set(CFBEXT=${DB(CFB/${EXTTOCALL})}) | ||
+ | exten => s,n,Set(RT=${IF($[$["${VMBOX}"!="novm"] | $["foo${CFUEXT}"!="foo"]]?${RINGTIMER}:"")}) | ||
+ | exten => s,n,Macro(record-enable,${EXTTOCALL},IN) | ||
+ | exten => s,n,Macro(dial,${RT},${DIAL_OPTIONS},${EXTTOCALL}) | ||
+ | exten => s,n,Set(SV_DIALSTATUS=${DIALSTATUS}) | ||
+ | exten => s,n,GosubIf($[$["${SV_DIALSTATUS}"="NOANSWER"] & $["foo${CFUEXT}"!="foo"]]?docfu,1) ; check for CFU in use on no answer | ||
+ | exten => s,n,GosubIf($[$["${SV_DIALSTATUS}"="BUSY"] & $["foo${CFBEXT}"!="foo"]]?docfb,1) ; check for CFB in use on busy | ||
+ | exten => s,n,Set(DIALSTATUS=${SV_DIALSTATUS}) | ||
+ | exten => s,n,NoOp(Voicemail is '${VMBOX}') | ||
+ | exten => s,n,GotoIf($["${VMBOX}" = "novm"]?s-${DIALSTATUS},1) ; no voicemail in use for this extension | ||
+ | exten => s,n,NoOp(Sending to Voicemail box ${EXTTOCALL}) | ||
+ | exten => s,n,Macro(vm,${VMBOX},${DIALSTATUS}) | ||
+ | exten => docfu,1,Set(RTCFU=${IF($["${VMBOX}"!="novm"]?${RINGTIMER}:"")}) | ||
+ | exten => docfu,n,Dial(Local/${CFUEXT}@from-internal/n,${RTCFU},${DIAL_OPTIONS}) | ||
+ | exten => docfu,n,Return | ||
+ | exten => docfb,1,Set(RTCFB=${IF($["${VMBOX}"!="novm"]?${RINGTIMER}:"")}) | ||
+ | exten => docfb,n,Dial(Local/${CFBEXT}@from-internal/n,${RTCFB},${DIAL_OPTIONS}) | ||
+ | exten => docfb,n,Return | ||
+ | exten => s-BUSY,1,NoOp(Extension is reporting BUSY and not passing to Voicemail) | ||
+ | exten => s-BUSY,n,Playtones(busy) | ||
+ | exten => s-BUSY,n,Busy(20) | ||
+ | exten => _s-.,1,Playtones(congestion) | ||
+ | exten => _s-.,n,Congestion(10) | ||
+ | |||
+ | === Call to user - Context: from-lmce-custom === | ||
+ | * This context handles the call to a user, means 3xx number | ||
+ | * This is only an example. Actual dialplan depends on routing choosen in "Webadmin -> Telecom -> Call Routing" | ||
+ | |||
+ | +-------------------------------+----------+--------+----------------------------------------------------------------------------+ | ||
+ | | exten | priority | app | appdata | | ||
+ | +-------------------------------+----------+--------+----------------------------------------------------------------------------+ | ||
+ | | 301 | 1 | AGI | lmce-getusermode.agi | | ||
+ | | 301 | 2 | Goto | from-lmce-custom,301-um${USERMODE}-pri${PRIORITYCALLER},1 | | ||
+ | | 301 | 3 | Hangup | | | ||
+ | | 301-um1-pri0 | 1 | Goto | from-lmce-custom,301-um1-pri0-try1,1 | | ||
+ | | 301-um1-pri0-try1 | 1 | Macro | vm,301,DIRECTDIAL | | ||
+ | | 301-um1-pri0-try1 | 2 | Goto | from-lmce-custom,301-um1-pri0-try1-${DIALSTATUS},1 | | ||
+ | | 301-um1-pri0-try1 | 3 | Hangup | | | ||
+ | | 301-um1-pri0-try1-BUSY | 1 | Goto | from-lmce-custom,301-um1-pri0-try2,1 | | ||
+ | | 301-um1-pri0-try1-CHANUNAVAIL | 1 | Goto | from-lmce-custom,301-um1-pri0-try2,1 | | ||
+ | | 301-um1-pri0-try1-CONGESTION | 1 | Goto | from-lmce-custom,301-um1-pri0-try2,1 | | ||
+ | | 301-um1-pri0-try1-NOANSWER | 1 | Goto | from-lmce-custom,301-um1-pri0-try2,1 | | ||
+ | | 301-um1-pri0-try2 | 1 | Macro | vm,301,DIRECTDIAL | | ||
+ | | 301-um1-pri0-try2 | 2 | Hangup | | | ||
+ | | 301-um2-pri0 | 1 | Goto | from-lmce-custom,301-um2-pri0-try1,1 | | ||
+ | | 301-um2-pri0-try1 | 1 | Macro | vm,301,DIRECTDIAL | | ||
+ | | 301-um2-pri0-try1 | 2 | Goto | from-lmce-custom,301-um2-pri0-try1-${DIALSTATUS},1 | | ||
+ | | 301-um2-pri0-try1 | 3 | Hangup | | | ||
+ | | 301-um2-pri0-try1-BUSY | 1 | Goto | from-lmce-custom,301-um2-pri0-try2,1 | | ||
+ | | 301-um2-pri0-try1-CHANUNAVAIL | 1 | Goto | from-lmce-custom,301-um2-pri0-try2,1 | | ||
+ | | 301-um2-pri0-try1-CONGESTION | 1 | Goto | from-lmce-custom,301-um2-pri0-try2,1 | | ||
+ | | 301-um2-pri0-try1-NOANSWER | 1 | Goto | from-lmce-custom,301-um2-pri0-try2,1 | | ||
+ | | 301-um2-pri0-try2 | 1 | Macro | vm,301,DIRECTDIAL | | ||
+ | | 301-um2-pri0-try2 | 2 | Hangup | | | ||
+ | | 301-um3-pri0 | 1 | Goto | from-lmce-custom,301-um3-pri0-try1,1 | | ||
+ | | 301-um3-pri0-try1 | 1 | Macro | vm,301,DIRECTDIAL | | ||
+ | | 301-um3-pri0-try1 | 2 | Goto | from-lmce-custom,301-um3-pri0-try1-${DIALSTATUS},1 | | ||
+ | | 301-um3-pri0-try1 | 3 | Hangup | | | ||
+ | | 301-um3-pri0-try1-BUSY | 1 | Goto | from-lmce-custom,301-um3-pri0-try2,1 | | ||
+ | | 301-um3-pri0-try1-CHANUNAVAIL | 1 | Goto | from-lmce-custom,301-um3-pri0-try2,1 | | ||
+ | | 301-um3-pri0-try1-CONGESTION | 1 | Goto | from-lmce-custom,301-um3-pri0-try2,1 | | ||
+ | | 301-um3-pri0-try1-NOANSWER | 1 | Goto | from-lmce-custom,301-um3-pri0-try2,1 | | ||
+ | | 301-um3-pri0-try2 | 1 | Macro | vm,301,DIRECTDIAL | | ||
+ | | 301-um3-pri0-try2 | 2 | Hangup | | | ||
+ | | 301-um3-pri1-try1 | 1 | Dial | Local/200@trusted&Local/202@trusted&Local/203@trusted&Local/204@trusted,15 | | ||
+ | | 301-um3-pri1-try1 | 2 | Goto | from-lmce-custom,301-um3-pri1-try1-${DIALSTATUS},1 | | ||
+ | | 301-um3-pri1-try1 | 3 | Hangup | | | ||
+ | | 301-um3-pri1-try1-BUSY | 1 | Goto | from-lmce-custom,301-um3-pri1-try2,1 | | ||
+ | | 301-um3-pri1-try1-CHANUNAVAIL | 1 | Goto | from-lmce-custom,301-um3-pri1-try2,1 | | ||
+ | | 301-um3-pri1-try1-CONGESTION | 1 | Goto | from-lmce-custom,301-um3-pri1-try2,1 | | ||
+ | | 301-um3-pri1-try1-NOANSWER | 1 | Goto | from-lmce-custom,301-um3-pri1-try2,1 | | ||
+ | | 301-um3-pri1-try2 | 1 | Macro | vm,301,DIRECTDIAL | | ||
+ | | 301-um3-pri1-try2 | 2 | Hangup | | | ||
+ | | 301-um4-pri0 | 1 | Goto | from-lmce-custom,301-um4-pri0-try1,1 | | ||
+ | | 301-um4-pri0-try1 | 1 | Macro | vm,301,DIRECTDIAL | | ||
+ | | 301-um4-pri0-try1 | 2 | Goto | from-lmce-custom,301-um4-pri0-try1-${DIALSTATUS},1 | | ||
+ | | 301-um4-pri0-try1 | 3 | Hangup | | | ||
+ | | 301-um4-pri0-try1-BUSY | 1 | Goto | from-lmce-custom,301-um4-pri0-try2,1 | | ||
+ | | 301-um4-pri0-try1-CHANUNAVAIL | 1 | Goto | from-lmce-custom,301-um4-pri0-try2,1 | | ||
+ | | 301-um4-pri0-try1-CONGESTION | 1 | Goto | from-lmce-custom,301-um4-pri0-try2,1 | | ||
+ | | 301-um4-pri0-try1-NOANSWER | 1 | Goto | from-lmce-custom,301-um4-pri0-try2,1 | | ||
+ | | 301-um4-pri0-try2 | 1 | Macro | vm,301,DIRECTDIAL | | ||
+ | | 301-um4-pri0-try2 | 2 | Hangup | | | ||
+ | | 301-um4-pri1 | 1 | Goto | from-lmce-custom,301-um4-pri1-try1,1 | | ||
+ | | 301-um4-pri1-try1 | 1 | Dial | Local/200@trusted&Local/202@trusted&Local/203@trusted&Local/204@trusted,15 | | ||
+ | | 301-um4-pri1-try1 | 2 | Goto | from-lmce-custom,301-um4-pri1-try1-${DIALSTATUS},1 | | ||
+ | | 301-um4-pri1-try1 | 3 | Hangup | | | ||
+ | | 301-um4-pri1-try1-BUSY | 1 | Goto | from-lmce-custom,301-um4-pri1-try2,1 | | ||
+ | | 301-um4-pri1-try1-CHANUNAVAIL | 1 | Goto | from-lmce-custom,301-um4-pri1-try2,1 | | ||
+ | | 301-um4-pri1-try1-CONGESTION | 1 | Goto | from-lmce-custom,301-um4-pri1-try2,1 | | ||
+ | | 301-um4-pri1-try1-NOANSWER | 1 | Goto | from-lmce-custom,301-um4-pri1-try2,1 | | ||
+ | | 301-um4-pri1-try2 | 1 | Macro | vm,301,DIRECTDIAL | | ||
+ | | 301-um4-pri1-try2 | 2 | Hangup | | | ||
+ | +-------------------------------+----------+--------+----------------------------------------------------------------------------+ | ||
+ | |||
+ | === Context: applications === | ||
+ | ==== Extension: *43 - echotest ==== | ||
+ | +----------+----------+---------------+ | ||
+ | | priority | app | appdata | | ||
+ | +----------+----------+---------------+ | ||
+ | | 1 | Answer | | | ||
+ | | 2 | Wait | 1 | | ||
+ | | 3 | Playback | demo-echotest | | ||
+ | | 4 | Playback | beep | | ||
+ | | 5 | Echo | | | ||
+ | | 6 | Playback | demo-echodone | | ||
+ | | 7 | Hangup | | | ||
+ | +----------+----------+---------------+ | ||
+ | |||
+ | ==== Extension: *60 - speaking clock ==== | ||
+ | +----------+-------------+---------------------------------------+ | ||
+ | | priority | app | appdata | | ||
+ | +----------+-------------+---------------------------------------+ | ||
+ | | 1 | Answer | | | ||
+ | | 2 | Wait | 1 | | ||
+ | | 3 | Set | NumLoops=0 | | ||
+ | | 4 | Set | FutureTime=$[${EPOCH} + 11] | | ||
+ | | 5 | Playback | at-tone-time-exactly | | ||
+ | | 6 | GotoIf | $["${TIMEFORMAT}" = "kM"]?9 | | ||
+ | | 7 | SayUnixTime | ${FutureTime},,IM 'and' S 'seconds' p | | ||
+ | | 8 | Goto | 10 | | ||
+ | | 9 | SayUnixTime | ${FutureTime},,kM 'and' S 'seconds' | | ||
+ | | 10 | Set | TimeLeft=$[${FutureTime} - ${EPOCH}] | | ||
+ | | 11 | GotoIf | $[${TimeLeft} < 1]?14 | | ||
+ | | 12 | Wait | 1 | | ||
+ | | 13 | Goto | 10 | | ||
+ | | 14 | Playback | beep | | ||
+ | | 15 | Wait | 5 | | ||
+ | | 16 | Set | NumLoops=$[${NumLoops} + 1] | | ||
+ | | 17 | GotoIf | $[${NumLoops} < 5]?4 | | ||
+ | | 18 | Playback | goodbye | | ||
+ | | 19 | Hangup | | | ||
+ | +----------+-------------+---------------------------------------+ | ||
+ | |||
+ | ==== Extension: *65 - get current extension number ==== | ||
+ | +----------+-----------+---------------+ | ||
+ | | priority | app | appdata | | ||
+ | +----------+-----------+---------------+ | ||
+ | | 1 | Answer | | | ||
+ | | 2 | Wait | 1 | | ||
+ | | 3 | Macro | user-callerid | | ||
+ | | 4 | Playback | your | | ||
+ | | 5 | Playback | extension | | ||
+ | | 6 | Playback | number | | ||
+ | | 7 | Playback | is | | ||
+ | | 8 | SayDigits | ${AMPUSER} | | ||
+ | | 9 | Wait | 2 | | ||
+ | | 10 | Hangup | | | ||
+ | +----------+-----------+---------------+ | ||
+ | |||
+ | ==== Extension: *70 - incoming fax ==== | ||
+ | +----------+------------+-------------------------------------------------------+ | ||
+ | | priority | app | appdata | | ||
+ | +----------+------------+-------------------------------------------------------+ | ||
+ | | 1 | Answer | | | ||
+ | | 2 | Wait | 6 | | ||
+ | | 3 | Set | FAXFILE=/var/spool/asterisk/fax/${CALLERID(num)}.tif | | ||
+ | | 4 | Set | FAXFILENOEXT=/var/spool/asterisk/fax/${CALLERID(num)} | | ||
+ | | 5 | Receivefax | ${FAXFILE} | | ||
+ | | 6 | Hangup | | | ||
+ | | 1 | Answer | | | ||
+ | | 2 | Noop | Receiving fax for DID ${CALLERID(DNID)} | | ||
+ | | 3 | Wait | 3 | | ||
+ | | 4 | Set | FAXFILE=/var/spool/asterisk/fax/${CALLERID(num)}.tif | | ||
+ | | 5 | Set | FAXFILENOEXT=/var/spool/asterisk/fax/${CALLERID(num)} | | ||
+ | | 6 | Receivefax | ${FAXFILE} | | ||
+ | | 7 | Hangup | | | ||
+ | +----------+------------+-------------------------------------------------------+ | ||
+ | |||
+ | ==== Extension: *96 - listen to music on hold ==== | ||
+ | +----------+-------------+---------+ | ||
+ | | priority | app | appdata | | ||
+ | +----------+-------------+---------+ | ||
+ | | 1 | Answer | | | ||
+ | | 2 | Wait | 1 | | ||
+ | | 3 | MusicOnHold | | | ||
+ | | 4 | Hangup | | | ||
+ | +----------+-------------+---------+ | ||
+ | |||
+ | == Actual config files in database == | ||
+ | === sip.conf === | ||
+ | +------------+------------+----------+------------------+---------------------------------------+ | ||
+ | | cat_metric | var_metric | category | var_name | var_val | | ||
+ | +------------+------------+----------+------------------+---------------------------------------+ | ||
+ | | 0 | 0 | general | bindport | 5060 | | ||
+ | | 0 | 1 | general | bindaddr | 0.0.0.0 | | ||
+ | | 0 | 2 | general | videosupport | yes | | ||
+ | | 0 | 3 | general | disallow | all | | ||
+ | | 0 | 4 | general | allow | alaw | | ||
+ | | 0 | 5 | general | allow | ulaw | | ||
+ | | 0 | 6 | general | allow | h263p | | ||
+ | | 0 | 7 | general | allow | h263 | | ||
+ | | 0 | 8 | general | context | from-sip-external | | ||
+ | | 0 | 9 | general | callerid | Unknown | | ||
+ | | 0 | 10 | general | tos | 0x68 | | ||
+ | | 0 | 11 | general | notifyringing | yes | | ||
+ | | 0 | 12 | general | notifyhold | yes | | ||
+ | | 0 | 13 | general | limitonpeers | yes | | ||
+ | | 0 | 14 | general | rtcachefriends | yes | | ||
+ | | 0 | 15 | general | rtupdate | yes | | ||
+ | | 0 | 16 | general | tcpenable | yes | | ||
+ | | 0 | 17 | general | tcpbindaddr | 0.0.0.0 | | ||
+ | | 0 | 18 | general | registerattempts | 0 | | ||
+ | | 0 | 19 | general | registertimeout | 15 | | ||
+ | | 0 | 20 | general | language | en | | ||
+ | | 0 | 21 | general | alwaysauthreject | yes | | ||
+ | | 0 | 101 | general | register | username:password@sipserver/extension | | ||
+ | +------------+------------+----------+------------------+---------------------------------------+ | ||
+ | |||
+ | === iax.conf === | ||
+ | +------------+------------+----------+-------------------+-------------------+ | ||
+ | | cat_metric | var_metric | category | var_name | var_val | | ||
+ | +------------+------------+----------+-------------------+-------------------+ | ||
+ | | 0 | 0 | general | bindport | 4569 | | ||
+ | | 0 | 1 | general | bindaddr | 0.0.0.0 | | ||
+ | | 0 | 2 | general | disallow | all | | ||
+ | | 0 | 3 | general | allow | alaw | | ||
+ | | 0 | 4 | general | allow | ulaw | | ||
+ | | 0 | 5 | general | allow | gsm | | ||
+ | | 0 | 6 | general | context | from-sip-external | | ||
+ | | 0 | 7 | general | mailboxdetail | yes | | ||
+ | | 0 | 8 | general | iaxcompat | yes | | ||
+ | | 0 | 9 | general | nochecksums | no | | ||
+ | | 0 | 10 | general | delayreject | yes | | ||
+ | | 0 | 11 | general | bandwidth | high | | ||
+ | | 0 | 12 | general | dtmfmode | auto | | ||
+ | | 0 | 13 | general | rtcachefriends | yes | | ||
+ | | 0 | 14 | general | rtupdate | yes | | ||
+ | | 0 | 15 | general | tos | 0x18 | | ||
+ | | 0 | 16 | general | maxjitterbuffer | 1000 | | ||
+ | | 0 | 17 | general | maxjitterinterps | 10 | | ||
+ | | 0 | 18 | general | jitterbuffer | yes | | ||
+ | | 0 | 19 | general | resyncthreshold | 1000 | | ||
+ | | 0 | 20 | general | trunktimestamps | yes | | ||
+ | | 0 | 21 | general | minregexpire | 120 | | ||
+ | | 0 | 22 | general | maxregexpire | 300 | | ||
+ | | 0 | 23 | general | iaxthreadcount | 256 | | ||
+ | | 0 | 24 | general | iaxmaxthreadcount | 256 | | ||
+ | +------------+------------+----------+-------------------+-------------------+ | ||
+ | |||
+ | === voicemail.conf === | ||
+ | +------------+------------+--------------+------------------+-------------------------------------------------------------+ | ||
+ | | cat_metric | var_metric | category | var_name | var_val | | ||
+ | +------------+------------+--------------+------------------+-------------------------------------------------------------+ | ||
+ | | 0 | 0 | general | format | wav|gsm | | ||
+ | | 0 | 1 | general | serveremail | LinuxMCE@dcerouter | | ||
+ | | 0 | 2 | general | maxlogins | 3 | | ||
+ | | 0 | 3 | general | emaildateformat | %A, %B %d, %Y at %r | | ||
+ | | 0 | 4 | general | sendvoicemail | yes | | ||
+ | | 0 | 5 | general | skipms | 3000 | | ||
+ | | 0 | 6 | general | maxsilence | 10 | | ||
+ | | 0 | 7 | general | silencethreshold | 128 | | ||
+ | | 0 | 8 | general | maxlogins | 3 | | ||
+ | | 1 | 0 | zonemessages | eastern | America/New_York|'vm-received' Q 'digits/at' IMp | | ||
+ | | 1 | 1 | zonemessages | central | America/Chicago|'vm-received' Q 'digits/at' IMp | | ||
+ | | 1 | 2 | zonemessages | central24 | America/Chicago|'vm-received' q 'digits/at' H N 'hours' | | ||
+ | | 1 | 3 | zonemessages | military | Zulu|'vm-received' q 'digits/at' H N 'hours' 'phonetic/z_p' | | ||
+ | | 1 | 4 | zonemessages | european | Europe/Copenhagen|'vm-received' a d b 'digits/at' HM | | ||
+ | +------------+------------+--------------+------------------+-------------------------------------------------------------+ | ||
+ | |||
+ | === musiconhold.conf === | ||
+ | +------------+------------+----------+-----------+-------------------------------+ | ||
+ | | cat_metric | var_metric | category | var_name | var_val | | ||
+ | +------------+------------+----------+-----------+-------------------------------+ | ||
+ | | 0 | 0 | default | mode | files | | ||
+ | | 0 | 1 | default | directory | /var/lib/asterisk/mohmp3 | | ||
+ | | 1 | 0 | none | mode | files | | ||
+ | | 1 | 1 | none | directory | /var/lib/asterisk/mohmp3/none | | ||
+ | +------------+------------+----------+-----------+-------------------------------+ | ||
+ | |||
+ | === cdr_mysql.conf === | ||
+ | * This is for "Call Detail Records". In webadmin -> Telecom -> Call Detail Records is a parser interface | ||
+ | +------------+------------+----------+----------+-----------------------------+ | ||
+ | | cat_metric | var_metric | category | var_name | var_val | | ||
+ | +------------+------------+----------+----------+-----------------------------+ | ||
+ | | 0 | 0 | global | dbname | asterisk | | ||
+ | | 0 | 1 | global | table | cdr | | ||
+ | | 0 | 2 | global | password | lmce | | ||
+ | | 0 | 3 | global | user | asteriskuser | | ||
+ | | 0 | 4 | global | sock | /var/run/mysqld/mysqld.sock | | ||
+ | +------------+------------+----------+----------+-----------------------------+ | ||
+ | |||
+ | === google talk === | ||
+ | * This is for google talk. Apparently the api's changed once again, and this is no more the recommended way of getting it to work. But for new modules i *think* we need asterisk 1.10+. This has to be researched and confirmed. | ||
+ | ==== jabber.conf ==== | ||
+ | +------------+------------+----------+--------------+---------+ | ||
+ | | cat_metric | var_metric | category | var_name | var_val | | ||
+ | +------------+------------+----------+--------------+---------+ | ||
+ | | 0 | 0 | general | autoregister | yes | | ||
+ | +------------+------------+----------+--------------+---------+ | ||
+ | ==== gtalk.conf ==== | ||
+ | +------------+------------+----------+------------+------------+ | ||
+ | | cat_metric | var_metric | category | var_name | var_val | | ||
+ | +------------+------------+----------+------------+------------+ | ||
+ | | 0 | 0 | general | context | from-trunk | | ||
+ | | 0 | 1 | general | bindaddr | 0.0.0.0 | | ||
+ | | 0 | 2 | general | allowguest | yes | | ||
+ | | 1 | 0 | guest | disallow | all | | ||
+ | | 1 | 1 | guest | allow | ulaw | | ||
+ | | 1 | 2 | guest | context | from-trunk | | ||
+ | | 1 | 3 | guest | connection | asterisk | | ||
+ | +------------+------------+----------+------------+------------+ |
Latest revision as of 18:21, 22 July 2013
We desperately need to write a new Asterisk dial plan to replace the AMP generated one that has become far too bit-rotten to be of any substantial use. This page will track the conceptual flow of what will be needed for the new post Asterisk 1.8+ dialplan.
- This is being added to, as I write more and more of the schema, and will get much...much bigger. --Tschak909 07:30, 18 July 2013 (CEST)
- I added the actual existing dialplan in lmce 1204. Let's mangle it here in the wiki and put the result back into bash and sql scripts --Foxi352 22 July 2013
Contents
Dial Plan Flow
Call from outside line (1xx)
- Call comes in from outside line
- Get house mode and branch between five possible states:
- Ring extensions
- All checked extensions (2xx) are rung in parallel.
- Transfer to a specific user
- Transfer to specified (3xx) extension
- Go to a specific user's voicemail
- Transfer to selected user's voicemail
- Present a menu to select Home user (101)
- Is the number listed in Callers for me(?) for a user.
- Transfer to user extension. (3xx)
- Present menu audio, and select between options:
- If explicit extension is selected, ring said extension. (Do we want to allow all extensions to be pressed here?)
- If User number is selected, Transfer to user (3xx)
- If General Voicemail, drop to general voicemail box (100)
- Is the number listed in Callers for me(?) for a user.
- Transfer to outside number
- Dial outside #
- Ring extensions
- Get house mode and branch between five possible states:
Ring specific extension (2xx)
- Does current house mode allow extension to be rang?
- No? Bounce to Menu (101)
- Yes? ...then
- Ring specified extension
- While ringing, user has the opportunity to:
- Transfer to a specific phone (2xx)
- Transfer to a specific user (3xx)
- Transfer to an outside number (dial specified number given to dial pad)
- dial someone else in to conference before we all pick up (this is strange, but the button is there!)
- Send to General voicemail (100)
- Drop the call
- If extension does not pick up within specified IVR delay time, Transfer to (101) for IVR menu
- While ringing, user has the opportunity to:
- Ring specified extension
Ring specific user (3xx)
- Find user via AGI script, map to a list of (2xx) extensions.
- Is number on Priority caller list?
- No, it is a normal caller, Process normal caller routing (see normal/priority user routing below)
- Yes, it is a priority caller, Process priority caller routing (see normal/priority user routing below)
Normal/Priority User Routing
For each user, there is a set of routing steps to be executed serially, depending on if the user is a normal or priority caller, and then based on the current USER mode. A user is a priority caller if they are listed in the priority callers list. Any number of steps can be created, and a dial plan segment should be created for each one.
- Get house mode
- If Normal caller, select normal caller steps given house mode
- If Priority caller, select priority caller steps given house mode
- If checkbox is selected for give option for voicemail, play message, listen for "#"
- If checkbox selected, and If # pressed, go to user voicemail
- Execute next step which is one of four possible states: (TOP)
- Ring Extensions
- Parallel ring selected extensions (2xx)
- Transfer to another user
- Transfer call to specified (3xx) extension
- Go to user's voicemail
- Transfer call to specified user voicemail
- Transfer to an outside number
- Ring Extensions
- Loop back around to (TOP)
- If all instructions are carried out and still unresolved, drop back to menu (101)
Security Plugin Phone Extensions
Security Notfiications (999)
- run AGI to determine which rooms have been affected, generate audio message
- Determine priority in the following order
- Orbiters then Other numbers (uses one outgoing channel)
- Ring each orbiter for 15 seconds, if no answer, then ring the next orbiter
- If answer, Play Security IVR
- If no more orbiters, ring each "other number" for 15 seconds, if no answer, then ring next other number.
- If answer, Play security IVR
- (what to do here if everybody has been rung, and no answer?)
- Ring each orbiter for 15 seconds, if no answer, then ring the next orbiter
- Other numbers then Orbiters (uses one outgoing channel)
- Ring each "other number" for 15 seconds, if no answer, then ring the next number.
- If answer, Play security IVR
- If no more "other numbers", ring each Orbiter for 15 seconds, if no answer, then ring the next orbiter.
- Ring each "other number" for 15 seconds, if no answer, then ring the next number.
- Both orbiters and other numbers at the same time. (uses two outgoing channels)
- spawn two threads, one for "Orbiters" one for "Other numbers", for each thread
- Ring each number for 15 seconds, if no answer, then ring the next number.
- If answer, Play security IVR
- (What to do when all numbers have been rung?)
- Ring each number for 15 seconds, if no answer, then ring the next number.
- spawn two threads, one for "Orbiters" one for "Other numbers", for each thread
- Orbiters then Other numbers (uses one outgoing channel)
Security IVR
- 1 to Reset the Alarm
- Play "Alarm has been reset."
- 2 to Ignore the alarm
- 3 to call emergency contacts
- 4 to Notify neighbors
- 5 to speak to the person in the house
Lists for...
House Modes
- Armed - At Home
- Armed - Away
- Armed - Extended Away
- Entertaining
- Sleeping
- Unarmed - At Home
User Modes
- At Home
- Away
- Do Not Disturb
- Sleeping
Incoming Call extensions
- 100 - General Voicemail box
- 101 - IVR menu
Example Phone extensions
- 201 - Living Room
- 202 - Bedroom Master
- 203 - Den
- ...
Example User extensions
- 301 - Thom
- 302 - Lana
- 303 - Nina
- ...
Example User voicemail extensions
- 401 - Thom
- 402 - Lana
- 403 - Nina
Security Extensions
- 999 - Security
- 998 - Fire
- 997 - Air Quality
- 996 - Movement
- 995 - Information
- 994 - Doorbell
- 993 - Monitor Mode
- 992 - Babysitter Mode
- 991 - Speak to person inside house (this needs to be changed in all the code, this was 998)
Contexts
- from-trunk - Calls from outside lines
- from-internal - Calls originating from inside the system
Actual dialplan
Call to extension - Context: ext-local
- This is an example of a standard SIP phone extension 204
+-------+----------+--------+-------------------+ | exten | priority | app | appdata | +-------+----------+--------+-------------------+ | 204 | 1 | Macro | exten-vm,novm,204 | | 204 | 2 | Hangup | | +-------+----------+--------+-------------------+
- The macro itself is still in the extensions.conf file (flatfile)
[macro-exten-vm] exten => s,1,Macro(user-callerid) exten => s,n,Set(FROMCONTEXT=exten-vm) exten => s,n,Set(VMBOX=${ARG1}) exten => s,n,Set(EXTTOCALL=${ARG2}) exten => s,n,Set(CFUEXT=${DB(CFU/${EXTTOCALL})}) exten => s,n,Set(CFBEXT=${DB(CFB/${EXTTOCALL})}) exten => s,n,Set(RT=${IF($[$["${VMBOX}"!="novm"] | $["foo${CFUEXT}"!="foo"]]?${RINGTIMER}:"")}) exten => s,n,Macro(record-enable,${EXTTOCALL},IN) exten => s,n,Macro(dial,${RT},${DIAL_OPTIONS},${EXTTOCALL}) exten => s,n,Set(SV_DIALSTATUS=${DIALSTATUS}) exten => s,n,GosubIf($[$["${SV_DIALSTATUS}"="NOANSWER"] & $["foo${CFUEXT}"!="foo"]]?docfu,1) ; check for CFU in use on no answer exten => s,n,GosubIf($[$["${SV_DIALSTATUS}"="BUSY"] & $["foo${CFBEXT}"!="foo"]]?docfb,1) ; check for CFB in use on busy exten => s,n,Set(DIALSTATUS=${SV_DIALSTATUS}) exten => s,n,NoOp(Voicemail is '${VMBOX}') exten => s,n,GotoIf($["${VMBOX}" = "novm"]?s-${DIALSTATUS},1) ; no voicemail in use for this extension exten => s,n,NoOp(Sending to Voicemail box ${EXTTOCALL}) exten => s,n,Macro(vm,${VMBOX},${DIALSTATUS}) exten => docfu,1,Set(RTCFU=${IF($["${VMBOX}"!="novm"]?${RINGTIMER}:"")}) exten => docfu,n,Dial(Local/${CFUEXT}@from-internal/n,${RTCFU},${DIAL_OPTIONS}) exten => docfu,n,Return exten => docfb,1,Set(RTCFB=${IF($["${VMBOX}"!="novm"]?${RINGTIMER}:"")}) exten => docfb,n,Dial(Local/${CFBEXT}@from-internal/n,${RTCFB},${DIAL_OPTIONS}) exten => docfb,n,Return exten => s-BUSY,1,NoOp(Extension is reporting BUSY and not passing to Voicemail) exten => s-BUSY,n,Playtones(busy) exten => s-BUSY,n,Busy(20) exten => _s-.,1,Playtones(congestion) exten => _s-.,n,Congestion(10)
Call to user - Context: from-lmce-custom
- This context handles the call to a user, means 3xx number
- This is only an example. Actual dialplan depends on routing choosen in "Webadmin -> Telecom -> Call Routing"
+-------------------------------+----------+--------+----------------------------------------------------------------------------+ | exten | priority | app | appdata | +-------------------------------+----------+--------+----------------------------------------------------------------------------+ | 301 | 1 | AGI | lmce-getusermode.agi | | 301 | 2 | Goto | from-lmce-custom,301-um${USERMODE}-pri${PRIORITYCALLER},1 | | 301 | 3 | Hangup | | | 301-um1-pri0 | 1 | Goto | from-lmce-custom,301-um1-pri0-try1,1 | | 301-um1-pri0-try1 | 1 | Macro | vm,301,DIRECTDIAL | | 301-um1-pri0-try1 | 2 | Goto | from-lmce-custom,301-um1-pri0-try1-${DIALSTATUS},1 | | 301-um1-pri0-try1 | 3 | Hangup | | | 301-um1-pri0-try1-BUSY | 1 | Goto | from-lmce-custom,301-um1-pri0-try2,1 | | 301-um1-pri0-try1-CHANUNAVAIL | 1 | Goto | from-lmce-custom,301-um1-pri0-try2,1 | | 301-um1-pri0-try1-CONGESTION | 1 | Goto | from-lmce-custom,301-um1-pri0-try2,1 | | 301-um1-pri0-try1-NOANSWER | 1 | Goto | from-lmce-custom,301-um1-pri0-try2,1 | | 301-um1-pri0-try2 | 1 | Macro | vm,301,DIRECTDIAL | | 301-um1-pri0-try2 | 2 | Hangup | | | 301-um2-pri0 | 1 | Goto | from-lmce-custom,301-um2-pri0-try1,1 | | 301-um2-pri0-try1 | 1 | Macro | vm,301,DIRECTDIAL | | 301-um2-pri0-try1 | 2 | Goto | from-lmce-custom,301-um2-pri0-try1-${DIALSTATUS},1 | | 301-um2-pri0-try1 | 3 | Hangup | | | 301-um2-pri0-try1-BUSY | 1 | Goto | from-lmce-custom,301-um2-pri0-try2,1 | | 301-um2-pri0-try1-CHANUNAVAIL | 1 | Goto | from-lmce-custom,301-um2-pri0-try2,1 | | 301-um2-pri0-try1-CONGESTION | 1 | Goto | from-lmce-custom,301-um2-pri0-try2,1 | | 301-um2-pri0-try1-NOANSWER | 1 | Goto | from-lmce-custom,301-um2-pri0-try2,1 | | 301-um2-pri0-try2 | 1 | Macro | vm,301,DIRECTDIAL | | 301-um2-pri0-try2 | 2 | Hangup | | | 301-um3-pri0 | 1 | Goto | from-lmce-custom,301-um3-pri0-try1,1 | | 301-um3-pri0-try1 | 1 | Macro | vm,301,DIRECTDIAL | | 301-um3-pri0-try1 | 2 | Goto | from-lmce-custom,301-um3-pri0-try1-${DIALSTATUS},1 | | 301-um3-pri0-try1 | 3 | Hangup | | | 301-um3-pri0-try1-BUSY | 1 | Goto | from-lmce-custom,301-um3-pri0-try2,1 | | 301-um3-pri0-try1-CHANUNAVAIL | 1 | Goto | from-lmce-custom,301-um3-pri0-try2,1 | | 301-um3-pri0-try1-CONGESTION | 1 | Goto | from-lmce-custom,301-um3-pri0-try2,1 | | 301-um3-pri0-try1-NOANSWER | 1 | Goto | from-lmce-custom,301-um3-pri0-try2,1 | | 301-um3-pri0-try2 | 1 | Macro | vm,301,DIRECTDIAL | | 301-um3-pri0-try2 | 2 | Hangup | | | 301-um3-pri1-try1 | 1 | Dial | Local/200@trusted&Local/202@trusted&Local/203@trusted&Local/204@trusted,15 | | 301-um3-pri1-try1 | 2 | Goto | from-lmce-custom,301-um3-pri1-try1-${DIALSTATUS},1 | | 301-um3-pri1-try1 | 3 | Hangup | | | 301-um3-pri1-try1-BUSY | 1 | Goto | from-lmce-custom,301-um3-pri1-try2,1 | | 301-um3-pri1-try1-CHANUNAVAIL | 1 | Goto | from-lmce-custom,301-um3-pri1-try2,1 | | 301-um3-pri1-try1-CONGESTION | 1 | Goto | from-lmce-custom,301-um3-pri1-try2,1 | | 301-um3-pri1-try1-NOANSWER | 1 | Goto | from-lmce-custom,301-um3-pri1-try2,1 | | 301-um3-pri1-try2 | 1 | Macro | vm,301,DIRECTDIAL | | 301-um3-pri1-try2 | 2 | Hangup | | | 301-um4-pri0 | 1 | Goto | from-lmce-custom,301-um4-pri0-try1,1 | | 301-um4-pri0-try1 | 1 | Macro | vm,301,DIRECTDIAL | | 301-um4-pri0-try1 | 2 | Goto | from-lmce-custom,301-um4-pri0-try1-${DIALSTATUS},1 | | 301-um4-pri0-try1 | 3 | Hangup | | | 301-um4-pri0-try1-BUSY | 1 | Goto | from-lmce-custom,301-um4-pri0-try2,1 | | 301-um4-pri0-try1-CHANUNAVAIL | 1 | Goto | from-lmce-custom,301-um4-pri0-try2,1 | | 301-um4-pri0-try1-CONGESTION | 1 | Goto | from-lmce-custom,301-um4-pri0-try2,1 | | 301-um4-pri0-try1-NOANSWER | 1 | Goto | from-lmce-custom,301-um4-pri0-try2,1 | | 301-um4-pri0-try2 | 1 | Macro | vm,301,DIRECTDIAL | | 301-um4-pri0-try2 | 2 | Hangup | | | 301-um4-pri1 | 1 | Goto | from-lmce-custom,301-um4-pri1-try1,1 | | 301-um4-pri1-try1 | 1 | Dial | Local/200@trusted&Local/202@trusted&Local/203@trusted&Local/204@trusted,15 | | 301-um4-pri1-try1 | 2 | Goto | from-lmce-custom,301-um4-pri1-try1-${DIALSTATUS},1 | | 301-um4-pri1-try1 | 3 | Hangup | | | 301-um4-pri1-try1-BUSY | 1 | Goto | from-lmce-custom,301-um4-pri1-try2,1 | | 301-um4-pri1-try1-CHANUNAVAIL | 1 | Goto | from-lmce-custom,301-um4-pri1-try2,1 | | 301-um4-pri1-try1-CONGESTION | 1 | Goto | from-lmce-custom,301-um4-pri1-try2,1 | | 301-um4-pri1-try1-NOANSWER | 1 | Goto | from-lmce-custom,301-um4-pri1-try2,1 | | 301-um4-pri1-try2 | 1 | Macro | vm,301,DIRECTDIAL | | 301-um4-pri1-try2 | 2 | Hangup | | +-------------------------------+----------+--------+----------------------------------------------------------------------------+
Context: applications
Extension: *43 - echotest
+----------+----------+---------------+ | priority | app | appdata | +----------+----------+---------------+ | 1 | Answer | | | 2 | Wait | 1 | | 3 | Playback | demo-echotest | | 4 | Playback | beep | | 5 | Echo | | | 6 | Playback | demo-echodone | | 7 | Hangup | | +----------+----------+---------------+
Extension: *60 - speaking clock
+----------+-------------+---------------------------------------+ | priority | app | appdata | +----------+-------------+---------------------------------------+ | 1 | Answer | | | 2 | Wait | 1 | | 3 | Set | NumLoops=0 | | 4 | Set | FutureTime=$[${EPOCH} + 11] | | 5 | Playback | at-tone-time-exactly | | 6 | GotoIf | $["${TIMEFORMAT}" = "kM"]?9 | | 7 | SayUnixTime | ${FutureTime},,IM 'and' S 'seconds' p | | 8 | Goto | 10 | | 9 | SayUnixTime | ${FutureTime},,kM 'and' S 'seconds' | | 10 | Set | TimeLeft=$[${FutureTime} - ${EPOCH}] | | 11 | GotoIf | $[${TimeLeft} < 1]?14 | | 12 | Wait | 1 | | 13 | Goto | 10 | | 14 | Playback | beep | | 15 | Wait | 5 | | 16 | Set | NumLoops=$[${NumLoops} + 1] | | 17 | GotoIf | $[${NumLoops} < 5]?4 | | 18 | Playback | goodbye | | 19 | Hangup | | +----------+-------------+---------------------------------------+
Extension: *65 - get current extension number
+----------+-----------+---------------+ | priority | app | appdata | +----------+-----------+---------------+ | 1 | Answer | | | 2 | Wait | 1 | | 3 | Macro | user-callerid | | 4 | Playback | your | | 5 | Playback | extension | | 6 | Playback | number | | 7 | Playback | is | | 8 | SayDigits | ${AMPUSER} | | 9 | Wait | 2 | | 10 | Hangup | | +----------+-----------+---------------+
Extension: *70 - incoming fax
+----------+------------+-------------------------------------------------------+ | priority | app | appdata | +----------+------------+-------------------------------------------------------+ | 1 | Answer | | | 2 | Wait | 6 | | 3 | Set | FAXFILE=/var/spool/asterisk/fax/${CALLERID(num)}.tif | | 4 | Set | FAXFILENOEXT=/var/spool/asterisk/fax/${CALLERID(num)} | | 5 | Receivefax | ${FAXFILE} | | 6 | Hangup | | | 1 | Answer | | | 2 | Noop | Receiving fax for DID ${CALLERID(DNID)} | | 3 | Wait | 3 | | 4 | Set | FAXFILE=/var/spool/asterisk/fax/${CALLERID(num)}.tif | | 5 | Set | FAXFILENOEXT=/var/spool/asterisk/fax/${CALLERID(num)} | | 6 | Receivefax | ${FAXFILE} | | 7 | Hangup | | +----------+------------+-------------------------------------------------------+
Extension: *96 - listen to music on hold
+----------+-------------+---------+ | priority | app | appdata | +----------+-------------+---------+ | 1 | Answer | | | 2 | Wait | 1 | | 3 | MusicOnHold | | | 4 | Hangup | | +----------+-------------+---------+
Actual config files in database
sip.conf
+------------+------------+----------+------------------+---------------------------------------+ | cat_metric | var_metric | category | var_name | var_val | +------------+------------+----------+------------------+---------------------------------------+ | 0 | 0 | general | bindport | 5060 | | 0 | 1 | general | bindaddr | 0.0.0.0 | | 0 | 2 | general | videosupport | yes | | 0 | 3 | general | disallow | all | | 0 | 4 | general | allow | alaw | | 0 | 5 | general | allow | ulaw | | 0 | 6 | general | allow | h263p | | 0 | 7 | general | allow | h263 | | 0 | 8 | general | context | from-sip-external | | 0 | 9 | general | callerid | Unknown | | 0 | 10 | general | tos | 0x68 | | 0 | 11 | general | notifyringing | yes | | 0 | 12 | general | notifyhold | yes | | 0 | 13 | general | limitonpeers | yes | | 0 | 14 | general | rtcachefriends | yes | | 0 | 15 | general | rtupdate | yes | | 0 | 16 | general | tcpenable | yes | | 0 | 17 | general | tcpbindaddr | 0.0.0.0 | | 0 | 18 | general | registerattempts | 0 | | 0 | 19 | general | registertimeout | 15 | | 0 | 20 | general | language | en | | 0 | 21 | general | alwaysauthreject | yes | | 0 | 101 | general | register | username:password@sipserver/extension | +------------+------------+----------+------------------+---------------------------------------+
iax.conf
+------------+------------+----------+-------------------+-------------------+ | cat_metric | var_metric | category | var_name | var_val | +------------+------------+----------+-------------------+-------------------+ | 0 | 0 | general | bindport | 4569 | | 0 | 1 | general | bindaddr | 0.0.0.0 | | 0 | 2 | general | disallow | all | | 0 | 3 | general | allow | alaw | | 0 | 4 | general | allow | ulaw | | 0 | 5 | general | allow | gsm | | 0 | 6 | general | context | from-sip-external | | 0 | 7 | general | mailboxdetail | yes | | 0 | 8 | general | iaxcompat | yes | | 0 | 9 | general | nochecksums | no | | 0 | 10 | general | delayreject | yes | | 0 | 11 | general | bandwidth | high | | 0 | 12 | general | dtmfmode | auto | | 0 | 13 | general | rtcachefriends | yes | | 0 | 14 | general | rtupdate | yes | | 0 | 15 | general | tos | 0x18 | | 0 | 16 | general | maxjitterbuffer | 1000 | | 0 | 17 | general | maxjitterinterps | 10 | | 0 | 18 | general | jitterbuffer | yes | | 0 | 19 | general | resyncthreshold | 1000 | | 0 | 20 | general | trunktimestamps | yes | | 0 | 21 | general | minregexpire | 120 | | 0 | 22 | general | maxregexpire | 300 | | 0 | 23 | general | iaxthreadcount | 256 | | 0 | 24 | general | iaxmaxthreadcount | 256 | +------------+------------+----------+-------------------+-------------------+
voicemail.conf
+------------+------------+--------------+------------------+-------------------------------------------------------------+ | cat_metric | var_metric | category | var_name | var_val | +------------+------------+--------------+------------------+-------------------------------------------------------------+ | 0 | 0 | general | format | wav|gsm | | 0 | 1 | general | serveremail | LinuxMCE@dcerouter | | 0 | 2 | general | maxlogins | 3 | | 0 | 3 | general | emaildateformat | %A, %B %d, %Y at %r | | 0 | 4 | general | sendvoicemail | yes | | 0 | 5 | general | skipms | 3000 | | 0 | 6 | general | maxsilence | 10 | | 0 | 7 | general | silencethreshold | 128 | | 0 | 8 | general | maxlogins | 3 | | 1 | 0 | zonemessages | eastern | America/New_York|'vm-received' Q 'digits/at' IMp | | 1 | 1 | zonemessages | central | America/Chicago|'vm-received' Q 'digits/at' IMp | | 1 | 2 | zonemessages | central24 | America/Chicago|'vm-received' q 'digits/at' H N 'hours' | | 1 | 3 | zonemessages | military | Zulu|'vm-received' q 'digits/at' H N 'hours' 'phonetic/z_p' | | 1 | 4 | zonemessages | european | Europe/Copenhagen|'vm-received' a d b 'digits/at' HM | +------------+------------+--------------+------------------+-------------------------------------------------------------+
musiconhold.conf
+------------+------------+----------+-----------+-------------------------------+ | cat_metric | var_metric | category | var_name | var_val | +------------+------------+----------+-----------+-------------------------------+ | 0 | 0 | default | mode | files | | 0 | 1 | default | directory | /var/lib/asterisk/mohmp3 | | 1 | 0 | none | mode | files | | 1 | 1 | none | directory | /var/lib/asterisk/mohmp3/none | +------------+------------+----------+-----------+-------------------------------+
cdr_mysql.conf
- This is for "Call Detail Records". In webadmin -> Telecom -> Call Detail Records is a parser interface
+------------+------------+----------+----------+-----------------------------+ | cat_metric | var_metric | category | var_name | var_val | +------------+------------+----------+----------+-----------------------------+ | 0 | 0 | global | dbname | asterisk | | 0 | 1 | global | table | cdr | | 0 | 2 | global | password | lmce | | 0 | 3 | global | user | asteriskuser | | 0 | 4 | global | sock | /var/run/mysqld/mysqld.sock | +------------+------------+----------+----------+-----------------------------+
google talk
- This is for google talk. Apparently the api's changed once again, and this is no more the recommended way of getting it to work. But for new modules i *think* we need asterisk 1.10+. This has to be researched and confirmed.
jabber.conf
+------------+------------+----------+--------------+---------+ | cat_metric | var_metric | category | var_name | var_val | +------------+------------+----------+--------------+---------+ | 0 | 0 | general | autoregister | yes | +------------+------------+----------+--------------+---------+
gtalk.conf
+------------+------------+----------+------------+------------+ | cat_metric | var_metric | category | var_name | var_val | +------------+------------+----------+------------+------------+ | 0 | 0 | general | context | from-trunk | | 0 | 1 | general | bindaddr | 0.0.0.0 | | 0 | 2 | general | allowguest | yes | | 1 | 0 | guest | disallow | all | | 1 | 1 | guest | allow | ulaw | | 1 | 2 | guest | context | from-trunk | | 1 | 3 | guest | connection | asterisk | +------------+------------+----------+------------+------------+