Proposed Asterisk Dialplan

From LinuxMCE
Revision as of 05:30, 18 July 2013 by Tschak909 (Talk | contribs) (More content)

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)