if you set the channel variable &#39;session_in_hangup_hook=true&#39; early in the call, the session will be present in your script.<br><br><br><br><div class="gmail_quote">2009/3/31 Keith Laaks <span dir="ltr">&lt;<a href="mailto:keithl@voxtelecom.co.za">keithl@voxtelecom.co.za</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">








<div link="blue" vlink="purple" lang="EN-US">

<div>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);">Hi,</span></p>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);">Here is what I am trying to accomplish:</span></p>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">//--- completecall.js trigged via api_hangup_hook ----</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);"> </span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">use(&quot;CURL&quot;);</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);"> </span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">const loglevel=&#39;notice&#39;;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">var uuid =
request.getHeader(&quot;Core-UUID&quot;);    </span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">var billmsec = request.getHeader(&quot;billmsec&quot;);</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">var urlrequest = &quot;UUID=&quot; + uuid + &quot;&amp;billmsec=&quot;
+ billmsec;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);"> </span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">function reply_callback(string, arg) {</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">  string =
string.substring(string.search(&quot;API&quot;)+3);</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">  string =
string.substring(0,string.search(&quot;&lt;&quot;));</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">  var splits = string.split(&quot;~&quot;);</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">  var i = 0;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">  var length = splits.length;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">  for (i=0; i &lt; length; i++) {</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">    var fv=splits[i].split(&quot;=&quot;);</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">    console_log(loglevel, &quot;setting: &quot; +
fv[0] + &quot; = &quot; + fv[1] + &quot;\n&quot;);</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">    //session.setVariable(fv[0],fv[1]); // Cant
use set here as the session is dead by now - the call has been terminated</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">  }</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">  return true;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">}</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);"> </span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">var curl = new CURL();</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">console_log(loglevel,&quot;-- completecall.js -&gt;&quot; + url
+ &quot;?&quot; + urlrequest + &quot;\n&quot;);</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);"> </span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">var env = request.dumpENV(&quot;text&quot;);  // debug</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">console_log(&quot;ENV:\n&quot;, env + &quot;\n&quot;); // debug</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);"> </span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">curl.run(&quot;POST&quot;,
&quot;<a href="http://127.0.0.1:10502/rate" target="_blank">http://127.0.0.1:10502/rate</a>&quot;, urlrequest, reply_callback,
&quot;CBrate\n&quot;);</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">//returns string like
&lt;sometag&gt;APIcharge=10.20&lt;/sometag&gt;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);"> </span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">exit();</span></p>

<div style="border-style: none none solid; border-color: -moz-use-text-color -moz-use-text-color windowtext; border-width: medium medium 1pt; padding: 0cm 0cm 1pt;">

<p style="border: medium none ; padding: 0cm;"><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);"> </span></p>

</div>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);"> </span></p>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);">So the trick is that I am accessing an external system via CURL where
the call rate is calculated and returned (based on the call duration and uuid).
</span></p>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);">Now I need to use a ‘setVariable’ to get it back as
one of the parameters that the cdr module can write out for me.</span></p>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);">Note that in the above, the external system will return ‘charge=value’.
</span></p>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);">I need to set the variable ‘charge’ to the value in ‘value’.</span></p>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);">Then using the config below, ‘charge’ can be written
out as one of the cdr fields.</span></p>

<div style="border-style: none none solid; border-color: -moz-use-text-color -moz-use-text-color windowtext; border-width: medium medium 1pt; padding: 0cm 0cm 1pt;">

<p style="border: medium none ; padding: 0cm;"><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);"> </span></p>

</div>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);"> </span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">&lt;configuration name=&quot;cdr_csv.conf&quot; description=&quot;CDR
CSV Format&quot;&gt;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">  &lt;settings&gt;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">    &lt;!-- &#39;cdr-csv&#39; will always be appended to
log-base --&gt;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">    &lt;!--&lt;param name=&quot;log-base&quot;
value=&quot;/var/log&quot;/&gt;--&gt;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">    &lt;param name=&quot;default-template&quot;
value=&quot;def&quot;/&gt;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">    &lt;!-- This is like the info app but after
the call is hung up --&gt;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">    &lt;param name=&quot;debug&quot;
value=&quot;true&quot;/&gt;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">    &lt;param name=&quot;rotate-on-hup&quot;
value=&quot;true&quot;/&gt;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">    &lt;!-- may be a b or ab --&gt;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">    &lt;param name=&quot;legs&quot;
value=&quot;a&quot;/&gt;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">  &lt;/settings&gt;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">  &lt;templates&gt;</span></p>

<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">     &lt;template name=&quot;def&quot;&gt;&quot;${accountcode}&quot;,&quot;${billsec}&quot;,&quot;${charge}&quot;,&quot;${sip_req_user}&quot;,&quot;${hangup_cause}&quot;,&quot;${uuid}&quot;,&quot;${bleg_uuid}&quot;&lt;/template&gt;</span></p>


<p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">  &lt;/templates&gt;</span></p>

<div style="border-style: none none solid; border-color: -moz-use-text-color -moz-use-text-color windowtext; border-width: medium medium 1pt; padding: 0cm 0cm 1pt;">

<p style="border: medium none ; padding: 0cm;"><span style="font-size: 11pt; font-family: &quot;Courier New&quot;; color: rgb(31, 73, 125);">&lt;/configuration&gt;</span></p>

</div>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);">Best Regards</span></p>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);">Keith</span></p>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

<p><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

<div style="border-style: solid none none; border-color: rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color; border-width: 1pt medium medium; padding: 3pt 0cm 0cm;">

<p><b><span style="font-size: 10pt;">From:</span></b><span style="font-size: 10pt;"> Anthony Minessale
[mailto:<a href="mailto:anthony.minessale@gmail.com" target="_blank">anthony.minessale@gmail.com</a>] <br>
<b>Sent:</b> 31 March 2009 00:13<br>
<b>To:</b> <a href="mailto:freeswitch-users@lists.freeswitch.org" target="_blank">freeswitch-users@lists.freeswitch.org</a><br>
<b>Subject:</b> Re: [Freeswitch-users] Javascript, Hanguphooks,CDRs and User
Variables.</span></p>

</div><div><div></div><div class="h5">

<p> </p>

<p style="margin-bottom: 12pt;">in your script called via
api_hangup_hook:<br>
<br>
var env = request.dumpENV(&quot;text&quot;);<br>
<br>
consoleLog(&quot;info&quot;, env);<br>
<br>
all those vars are there for you, you can get the individually with <br>
var hval = request.getHeader(&quot;some_header&quot;);<br>
<br>
</p>

<div>

<p>2009/3/30 Keith Laaks &lt;<a href="mailto:keithl@voxtelecom.co.za" target="_blank">keithl@voxtelecom.co.za</a>&gt;</p>

<div>

<div>

<p>Hi,</p>

<p> </p>

<p>I have an application where my Javascript hanguphook code calculates a value
(e.g. the cost of the call which can only be calculated post hangup) and I need
to have that value appear as a field in the cdrs.</p>

<p> </p>

<p>As the ‘session’ object is no longer available for javascript
logic post hangup, I can’t figure out how to ‘set’ a user
variable post hangup, such that it can be written to the cdr when the state
changes from  CS_HANGUP -&gt; CS_REPORTING.  Maybe it’s just
not possible……? It would be a pity to have to resort to writing out
cdrs from the javascript itself and duplicating what fs does so well already.</p>

<p> </p>

<p>Any advice / suggestions would be appreciated.</p>

<p> </p>

<p>Best Regards</p>

<p> </p>

<p><span style="font-size: 10pt; color: black;">Keith</span></p>

<p><span style="font-size: 10pt; color: black;"> </span></p>

</div>

</div>

<p style="margin-bottom: 12pt;"><br>
_______________________________________________<br>
Freeswitch-users mailing list<br>
<a href="mailto:Freeswitch-users@lists.freeswitch.org" target="_blank">Freeswitch-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a></p>

</div>

<p><br>
<br clear="all">
<br>
-- <br>
Anthony Minessale II<br>
<br>
FreeSWITCH <a href="http://www.freeswitch.org/" target="_blank">http://www.freeswitch.org/</a><br>
ClueCon <a href="http://www.cluecon.com/" target="_blank">http://www.cluecon.com/</a><br>
<br>
AIM: anthm<br>
<a href="mailto:MSN%3Aanthony_minessale@hotmail.com" target="_blank">MSN:anthony_minessale@hotmail.com</a><br>
GTALK/JABBER/<a href="mailto:PAYPAL%3Aanthony.minessale@gmail.com" target="_blank">PAYPAL:anthony.minessale@gmail.com</a><br>
IRC: <a href="http://irc.freenode.net" target="_blank">irc.freenode.net</a> #freeswitch<br>
<br>
FreeSWITCH Developer Conference<br>
<a href="mailto:sip%3A888@conference.freeswitch.org" target="_blank">sip:888@conference.freeswitch.org</a><br>
<a href="http://iax:guest@conference.freeswitch.org/888" target="_blank">iax:guest@conference.freeswitch.org/888</a><br>
<a href="mailto:googletalk%3Aconf%2B888@conference.freeswitch.org" target="_blank">googletalk:conf+888@conference.freeswitch.org</a><br>
pstn:213-799-1400</p>

</div></div></div>

</div>


<br>_______________________________________________<br>
Freeswitch-users mailing list<br>
<a href="mailto:Freeswitch-users@lists.freeswitch.org">Freeswitch-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Anthony Minessale II<br><br>FreeSWITCH <a href="http://www.freeswitch.org/">http://www.freeswitch.org/</a><br>ClueCon <a href="http://www.cluecon.com/">http://www.cluecon.com/</a><br>
<br>AIM: anthm<br><a href="mailto:MSN%3Aanthony_minessale@hotmail.com">MSN:anthony_minessale@hotmail.com</a><br>GTALK/JABBER/<a href="mailto:PAYPAL%3Aanthony.minessale@gmail.com">PAYPAL:anthony.minessale@gmail.com</a><br>
IRC: <a href="http://irc.freenode.net">irc.freenode.net</a> #freeswitch<br><br>FreeSWITCH Developer Conference<br><a href="mailto:sip%3A888@conference.freeswitch.org">sip:888@conference.freeswitch.org</a><br><a href="http://iax:guest@conference.freeswitch.org/888">iax:guest@conference.freeswitch.org/888</a><br>
<a href="mailto:googletalk%3Aconf%2B888@conference.freeswitch.org">googletalk:conf+888@conference.freeswitch.org</a><br>pstn:213-799-1400<br>