Proposed Asterisk Dialplan

From LinuxMCE
Revision as of 10:01, 22 July 2013 by Foxi352 (Talk | contribs) (Actual asterisk config files in RT DB)

Jump to: navigation, search

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)

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