[Asterisk-Users] Voicemail / Dial command issue
Alex Brett
alex.brett at loho.co.uk
Sun Mar 27 12:40:58 MST 2005
Hi,
I have a load of IAX extensions, which I'm trying to set up a standard
macro to dial them, which gives unavailable or busy voicemail if there
is no answer or the phone is in use respectively.
The macro I have at the moment is:
; std-exten macro, ${ARG1} = Device to call, ${ARG2} = voicemail box
[macro-std-exten]
; Call the user for 20 seconds
exten => s,1,Dial(${ARG1},20,tr)
exten => s,2,Goto(s-${DIALSTATUS},1)
; If unavailable, go to voicemail
exten => s-NOANSWER,1,Voicemail(u${ARG2})
exten => s-NOANSWER,2,Hangup
; If busy, go to voicemail
exten => s-BUSY,1,Voicemail(b${ARG2})
exten => s-BUSY,2,Hangup
And the bit of the dial plan that calls this is:
exten => 2002,1,Macro(std-exten,IAX2/2002,2001)
(Ignore the fact I'm using voicemail box 2001, its just as I haven't set
2002 up yet).
Now, from what I can tell this should be fine. The noanswer bit works
perfectly, if I call it and don't answer, I hit voicemail with the
unavailable message, however, if the phone is in use and it gets called,
it also hits the unavailable message rather than the busy message. I've
done a bit of digging and as far as I can tell the Dial command seems to
be ignoring the response from the IAX, take this for example (the
receiving phone (2002) has dialled an extension I've set up that just
plays hold music, and is at x.x.x.x (IPs masked for security reasons).
The dialling phone is at y.y.y.y):
This is extension 2002 calling hold music, nothing strange here:
-- Accepting AUTHENTICATED call from x.x.x.x:
> requested format = ilbc,
> requested prefs = (),
> actual format = ilbc,
> host prefs = (),
> priority = mine
-- Executing MusicOnHold("IAX2/2002 at 2002-1", "") in new stack
-- Started music on hold, class 'default', on IAX2/2002 at 2002-1
This is the call coming in from the second phone to call 2002:
-- Accepting AUTHENTICATED call from y.y.y.y:
> requested format = ilbc,
> requested prefs = (),
> actual format = ilbc,
> host prefs = (ilbc),
> priority = mine
-- Executing Macro("IAX2/asterisk at asterisk-5",
"std-exten|IAX2/2002|2001") in new stack
-- Executing Dial("IAX2/asterisk at asterisk-5", "IAX2/2002|20|tr") in
new stack
-- Called 2002
This seems to make sense, here is the IAX handler saying that the call
was rejected by x.x.x.x as it is In call:
Mar 27 20:26:56 WARNING[25053]: chan_iax2.c:6735 socket_read: Call
rejected by x.x.x.x: In call
-- Hungup 'IAX2/2002-6'
This is what confuses me, as it seems the Dial application (or is it
something else?) is saying that it is a no answer rather than a busy!
== No one is available to answer at this time (1:0/0/0)
At this point it has obviously set the ${DIALSTATUS} to NOANSWER and
hence the rest of the call follows this:
-- Executing Goto("IAX2/asterisk at asterisk-5", "s-NOANSWER|1") in
new stack
-- Goto (macro-std-exten,s-NOANSWER,1)
-- Executing VoiceMail("IAX2/asterisk at asterisk-5", "su2001") in new
stack
-- Playing '/var/spool/asterisk/voicemail/default/2001/unavail'
(language 'en')
== Spawn extension (macro-std-exten, s-NOANSWER, 1) exited non-zero
on 'IAX2/asterisk at asterisk-5' in macro 'std-exten'
== Spawn extension (internal, 2002, 1) exited non-zero on
'IAX2/asterisk at asterisk-5'
-- Hungup 'IAX2/asterisk at asterisk-5'
And finally I hang up extensions 2002:
-- Stopped music on hold on IAX2/2002 at 2002-1
== Spawn extension (internal, 500, 1) exited non-zero on
'IAX2/2002 at 2002-1'
-- Hungup 'IAX2/2002 at 2002-1'
In case it is needed, relevant portions of iax.conf:
[general]
bandwidth=high
allow=all
disallow=lpc10
jitterbuffer=no
notransfer=yes
[2002]
type=friend
username=2002
secret=******
host=dynamic
notransfer=yes
context=internal
If anybody could shed any light on this strange behaviour, it would be
much appreciated, as otherwise I'm just going to have to roll with one
voicemail message which isn't a huge problem, but slightly annoying.
Thanks in advance,
Alex Brett
alex.brett at loho.co.uk
More information about the asterisk-users
mailing list