Difference between revisions of "Proposed Asterisk Dialplan"

From LinuxMCE
Jump to: navigation, search
(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 four possible states:
+
**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 17: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

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)
      • Transfer to outside number
        • Dial outside #

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

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
      • 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   |
+------------+------------+----------+------------+------------+