Tony Mountifield
2005-Sep-08 09:34 UTC
[Asterisk-Users] How to cascade dial status back through IAX
On machine A I have something like the following in extensions.conf: [iax-extensions] exten => _9.,1,Dial(IAX2/machineB/${EXTEN:1}@mycontext) exten => _9.,2,NoOp(DIALSTATUS=${DIALSTATUS}) exten => _9.,3,Hangup On machineB I have something like this: [mycontext] exten => 2002,1,Dial(SIP/2002,60) exten => 2002,2,NoOp(DIALSTATUS=${DIALSTATUS}) exten => 2002,3,Hangup If I use a phone on machineA to dial 92002, then of course 2002 rings. If 2002 is busy, then on machineB's console I see the NoOp command with DIALSTATUS=BUSY, as expected. However, on machineA's console I see DIALSTATUS=NOANSWER. If I change machineB to this: [mycontext] exten => 2002,1,Dial(SIP/2002,60) exten => 2002,2,NoOp(DIALSTATUS=${DIALSTATUS}) ;exten => 2002,3,Hangup exten => 2002,3,Goto(s-${DIALSTATUS},1) exten => s-BUSY,1,Busy exten => s-CONGESTION,1,Congestion exten => s-NOANSWER,1,Hangup exten => s-CHANUNAVAIL,1,Hangup then I correctly get DIALSTATUS=BUSY on the originating machineA. Is there a way to get Dial automatically to pass these failure statuses back to the incoming channel automatically, rather than having to trap each possible failure and return it manually? Something like an option to Dial which means "never return, just pass status back to the originating channel". I couldn't find such an option. (If I just delete everything after the Dial line in mycontext, then it still returns from Dial, and times out waiting for a new extension.) Cheers Tony -- Tony Mountifield Work: tony@softins.co.uk - http://www.softins.co.uk Play: tony@mountifield.org - http://tony.mountifield.org