The previous attempt at using a pipe to guarantee astcanary shutdown did not work.
[asterisk/asterisk.git] / configs / extensions_minivm.conf.sample
1 ; MINI-VOICEMAIL dialplan example
2 ; ---------------------------------------------------------------------------------------
3 ; ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
4 ;
5 ;
6 ; This is an example on how to use the Mini-Voicemail system to build
7 ; voicemail systems.
8 ;
9 ;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
10 ; A macro to test the MINIVMACCOUNT dialplan function
11 ;       Currently, accountcode and pincode is not used in the application
12 ;       They where added to be used in dialplan scripting
13 ;
14 ;
15 [macro-minivmfunctest]
16 exten => s,1,set(account=${ARGV1})
17 exten => minivm,n,verbose(1,-------------------- Minivm Function test - Accoutn ${account}  -------------)
18 exten => s,n,verbose(1,---- Has account:       ${MINIVMACCOUNT(${account}:hasaccount)})
19 exten => s,n,verbose(1,---- Fullname:          ${MINIVMACCOUNT(${account}:fullname)})
20 exten => s,n,verbose(1,---- Email:             ${MINIVMACCOUNT(${account}:email)})
21 exten => s,n,verbose(1,---- Pager:             ${MINIVMACCOUNT(${account}:pager)})
22 exten => s,n,verbose(1,---- E-mail template:   ${MINIVMACCOUNT(${account}:etemplate)})
23 exten => s,n,verbose(1,---- Pager template:    ${MINIVMACCOUNT(${account}:ptemplate)})
24 exten => s,n,verbose(1,---- Account code:      ${MINIVMACCOUNT(${account}:accountcode)})
25 exten => s,n,verbose(1,---- Path:              ${MINIVMACCOUNT(${account}:path)})
26 exten => s,n,verbose(1,---- Pincode:           ${MINIVMACCOUNT(${account}:pincode)})
27 exten => s,n,verbose(1,---- Time zone:         ${MINIVMACCOUNT(${account}:timezone)})
28 exten => s,n,verbose(1,---- Language:          ${MINIVMACCOUNT(${account}:language)})
29 ; This requires setvar=customerclass=gold in the account configuration
30 exten => s,n,verbose(1,---- Var:customerclass: ${MINIVMACCOUNT(${account}:customerclass)})
31
32 [minivm-scenario1]
33 ; minivmtest tests the dialplan function MINIVMACCOUNT
34 ; Check the output in the console with verbose set
35 exten => minivmtest,1,answer
36 exten => minivmtest,n,wait(0.5)
37 exten => minivmtest,n,set(ACCOUNT=do-not-spam-me@example.com)
38 exten => minivmtest,n,macro(minivmfunctest, ${ACCOUNT})
39 exten => minivmtest,n,playback(beep)
40 exten => minivmtest,n,hangup
41
42 ;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
43 ; "minivm" tests a full scenario
44 ; Remember that users may hangup
45 ; This works both for users with accounts in minivm.conf and by just giving an e-mail address
46 ; without configuring an account
47 exten => minivm,1,answer
48 exten => minivm,n,wait(0.5)     ; Wait for Voip channels to settle
49 exten => minivm,n,set(account=oej@example.com)
50 exten => minivm,n,noop(------------------------------------------- Minivm Greet   -------------)
51 exten => minivm,n,minivmgreet(${account})
52 exten => minivm,n,verbose(1,-- MINIVM_GREET_STATUS = ${MINIVM_GREET_STATUS} )
53 exten => minivm,n,noop(------------------------------------------- Minivm Record  -------------)
54 exten => minivm,n,minivmRecord(${account},b)
55 exten => minivm,n,goto(minivmcleanup,1)
56
57 ; Cleanup after recording or hangup
58 exten => minivmcleanup,1,noop(------------------------------------------- Minivm Notify  -------------)
59 ;Increment voicemail counter with 1. The counter will be used in the e-mail message
60 ;and in the filename
61 exten => minivmcleanup,n,gotoif($[${MINIVM_RECORD_STATUS} != SUCCESS]?minivmrecordfailure,1)
62 exten => minivmcleanup,n,set(MINIVMCOUNTER(${account}:voicemailcounter:inc)=1)
63 exten => minivmcleanup,n,set(MVM_COUNTER = ${MINIVMCOUNTER(${account}:voicemailcounter)})
64 exten => minivmcleanup,n,minivmNotify(${account})
65 exten => minivmcleanup,n,verbose(1,-- MINIVM_NOTIFY_STATUS = ${MINIVM_NOTIFY_STATUS} )
66 ; Now, clean up after sending voicemail
67 exten => minivmcleanup,n,noop(------------------------------------------- Minivm Delete  -------------)
68 exten => minivmcleanup,n,minivmdelete()
69 exten => minivmcleanup,n,verbose(1,-- MINIVM_DELETE_STATUS = ${MINIVM_DELETE_STATUS} )
70
71 ;Recording failed
72 exten => minivmrecordfailure,1,playback(vm-sorry)
73 exten => minivmrecordfailure,n,wait(1)
74 exten => minivmrecordfailure,n,hangup
75
76 ; If the user hangs up during the recording, we need to clean up
77 ; And send notifications
78 exten => h,1,gotoif($[x${MINIVM_DELETE_STATUS} != x] ?h,stop)
79 exten => h,n,noop(------------------------------------------- HANGUP during voicemail recording   -------------)
80 exten => h,n,goto(minivmcleanup,1)
81 exten => h,n(stop),noop(---Minivm DONE----)
82
83 ;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
84 ; Extension to record a greeting message
85 ; Call this like:
86 ;       macro(recordgreetings,alice@atlanta.example.com)
87 ;
88 [macro-recordgreetings]
89 exten => s,1,answer
90 exten => s,n,wait(0.5)
91 exten => s,n,set(account=${ARGV1])
92 ; This file give extra options not available here, needs to be edited
93 ; Change of password does not work
94 exten => s,n(menu),background(vm-options)
95 exten => 1,1,setvar(option=u)
96 exten => 1,n,macro(minivmrec,${account},${option})
97 exten => 1,n,goto(menu)
98 exten => 2,1,setvar(option=b)
99 exten => 2,n,macro(minivmrec,${account},${option})
100 exten => 2,n,goto(menu)
101 exten => 3,1,setvar(option=n)
102 exten => 3,n,macro(minivmrec,${account},${option})
103 exten => 3,n,goto(menu)
104 exten => 4,1,setvar(option=t)
105 exten => 4,n,macro(minivmrec,${account},${option})
106 exten => 4,n,goto(menu)
107 exten => *,1,playback(vm-thankyou)
108 exten => *,n,wait(1)
109 exten => *,n,hangup
110
111 exten => i,1,playback(invalid)
112 exten => i,n,goto(menu)
113
114 [macro-minivmrec]
115 exten => s,1,gotoif(${MINIVMACCOUNT(${account}:hasaccount)}?record)
116 ; Account is not configured in minivm.conf or realtime
117 ; Phony message, add something useful here
118 exten => s,n,playback(privacy-incorrect)
119 exten => s,n,macroreturn
120 exten => record,1,minivmappmess(${ARGV1},${ARGV2})
121 exten => record,n,noop(Recording status: ${MINIVM_APPMESS_STATUS})
122 exten => record,n,macroreturn
123
124 ;.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
125 ; To set a counter and use a template for voicemail to users without acounts
126 ; use something like this
127 ;
128 ; email address is in the "account" channel variable. Set from ast_db or a script
129 ; based on called ID
130
131 exten => sendvoicemail,1,answer
132 exten => sendvoicemail,n,wait(0.5)
133 exten => sendvoicemail,n,set(domain=${CUT(account,@,2)})
134 exten => sendvoicemail,n,set(country=${CUT(domain,.,2)})
135 exten => sendvoicemail,n,minivmgreet(${account})
136 exten => sendvoicemail,n,minivmRecord(${account},b)
137 exten => sendvoicemail,n,goto(sendvmcleanup)
138
139 exten => sendvmcleanup,1,gotoif($[${MINIVM_RECORD_STATUS} != SUCCESS]?done)
140 ; The counter is set in the domain directory, so we don't create one directory per user
141 ; The counter has the email in the name of the counter, increase it
142 ; Set the MVM_COUNTER variable that we use in the template
143 exten => sendvmcleanup,n,set(MINIVMCOUNTER(${account}:voicemailcounter:inc)=1)
144 exten => sendvmcleanup,n,set(MVM_COUNTER = ${MINIVMCOUNTER(${account}:voicemailcounter)})
145 ; Increase a domain counter too, to see how many voicemails are sent to this domain
146 ; This is just for statistics
147 exten => sendvmcleanup,n,set(MINIVMCOUNTER(${domain}:${domain}-all:inc) = 1)
148
149 ; Send voicemail in e-mail with country-specific template
150 ; The template need to be defined in minivm.conf
151 ;
152 exten => sendvmcleanup,n,minivmNotify(${account}, ${country}_email)
153 exten => sendvmcleanup,n,minivmDelete()
154
155 exten => sendvmcleanup,n(done),wait(0.5)
156 exten => sendvmcleanup,n,hangup
157
158 exten => h,1,gotoif($[${MINIVM_RECORD_STATUS} = SUCCESS]?sendvmcleanup,1))
159