Hello, I have switched on DND on a SNOM 360. When I call this phone, I get the following output: -- Executing [93 at local:1] Dial("SIP/user4-0821b0e8", "SIP/user3|20|tr") in new stack -- Called user3 -- Got SIP response 480 "Do Not Disturb" back from 192.168.0.34 -- SIP/user3-081f8d20 is circuit-busy == Everyone is busy/congested at this time (1:0/1/0) -- Executing [93 at local:2] Goto("SIP/user4-0821b0e8", "fehler|s-CONGESTION|1") in new stack -- Goto (fehler,s-CONGESTION,1) -- Executing [s-CONGESTION at fehler:1] NoOp("SIP/user4-0821b0e8", ""xCONGESTION"") in new stack -- Executing [s-CONGESTION at fehler:2] Hangup("SIP/user4-0821b0e8", "") in new stack I'm using a separate context to catch the dialstatus [fehler] exten => s-NOANSWER,1,NoOp("xNOANSWER") exten => s-NOANSWER,2,Hangup exten => s-CHANUNAVAIL,1,NoOp("xCHANUNAVAIL") exten => s-CHANUNAVAIL,2,Hangup exten => s-BUSY,1,NoOp("xBUSY") exten => s-BUSY,2,Hangup exten => s-CONGESTION,1,NoOp("xCONGESTION") exten => s-CONGESTION,2,Hangup exten => _s-.,1,NoOp("????") exten => _s-.,2,Hangup Now my question is: Is it possible to tell asterisk that SIP 480 shouldn't result in dialstatus CONGESTION, but in dialstatus BUSY? Thanks for your help, Stefan -- ******************************************** in-put GbR - Das Linux-Systemhaus Stefan-Michael Guenther Geschaeftsfuehrer Moltkestrasse 49 D-76133 Karlsruhe Tel./Fax : +49 (0)721 / 83044 - 98/93 http://www.in-put.de ******************************************** Schulungen Installationen Beratung Support Voice-over-IP-Loesungen ********************************************
15 apr 2008 kl. 12.06 skrev Stefan Guenther:> Hello, > > I have switched on DND on a SNOM 360. When I call this phone, I get > the > following output: > > -- Executing [93 at local:1] Dial("SIP/user4-0821b0e8", > "SIP/user3|20|tr") in new stack > -- Called user3 > -- Got SIP response 480 "Do Not Disturb" back from 192.168.0.34 > -- SIP/user3-081f8d20 is circuit-busy > == Everyone is busy/congested at this time (1:0/1/0) > -- Executing [93 at local:2] Goto("SIP/user4-0821b0e8", > "fehler|s-CONGESTION|1") in new stack > -- Goto (fehler,s-CONGESTION,1) > -- Executing [s-CONGESTION at fehler:1] NoOp("SIP/user4-0821b0e8", > ""xCONGESTION"") in new stack > -- Executing [s-CONGESTION at fehler:2] Hangup("SIP/user4-0821b0e8", > "") in new stack > > I'm using a separate context to catch the dialstatus > > [fehler] > exten => s-NOANSWER,1,NoOp("xNOANSWER") > exten => s-NOANSWER,2,Hangup > > exten => s-CHANUNAVAIL,1,NoOp("xCHANUNAVAIL") > exten => s-CHANUNAVAIL,2,Hangup > > exten => s-BUSY,1,NoOp("xBUSY") > exten => s-BUSY,2,Hangup > > exten => s-CONGESTION,1,NoOp("xCONGESTION") > exten => s-CONGESTION,2,Hangup > > exten => _s-.,1,NoOp("????") > exten => _s-.,2,Hangup > > Now my question is: Is it possible to tell asterisk that SIP 480 > shouldn't result in dialstatus CONGESTION, but in dialstatus BUSY? >Well, 480 translates to AST_CAUSE_NOANSWER - cause 19 - check by checking HANGUPCAUSE instead of DIALSTATUS and you will get many more details. /Olle
The only solution that I found for this is to use Asterisk 1.4 with devstate backport (http://svncommunity.digium.com/svn/russell/asterisk-1.4/func_devstate-1.4/) and use the hints and to determine if it's inuse (or any other status) before the dialing - in order to generate a proper reply. I didn't find a way to handle the SIP 480 reply using Asterisk 1.2 properly. Note that it's an idea I was about to run but I didn't get to it yet. devstate on test machine compiled fine & seems to be working from first sight. Tomer. Stefan Guenther wrote:> Hello, > > I have switched on DND on a SNOM 360. When I call this phone, I get the > following output: > > -- Executing [93 at local:1] Dial("SIP/user4-0821b0e8", > "SIP/user3|20|tr") in new stack > -- Called user3 > -- Got SIP response 480 "Do Not Disturb" back from 192.168.0.34 > -- SIP/user3-081f8d20 is circuit-busy > == Everyone is busy/congested at this time (1:0/1/0) > -- Executing [93 at local:2] Goto("SIP/user4-0821b0e8", > "fehler|s-CONGESTION|1") in new stack > -- Goto (fehler,s-CONGESTION,1) > -- Executing [s-CONGESTION at fehler:1] NoOp("SIP/user4-0821b0e8", > ""xCONGESTION"") in new stack > -- Executing [s-CONGESTION at fehler:2] Hangup("SIP/user4-0821b0e8", > "") in new stack > > I'm using a separate context to catch the dialstatus > > [fehler] > exten => s-NOANSWER,1,NoOp("xNOANSWER") > exten => s-NOANSWER,2,Hangup > > exten => s-CHANUNAVAIL,1,NoOp("xCHANUNAVAIL") > exten => s-CHANUNAVAIL,2,Hangup > > exten => s-BUSY,1,NoOp("xBUSY") > exten => s-BUSY,2,Hangup > > exten => s-CONGESTION,1,NoOp("xCONGESTION") > exten => s-CONGESTION,2,Hangup > > exten => _s-.,1,NoOp("????") > exten => _s-.,2,Hangup > > Now my question is: Is it possible to tell asterisk that SIP 480 > shouldn't result in dialstatus CONGESTION, but in dialstatus BUSY? > > Thanks for your help, > > Stefan >
Hi, Johansson Olle E wrote: >Well, 480 translates to AST_CAUSE_NOANSWER - cause 19 - check by >checking HANGUPCAUSE instead of DIALSTATUS and you will get many more >details. > Great, that's all I need: It gives me more ways to analyse the different reason for the hangup and I can use the different numbers to return different explanations with Playback(). My client doesn't only want to hear the busy signal, but wants to play a file with an explanation why the call couldn't be established. Thanks again, Stefan -- ******************************************** in-put GbR - Das Linux-Systemhaus Stefan-Michael Guenther Geschaeftsfuehrer Moltkestrasse 49 D-76133 Karlsruhe Tel./Fax : +49 (0)721 / 83044 - 98/93 http://www.in-put.de ******************************************** Schulungen Installationen Beratung Support Voice-over-IP-Loesungen ********************************************