<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html><body>
<p>Greetings.</p>
<p>I have next feature in features.conf :</p>
<p>send =&gt; *9,peer/both,AGI,/etc/asterisk/agi/map_mail.pl</p>
<p>What it does is parsing CALLERID and DNID from AGI input, performing some actions in MySQL with these values, and then running application for peer (for example, PlayBack)</p>
<p>Sounds simple, and it really is. When my user is receiving a call (we are the B leg) and presses *9, everything works perfectly.</p>
<p>However, there is a problem if we are the A leg. For some reason, variables parsed from AGI input are not real for current call.</p>
<p>For example, my SIP user 405 calls PSTN number, let's s say 0442010000, via PRI.</p>
<p>AGI debug output in console shows next:</p>
<p><span class="postbody">AGI Tx &gt;&gt; agi_request: /etc/asterisk/agi/map_mail.pl <br /> AGI Tx &gt;&gt; agi_channel: Zap/63-1 <br /> AGI Tx &gt;&gt; agi_language: en <br /> AGI Tx &gt;&gt; agi_type: Zap <br /> AGI Tx &gt;&gt; agi_uniqueid: 1322049810.4307 <br /> AGI Tx &gt;&gt; agi_callerid: 0442010000 <br /> AGI Tx &gt;&gt; agi_calleridname: unknown <br /> AGI Tx &gt;&gt; agi_callingpres: 3 <br /> AGI Tx &gt;&gt; agi_callingani2: 0 <br /> AGI Tx &gt;&gt; agi_callington: 0 <br /> AGI Tx &gt;&gt; agi_callingtns: 0 <br /> AGI Tx &gt;&gt; agi_dnid: 481 <br /> AGI Tx &gt;&gt; agi_rdnis: unknown <br /> AGI Tx &gt;&gt; agi_context: from_pstn <br /> AGI Tx &gt;&gt; agi_extension: <br /> AGI Tx &gt;&gt; agi_priority: 1 <br /> AGI Tx &gt;&gt; agi_enhanced: 0.0 <br /> AGI Tx &gt;&gt; agi_accountcode: </span></p>
<p>As we can see here, the DNID and CALLERID are swapped (idk, maybe it is intended behavior).&nbsp; However, that is not a problem. The problem is - it shows 481, but we are calling from 405!</p>
<p>Okay, I said, I will pass the ${DNID} and ${CALLERID} to my script as parameters. Then I run <strong>show channel</strong> on my B leg (i.e. Zap/63-1, opposed to SIP/405-somecallid) to see what these variables are, and I see next:</p>
<p><span class="postbody">Caller ID: 0442010000 <br /> Caller ID Name: (N/A) <br /> <span style="color: #000000;"><strong style="color: #ffa34f;"></strong></span>DNID Digits: 408 </span></p>
<p><span class="postbody">(it is another call, so DNID differs, but it is still not 405)</span></p>
<p><span class="postbody">As far as I understand from manuals, by setting "peer" in my features.conf I make script being launched for the other side from user, who pressed *9 - on B leg, if the call is outgoing.</span></p>
<p>And as I can see from what I get here,<span class="postbody"> script receives information for its leg - and gets the wrong information in situation described above.</span></p>
<p>The question is - is this really the way Asterisk works with channel variables, or am I doing something wrong?<span class="postbody"></span></p>
<p>And if the problem is me - how can I receive 100% correct information for current call, not depending on if it is launched on caller or callee side?<span class="postbody"><br /></span></p>
<p><span class="postbody">My Asterisk version is Asterisk SVN-branch-1.4-r290100 and I really hope that I will not have to update it because it will be a long and hard quest due to old and broken PRI card drivers 8(<br /></span></p>
<p><span class="postbody"><br />Hope for some wisdom and help.</span></p>
<div>
<pre><span class="sig"><span style="color: #999999;">-- </span><br /><span style="color: #999999;">With Best Regards</span><br /><span style="color: #999999;"><a title="mailto:mlischuk@itx.com.ua" href="mailto:mlischuk@itx.com.ua">Mikhail Lischuk</a></span><br /><br /><span style="color: #999999;">ITX Ukraine</span></span></pre>
<span style="color: #999999;"></span></div>
</body></html>