Hi,<br><br>I&#39;ve ran into an issue with a PRI provider in a major metropolitan area that I haven&#39;t needed to deal with before and I was hoping someone might have some insight on how to handle this within the Asterisk dialplan.<br>
<br>At this location users can&#39;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.<br>
<br>As a result, users are complaining that they are constantly having to redial with or without the 1. I&#39;ve tracked down this behavior when a call fails:<br><br>&nbsp;&nbsp;&nbsp; -- Executing [5551515121@internal:1] Set(&quot;SIP/user9-b696fb58&quot;, &quot;GROUP(default)=dialpool&quot;) in new stack<br>
&nbsp;&nbsp;&nbsp; -- Executing [5551515121@internal:2] GotoIf(&quot;SIP/user9-b696fb58&quot;, &quot;1?5&quot;) in new stack<br>&nbsp;&nbsp;&nbsp; -- Goto (internal,5551515121,5)<br>&nbsp;&nbsp;&nbsp; -- Executing [5551515121@internal:5] Set(&quot;SIP/user9-b696fb58&quot;, &quot;GROUP(default)=dialpool&quot;) in new stack<br>
&nbsp;&nbsp;&nbsp; -- Executing [5551515121@internal:6] Answer(&quot;SIP/user9-b696fb58&quot;, &quot;&quot;) in new stack<br>&nbsp;&nbsp;&nbsp; -- Executing [5551515121@internal:7] Set(&quot;SIP/user9-b696fb58&quot;, &quot;CALLERID(num)=5552223333&quot;) in new stack<br>
&nbsp;&nbsp;&nbsp; -- Executing [5551515121@internal:8] Set(&quot;SIP/user9-b696fb58&quot;, &quot;CALLERID(name)=HiThere&quot;) in new stack<br>&nbsp;&nbsp;&nbsp; -- Executing [5551515121@internal:9] NoOp(&quot;SIP/user9-b696fb58&quot;, &quot;--out the pri--&quot;) in new stack<br>
&nbsp;&nbsp;&nbsp; -- Executing [5551515121@internal:10] Dial(&quot;SIP/user9-b696fb58&quot;, &quot;Zap/G2/15551515121&quot;) in new stack<br>&nbsp;&nbsp;&nbsp; -- Requested transfer capability: 0x00 - SPEECH<br>&nbsp;&nbsp;&nbsp; -- Called G2/15551515121<br>&nbsp;&nbsp;&nbsp; -- Zap/22-1 is proceeding passing it to SIP/user9-b696fb58<br>
&nbsp;&nbsp;&nbsp; -- PROGRESS with cause code 31 received<br>&nbsp;&nbsp;&nbsp; -- Zap/22-1 is making progress passing it to SIP/user9-b696fb58<br>&nbsp;&nbsp;&nbsp; -- Hungup &#39;Zap/22-1&#39;<br>&nbsp; == Spawn extension (internal, 5551515121, 10) exited non-zero on &#39;SIP/user9-b696fb58&#39;<br>
<br>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 &#39;You do not need to dial a one or zero...&#39; and the message repeats indefinitely.<br>
<br>I&#39;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&#39;ve tried this so far:<br><br>exten =&gt; _NXXXXXXXXX,1,Set(GROUP(default)=dialpool)<br>
exten =&gt; _NXXXXXXXXX,2,GotoIf($[${GROUP_COUNT(priout@default)}&lt;19]?5)<br>exten =&gt; _NXXXXXXXXX,3,GotoIf($[${GROUP_COUNT(congest@default)}&gt;18]?BLOCK)<br>exten =&gt; _NXXXXXXXXX,4,NoOp<br>exten =&gt; _NXXXXXXXXX,5,Set(GROUP(default)=dialpool)<br>
exten =&gt; _NXXXXXXXXX,6,Answer()<br>exten =&gt; _NXXXXXXXXX,7,Set(CALLERID(num)=${CLR})<br>exten =&gt; _NXXXXXXXXX,8,Set(CALLERID(name)=HiThere)<br>exten =&gt; _NXXXXXXXXX,9,NoOp(--out the pri--)<br>; Primary Dialout<br>
exten =&gt; _NXXXXXXXXX,10,Dial(Zap/G2/1${EXTEN})<br>exten =&gt; _NXXXXXXXXX,11,GotoIf,($[${HANGUPCAUSE} = 31]?YAY)<br>exten =&gt; _NXXXXXXXXX,12,Hangup()<br>; Call limiter<br>exten =&gt; _NXXXXXXXXX,n(BLOCK),Answer()<br>
exten =&gt; _NXXXXXXXXX,n(BLOCK),Playback(all-circuits-busy-now)<br>exten =&gt; _NXXXXXXXXX,n(BLOCK),Playback(pls-try-call-later)<br>exten =&gt; _NXXXXXXXXX,n(BLOCK),Hangup()<br>; 1 tester<br>exten =&gt; _NXXXXXXXXX,n(YAY),Answer()<br>
exten =&gt; _NXXXXXXXXX,n(YAY),Playback(beep)<br>exten =&gt; _NXXXXXXXXX,n(YAY),Hangup()<br><br>It doesn&#39;t work. The user simply hangs up when the message is heard and the next line in the dialplan isn&#39;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 <a href="http://voip-info.org">voip-info.org</a> ( <a href="http://www.voip-info.org/wiki/index.php?page=Asterisk+variable+hangupcause">http://www.voip-info.org/wiki/index.php?page=Asterisk+variable+hangupcause</a> ) this should work. What am I missing?<br>
<br>The server is running Asterisk <a href="http://1.4.21.1">1.4.21.1</a>, zaptel 1.4.11, libpri 1.4.5, compiled from source.<br><br>Thanks in advance!<br>