[asterisk-users] Dialplan, Extensions, etc. Worksheet
info at tripple-o.nl
info at tripple-o.nl
Mon May 5 16:02:04 CDT 2008
Rod,
I've made a very basic dialplan for an Asterisk for beginners
presentati on a seminar kind of event last year.
This are the config files involved:
-/etc/asterisk/
extensions.conf : the file
with the dialplan and the includings of other files that are part of
the dialplan
-/etc/asterisk/extensions.d/plaza_voiceprompts.conf : a quick and
dirty routine to record and listen to your own voiceprompts
-/etc/asterisk/
sip.conf :
the file with the sip entries for the different sip phones
- /etc/asterisk/
voicemail.conf : the
voicemail boxes for the different phones
This is not a ready to go dialplan but (if I haven't made too many
typos translating the stuff from Dutch to English) for practicing it
will do I think. This is the scene:
A company with 4 phones, one for the reception and one for each
department (registration, communication and finance) Each phone has it
own context that sets the permissions for making calls (only internal,
national, international). There is one phone number that can be
called and the caller wil enter a menu. If a department is chosen and
the phone isn't picked up after 10 seconds the reception phone will
ring. If the reception doesn't pick up the phone the call is
transfered to an external number and if this is picked up either the
caller can leave a message. There is one incoming number that is
routed into a menu so the caller can make a choice.
The IAX2 trunk is just a fake. You have to configure a SIP, IAX2 or
ZAP trunk to be able to make or receive phone calls and adjust the
incoming number and adjust the Dial() line to your own trunk.
The voiceprompt routine is just a quick ad dirty but very handsome
routine to record your own voiceprompts and listen to them. The idea
is that you use a numbered list of the voiceprompts and adjust the
routine to that list. The hard part is to make the voiceprompts that
are used by the routine itself ("enter the voiceprompt number" and
"press 1 to make a recordig or 2 to listen") . Number 07 is "press 1
for recording or 2 for listening" and number 08 is "please enter the
voieprompt number".
The recordings are saved in /var/lib/asterisk/sounds/plaza but you can
change it to any directory you like as long as it is available.
Don't panic if you don't understand all of it at once. This example
contains the most basic issues for making a dialplan:
- menu
- routing calls to phones
- routing calls to voicemail boxes
- number matching (routing calls based on the number dialed and/or the
cid of the one that makes an inbound call)
- including contexts
- including config files
- set permissions on a per phones base
- voicemail settings
- parking of a call (transfer a call to number 700, you hear a number
(f.i. 701) and you can call or shout to a co-worker that a call is
parked on 701, he/she
calls 701 and takes over the call) for the settings see /etc/
asterisk/features.conf
There is much more to do and to learn but if you understand this
example I'm sure you will be able to make a very neat dialplan for
yourself. Succes!
Erik de Wild
Tripple-o
Your Asterisk migration partner
>>>>>>>>>>>>>
extensions.conf
[global]
[general]
;
;
;;;;;;;;;;;;;;;;
; this is just an example. every phone number has its own context with
its own permissions. With just a couple of phones this can be used
; in real life, otherwise you have to work with categories
;;;;;;;;;;;;;;
[5000] ; reception
include => plaza_all_rights ; the reception has permissions for
everything
[5001] ; ; registration
department (internal and national outbound)
include => plaza_intern
include => plaza_outbound_nl
[5002] ; information department
(internal and national outbound)
include => plaza_intern
include => plaza_outbound_nl
[5003] ; financial department
include => plaza_intern ; the finance guys/girls are just
allowed to make internal calls
[plaza_all_rights] ; a context with all the
permissions included.
include => plaza_intern
include => plaza_outbound_nl
include => plaza_outbound_int
include => plaza_no_autorisation
[plaza_intern]
include => parkedcalls ; this enables parking calls
;;;;;;;;;;;;;;;
;5000 =reception
;5001 = registration department
;5002 = information department
;5003 = financial department
;;;;;;;;;;;;;;;
exten => _5XXX,1,Dial(SIP/${EXTEN},
20,rT) ; example number matching, only
wth 4 digits ad with the first dgit being a "5" this wil match
exten => _5XXX,n(noanswer),n,Playback(plaza/no_answer) ; a message
that the phone isn't answered
exten => _5XXX,n,Hangup()
exten => 6000/5000,1,Answer() ; ex girlfriend
extension example. Only the reception can call the voiceprompt routine
exten => 6000/5000,n,Goto(recording,s,1) ; calling extension 6000
exten => 6001,1,Answer() ; just to
test the proper working of music on hold
exten => 6001,n,MusicOnHold()
exten => 6001,n,Hangup()
#include "extensions.d/*.conf" ; some additional .conf are in /
etc/asterisk/extensions.d/ just to keep the oversight of the dialplan
configuration
;
without ending up with one large extensions.conf
[plaza_inbound]
;;;;;;;;;;;
; numbers don't exist anymore
;;;;;;;;;;;
exten => 0307114197,1,Answer() ;
incoming line on number 0307114197
exten => 0307114197,n,Goto(inbound_menu,s,1) ; jump to menu
[inbound_menu]
exten => s,1,BackGround(plaza/menu) ; press 1 for reception, 2
fr registration department , 3 for info department
; or
for for the fiancial department
;;;;;;;;;;;;;;;;
;reception
;;;;;;;;;;;;;;;;
exten => 1,1,Dial(SIP/5000,10,t)
exten => 1,n,Playback(plaza/no_answer)
exten => 1,n,Hangup()
;;;;;;;;;;;;;;;;
;registration department
;;;;;;;;;;;;;;;;
exten => 2,1,Dial(SIP/
5001,10,t) ; phone
5001 rings for 10 seconds
exten => 2,n,Dial(SIP/
5000,10,t) ; phone
5000 (reception) rings 10 seconden
exten => 2,n,Playback(plaza/external_transfer) ;
exten => 2,n,Dial(IAX2/OOO50608 at OOO_plaza/0621831234,10,t) ; using
iax2 trunk OOO50608 external number 0621831234 is called for 10 seconds
exten =>
2
,n
,VoiceMail(5001) ;
if no phone answered the caller can leave a message in mailbox 5001
exten => 2,n,Hangup()
;;;;;;;;;;;;;;;;
;information department
;;;;;;;;;;;;;;;;
exten => 3,1,Dial(SIP/
5002,10,r) ; phone rings
for 10 seconds;
exten => 3,2,Dial(SIP/
5000,10,t) ; phone of
reception rings for 10 seconds
exten => 3,3,Dial(IAX2/OOO50608 at OOO_plaza/0621832345,10,t) sing iax2
trunk OOO50608 external number 0621832345 is called for 10 seconds
exten =>
3,4
,VoiceMail(5002) ;
no phone answered the callee can leave a message in mailbox 5002
exten => 3,5,Hangup()
;;;;;;;;;;;;;;
; finance department
;;;;;;;;;;;;;
exten =>
4,1
,Voicemail(5003) ;
the finance guys/girl only communicate by voicemail
exten => 4,2,Hangup()
; i = invalid
exten => i,1,Playback(plaza/
invallid_input) ; when a digit other the 1,
2, 3 or 4 is entered the input is invalid so "the invalid" message is
played
exten => i,2,Goto,(s,
1) ;
and then the ibound call returns back to the menu
; t = time-out
exten => t,1,Playback(plaza/
goodbye) ; caller waited to long
exten => t,
3
,Hangup
;
not very customer friendly but the line hangs up
[plaza_outbound_nl
] ;
only national outbound calls
exten => _0Z.,1,Dial(IAX2/OOO50608 at voop_plaza/${EXTEN},20,rt) ; iax2
trunk OOO50608 calls out, be aware of the numbermatching _0Z.
exten => _0Z.,
2
,Hangup
() ; Z
=[123456789]
[plaza_outbound_int]
exten => _00Z.,1,Dial(IAX2/OOO50698 at voop_plaza/${EXTEN},20,rt) ;
number match _00X. allows international calls
exten => _00Z.,2,Hangup()
[plaza_no_autorisation]
exten => _X.,1,Playback(plaza/no_autorisation) ; in case you enter a
number that doesn't fit any other available extension (depends on what
is included)
exten => _X.,n,Hangup
>>>>>>>>>>>>
/etc/asterisk/extension.d/plaza_voiceprompts.conf
;;;;;;;;;;;;;;;
; Erik de Wild
; quick and dirty routine for recording Media Plaza demo voiceprompts
; 26-05-2007
;;;;;;;;;;;;;;;
[recording]
exten => s,1,Read(VOICEPROMPT_NUMMER|plaza/voiceprompt_nummer|2|
noanswer|1|15) ; enter the voiceprompt number
exten => s,n,Read(OPNEMEN_AFLUISTEREN|plaza/opnemen_afluisteren|1|
noanswer|1|15) ; OPNEMEN_AFLUSTEREN=LISTEN_RECORD
; press
1 for recording or 2 for listening
exten => s,n,Macro(bestandsnaam,$
{VOICEPROMPT_NUMMER
}) ; calling
macro that finds the file name by the
; voiceprompt
number
exten => s,n,NoOp($
{MACRO_RESULT
}) ;
exten => s,n,Macro(play_recording,${MACRO_RESULT},$
{OPNEMEN_AFLUISTEREN}) ; calling macro
that records or plays the choosen
; voiceprompt
exten => s,n,Goto(s,1)
[macro-play_recording]
;;;;;;;;;;;
; ARG1 = file name
; ARG2 = 1 record 2 play
exten => s,1,Goto(s-${ARG2},
1
) ; goto
the proper extension based on the choice
; between
recording or playing
exten => s-1,1,Playback(beep)
exten => s-1,n,Wait(1)
exten => s-1,n,Playback(beep)
exten => s-1,n,Record(plaza/$
{ARG1
}:alaw
) ; after
2 beeps the recording starts
exten => s-2,1,Playback(plaza/$
{ARG1
}) ; the
chosen file is played
[macro-bestandsnaam] ; this macro matches the voiceprompt number
with the voiceprompt file name. You can adjust this macro to your own
needs
;;;;;;;;;;;;;;;;;
; ARG1= number on the voiceprompt list
;;;;;;;;;;;;;;;;;
exten => s,1,Goto(s-${ARG1},1)
exten => s-afspelen,1,Playback(plaza/${ARG1})
exten => s-opnemen,1,Record(plaza/${MACRO_RESULT})
exten => s-01,1,Set(MACRO_RESULT=welkom) ; welcome
exten => s-02,1,Set(MACRO_RESULT=menu) ;
Please press 1 for receptions, 2 for the registration department, 3
for communcation and 4 for
finance
exten => s-03,1,Set(MACRO_RESULT=external_transfer) ; the call
will be transfered to an external phone
exten => s-04,1,Set(MACRO_RESULT=invalid_input) ; invalid
input
exten => s-05,1,Set(MACRO_RESULT=goodbye) ; goodbye
exten => s-06,1,Set(MACRO_RESULT=no_autorisation) ; the number
you dialed doesn't exist or you do not have the proper permissions to
dial this
; number
exten => s-07,1,Set(MACRO_RESULT=record_listen) ; press 1
for recording or 2 for listening
exten => s-08,1,Set(MACRO_RESULT=voiceprompt_nummer) ; please enter
the voiceprompt number
exten => s-09,1,Set(MACRO_RESULT=not_answered) ; the call is
not answered
exten => _s-ZX,1,Playback(plaza/invalid_input) ; when the number
is not in the above list
>>>>>>>>>>>>>>>>>>>
;sip.conf
; the sip phones entries
; most phones will work with this setup I think
;;;;;;;;;;;;;;;;;;;;;
[5000]
;;;;;;;;;;;;;
; receptie
; sipura ata
;;;;;;;;;;;;;
type=friend
context=5000
secret=plaza
host=dynamic
dtmfmode=rfc2833
callerid="5000" <5000>
disallow=all
allow=alaw
[5001]
;;;;;;;;;;;
;afdeling registratie
; E61
;;;;;;;;;;;
type=friend
context=5001
secret=plaza
host=dynamic
dtmfmode=rfc2833
callerid="5001" <5001>
disallow=all
allow=alaw
[5002]
;;;;;;;;;;;;;;
;zyxel w2000 1
;;;;;;;;;;;;;
type=friend
context=5002
secret=plaza
dtmfmode=rfc2833
host=dynamic
callerid="5002" <5002>
disallow=all
allow=alaw
[5003]
;;;;;;;;;;;;;;;;
;zyxel w2000 2
;;;;;;;;;;;;;;;;
type=friend
username=5003
context=5003
secret=plaza
dtmfmode=rfc2833
host=dynamic
callerid="5003" <5003>
disallow=all
allow=alaw
;>>>>>>>>>>>>>>>>
More information about the asterisk-users
mailing list