[asterisk-users] Dealing with progress codes

Juan Rodríguez jerdguez at gmail.com
Tue Oct 28 23:25:45 CDT 2008


Try using a R or r on the Dial command, the R option is better for you in my
opinion.
i.e Dial(Zap/G2/1${EXTEN},30,R) or Dial(Zap/G2/1${EXTEN}|30|R)

The R option is going to generate a ring tone when the callee indicates
ringing and is going wait for an Answer. As Progress is just for early
media, you wont get that message.

For more info on the Dial command see:

http://www.voip-info.org/wiki-Asterisk+cmd+Dial



On Tue, Oct 28, 2008 at 6:56 PM, arkda <thrills3k3r at gmail.com> wrote:

> Some additional information.
>
> I played with ${DIALEDSTATUS} in place of ${HANGUPCAUSE} and got an unusual
> result:
>
> [Oct 28 16:50:54] WARNING[17503]: chan_sip.c:1950 retrans_pkt: Maximum
> retries exceeded on transmission
> NzJlOWI0NjI5NTMwMmEwZTExYzZiZTM5YWY4MDk0MzA. for seqno 2 (Critical Response)
>
> This occurs about a second after the user hangs up on the error message
> being played from the provider. I have a feeling it's trying to execute the
> next step in the dialplan but unable since the caller hung up.
>
> Thoughts, criticism, insults all welcome!
>
>
> On Tue, Oct 28, 2008 at 12:53 PM, arkda <thrills3k3r at gmail.com> wrote:
>
>> Hi,
>>
>> I've ran into an issue with a PRI provider in a major metropolitan area
>> that I haven't needed to deal with before and I was hoping someone might
>> have some insight on how to handle this within the Asterisk dialplan.
>>
>> At this location users can't always tell if a number is long distance or
>> not (there are a lot of area codes and prefixes in the vicinity).
>> Additionally, users are required by the provider to dial the full 10 digit
>> number even if a call is local since a local call could be for a few
>> different area codes and prefixes. The problem is the provider requires a 1
>> in front of the number for long distance calls, but errors out if the call
>> has a 1 in front and the call is local.
>>
>> As a result, users are complaining that they are constantly having to
>> redial with or without the 1. I've tracked down this behavior when a call
>> fails:
>>
>>     -- Executing [5551515121 at internal:1] Set("SIP/user9-b696fb58",
>> "GROUP(default)=dialpool") in new stack
>>     -- Executing [5551515121 at internal:2] GotoIf("SIP/user9-b696fb58",
>> "1?5") in new stack
>>     -- Goto (internal,5551515121,5)
>>     -- Executing [5551515121 at internal:5] Set("SIP/user9-b696fb58",
>> "GROUP(default)=dialpool") in new stack
>>     -- Executing [5551515121 at internal:6] Answer("SIP/user9-b696fb58", "")
>> in new stack
>>     -- Executing [5551515121 at internal:7] Set("SIP/user9-b696fb58",
>> "CALLERID(num)=5552223333") in new stack
>>     -- Executing [5551515121 at internal:8] Set("SIP/user9-b696fb58",
>> "CALLERID(name)=HiThere") in new stack
>>     -- Executing [5551515121 at internal:9] NoOp("SIP/user9-b696fb58",
>> "--out the pri--") in new stack
>>     -- Executing [5551515121 at internal:10] Dial("SIP/user9-b696fb58",
>> "Zap/G2/15551515121") in new stack
>>     -- Requested transfer capability: 0x00 - SPEECH
>>     -- Called G2/15551515121
>>     -- Zap/22-1 is proceeding passing it to SIP/user9-b696fb58
>>     -- PROGRESS with cause code 31 received
>>     -- Zap/22-1 is making progress passing it to SIP/user9-b696fb58
>>     -- Hungup 'Zap/22-1'
>>   == Spawn extension (internal, 5551515121, 10) exited non-zero on
>> 'SIP/user9-b696fb58'
>>
>> The above call was a call that is considered local by the provider. The
>> caller is then redirected to a message (by the provider) saying 'You do not
>> need to dial a one or zero...' and the message repeats indefinitely.
>>
>> I'd like to figure out how to handle this in the dial plan so users do not
>> even know anything happened. To test to see if I could stop the call
>> progress and reroute it I've tried this so far:
>>
>> exten => _NXXXXXXXXX,1,Set(GROUP(default)=dialpool)
>> exten => _NXXXXXXXXX,2,GotoIf($[${GROUP_COUNT(priout at default)}<19]?5)
>> exten => _NXXXXXXXXX,3,GotoIf($[${GROUP_COUNT(congest at default
>> )}>18]?BLOCK)
>> exten => _NXXXXXXXXX,4,NoOp
>> exten => _NXXXXXXXXX,5,Set(GROUP(default)=dialpool)
>> exten => _NXXXXXXXXX,6,Answer()
>> exten => _NXXXXXXXXX,7,Set(CALLERID(num)=${CLR})
>> exten => _NXXXXXXXXX,8,Set(CALLERID(name)=HiThere)
>> exten => _NXXXXXXXXX,9,NoOp(--out the pri--)
>> ; Primary Dialout
>> exten => _NXXXXXXXXX,10,Dial(Zap/G2/1${EXTEN})
>> exten => _NXXXXXXXXX,11,GotoIf,($[${HANGUPCAUSE} = 31]?YAY)
>> exten => _NXXXXXXXXX,12,Hangup()
>> ; Call limiter
>> exten => _NXXXXXXXXX,n(BLOCK),Answer()
>> exten => _NXXXXXXXXX,n(BLOCK),Playback(all-circuits-busy-now)
>> exten => _NXXXXXXXXX,n(BLOCK),Playback(pls-try-call-later)
>> exten => _NXXXXXXXXX,n(BLOCK),Hangup()
>> ; 1 tester
>> exten => _NXXXXXXXXX,n(YAY),Answer()
>> exten => _NXXXXXXXXX,n(YAY),Playback(beep)
>> exten => _NXXXXXXXXX,n(YAY),Hangup()
>>
>> It doesn't work. The user simply hangs up when the message is heard and
>> the next line in the dialplan isn't followed. How can I detect that a call
>> has received a progress code 31 then reroute it to another extension? From
>> what I found on voip-info.org (
>> http://www.voip-info.org/wiki/index.php?page=Asterisk+variable+hangupcause) this should work. What am I missing?
>>
>> The server is running Asterisk 1.4.21.1, zaptel 1.4.11, libpri 1.4.5,
>> compiled from source.
>>
>> Thanks in advance!
>>
>
>
> _______________________________________________
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
>   http://lists.digium.com/mailman/listinfo/asterisk-users
>



-- 
Juan E. Rodríguez
Cel. 829-886-5565
Work: 809-724-9227
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-users/attachments/20081029/8bcd2431/attachment-0001.htm 


More information about the asterisk-users mailing list