Here is how I solve this.<br><br>In Asterisk, I add a SIP header just before sending it to OpenSER using the function: SipAddHeader(P-hint: From Asterisk).<br><br>Then, in OpenSER I have the following:<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # check to see if user is online<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!lookup(&quot;location&quot;)) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # SIP from Asterisk or not a call attempt<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (search(&quot;(P-hint):.From Asterisk&quot;) || !(method==INVITE)) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sl_send_reply(&quot;480&quot;,&quot;User Temporarily Unavailable&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; route(2);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }; <br><br>route[2] {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Let Asterisk deal with voicemail/forward<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sl_send_reply(&quot;181&quot;, &quot;Forward to Voicemail&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prefix(&quot;vm&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setflag(9);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # forward to Asterisk<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; route(1);<br>}<br><br><br><br><div class="gmail_quote">On Thu, Apr 3, 2008 at 12:50 AM, Cosimo Fadda &lt;<a href="mailto:cosimo.fadda@klarya.it">cosimo.fadda@klarya.it</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi everybody,<br>
I&#39;m using Opeser as Proxy and one Asterisk as Gateway and Voicemail server.<br>
Suppose that an incoming calls arrives to Ser from Asterisk and the user<br>
is offline;<br>
Then Openser sends back the Invite to Asterisk that should activate the<br>
voicemail application but<br>
unfortunately it detects a Loop (482) and rejects the invite.<br>
I think I have to mangle the SIP message in Openser before the send to<br>
Asterisk again.<br>
This is what I currently do:<br>
<br>
if(!lookup(&quot;location&quot;))<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;#send to voicemail if active but not registerd<br>
 &nbsp; &nbsp; &nbsp; &nbsp;xlog(&quot;L_INFO&quot;, &quot;Local user offline - M=$rm RURI=$ru F=$fu T=$tu<br>
IP=$si ID=$ci\n&quot;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if($avp(s:vmail) == &quot;1&quot;)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; route(11);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp;else<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; route(20);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp;}<br>
 &nbsp; &nbsp;else<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; xlog(&quot;L_INFO&quot;, &quot;Local user online - M=$rm RURI=$ru F=$fu T=$tu<br>
IP=$si ID=$ci\n&quot;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;route(9);<br>
 &nbsp; &nbsp;}<br>
 &nbsp; &nbsp;exit;<br>
<br>
....<br>
<br>
route[11]<br>
{<br>
 &nbsp; &nbsp;xlog(&quot;L_INFO&quot;, &quot;Forwarding request to VM\n&quot;);<br>
 &nbsp; &nbsp;prefix(&quot;vm&quot;);<br>
 &nbsp; &nbsp;sethostport(&quot;asterisk-gw:5060&quot;);<br>
 &nbsp; &nbsp;#append_branch();<br>
 &nbsp; &nbsp;if (!t_relay())<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;xlog(&quot;L_INFO&quot;, &quot;Unable TO Forward the request to VM\n&quot;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; route(20);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; exit;<br>
 &nbsp; &nbsp;}<br>
<br>
<br>
What can I do to avoid Loop Detection?<br>
<br>
Thanks in advance,<br>
<br>
Cosimo Fadda<br>
___________<br>
<br>
_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.openser.org">Users@lists.openser.org</a><br>
<a href="http://lists.openser.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.openser.org/cgi-bin/mailman/listinfo/users</a><br>
</blockquote></div><br>