[Asterisk-Users] external voicemail access - solved (mostly)
Steven Kokinos
steve at kokinos.com
Thu Apr 15 07:53:22 MST 2004
thanks to those who replied. I have managed to get the functionality I
was looking for working with a series of Macros. However, it doesn't
work as simply as I would like. There are two issues I've run into:
(1)Goto provides no way to pass variables between one context and
another.
(2)I can't find any way to Goto a specific point within a Macro when
calling it.
Mostly this is a result of the background command listening for
extensions in the current context. If background is run from within a
Macro, then it will terminate the macro and return to the current
context to execute whatever user input was just captured. In order to
get the behavior I'm looking for (user calls into voicemail, presses *
to be prompted for a password and check messages, press # to skip the
greeting and leave a message) I had to have 3 macros:
(1)vm - leave voicemail
(2)vm-nogreet - simply provide a beep
(3)checkmessage
Ideally this would be one larger macro, where the starting point could
be specified as well as passing the arguments along.
[macro-vm]
exten => s,1,Answer
exten => s,2,Background(${VMAILPATH}/${ARG2}/${ARG1}/unavail)
exten => s,3,VoiceMail2(s${ARG1})
exten => s,4,Hangup
[macro-vm-nogreet]
exten => s,1,Answer
exten => s,2,VoiceMail2(s${ARG1})
exten => s,3,Hangup
[macro-checkmessage]
exten => s,1,VoiceMailMain2(${ARG1})
exten => s,2,Hangup
In the inbound context I do the following (xxxxxxx is the rest of the
phone number):
[line-in]
exten => xxxxxx1638,1,Dial(${P1}&${P2}&${P3},25,Tr)
exten => xxxxxx1638,2,Macro(vm,${P1_VM},${P1_VM_CONTEXT})
exten => xxxxxx1638,3,Hangup
exten => *,1,Macro(checkmessage,${P1_VM})
exten => i,1,Macro(vm-nogreet,${P1_VM},${P1_VM_CONTEXT})
This does everything in a fairly general way. However, if anyone knows
how to address my points above this could be done much cleaner in a
single macro (and if there is a way to keep background isolated within
the macro it would be easier still). One note - this will actually
interrupt the greeting and send to the "beep" for voicemail regardless
of what the user presses, as long as it isn't the * key. Since
background will always bounce to here I thought it would be better to
force someone to leave voicemail than get a fast busy with an
inadvertent button press.
-Steve
More information about the asterisk-users
mailing list