<html><head><style type="text/css"><!-- DIV {margin:0px;} P {margin:0px;} --></style></head><body><font face="times new roman, new york, times, serif" size=3><span style="font-family: times new roman,new york,times,serif;"><font size="3">Hi all,<br><br>as far as i know there is no standard way (no RFC...) to implement AOC (AOC-S, AOC-D and AOC-E) within sip. But there are already some devices out there which does support SIP AOC Messages. I am currently playing with 2 of them.<br><br>The first one are snom devices - the are supporting AOC with a special SIP INFO Messages which are getsting described here:&nbsp; </font></span><a target="_blank" href="http://wiki.snom.com/wiki/index.php/Advice_of_charge_%28AOC%29_in_SIP">http://wiki.snom.com/wiki/index.php/Advice_of_charge_%28AOC%29_in_SIP</a><br><br>The second one are patton gateways - which are using the following SIP INFO Message to transfer the AOC info.<br><br>INFO sip:anonymous@000.000.000.0:5060 SIP/2.0<br>Via: SIP/2.0/UDP 000.000.000.0:5062;branch=z9hG4bKfb0c15d1d<br>Max-Forwards: 70<br>Content-Length: 60<br>To: sip:anonymous@000.000.000.0:5060;tag=565aadc2bfc3677<br>From: sip:0800820300@000.000.000.0:5062;tag=2aa3479136cfb29<br>Call-ID: 6cdcb36f822cc5f42c24c5a40dbe3c21@000.000.000.0<br>CSeq: 667497007 INFO<br>Supported: timer<br>Content-Type: application/QSIG<br>Supported: replaces<br>User-Agent: Patton SN4638 5BIS UI MxSF v3.2.8.45 00A0BA020142 R4.T 2007-05-28_RFE745 H323 SIP BRI<br><br>91a11a0201000201213012a10d810346522ea206810100820101820100<br><br>Basicaly the patton gateway does encapsulate the ISDN binary code into a sip info message with Content Type application/QSIG<br><br>Now i do want to implement the patton AOC support within the sip channel.<br><br>The big question now is - where and how to start...<br><br>I have taken a look at the code in chan_sip.c, and i do have some questions about it.<br><br>- The iflist linked list - is this a list with all currently open sip dialogs ?<br>- The do_monitor thread in chan_sip does monitor all currently open dialogs (iflist) and loaded sip peers. It will check if a dialog needs to get destroyed, and so on. So this thread seems to me to be the best starting point.<br><br>What i have tried to do is the following - i have added some extra vars to the iflist struct - so that i can remember when i has sent the last SIP INFO aoc Message. In do_monitor i do check the last time against the current time - and if 1 second is over - then the next SIP INFO AOC message will get generated and send. This does already work - but the generated SIP INFO Messages does not seem to be correct.<br><br>Here is my code which does generate the SIP INFO Message:<br><br>static int sip_send_aocd_to_peer(struct sip_pvt *p)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct sip_request req;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char buf[2048];<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reqprep(&amp;req, p, SIP_INFO, 0, 1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Insert already generated ISDN binary for testing purpose<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; snprintf(buf, sizeof(buf), "91a11a0201000201213012a10d810346522ea206810100820101820100");<br>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add_header(&amp;req, "AOC", buf);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add_header_contentLength(&amp;req, 0);&nbsp; */<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add_header(&amp;req, "Content-Type", "application/QSIG");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add_header_contentLength(&amp;req, strlen(buf));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add_line(&amp;req, buf);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return send_request(p, &amp;req, 1, p-&gt;ocseq);<br>}<br><br>this does generate the following sip messages:<br><br>INFO sip:101@90.146.5.134:5061 SIP/2.0<br>Via: SIP/2.0/UDP 88.198.158.245:5060;branch=z9hG4bK2a0ddade;rport<br>From: &lt;sip:031620837999550@vpbx.yosd.at&gt;;tag=as5f87418c<br>To: 101 &lt;sip:101@vpbx.yosd.at:5061&gt;;tag=868274887<br>Contact: &lt;sip:031620837999550@88.198.158.245&gt;<br>Call-ID: 010D7008-214C-4D45-B75B-F8C6CA2EA09E@10.200.0.22<br>CSeq: 102 INFO<br>User-Agent: Commoveo Cockpit<br>Max-Forwards: 70<br>Content-Type: application/QSIG<br>Content-Length: 58<br><br>91a11a0201000201213012a10d810346522ea206810100820101820100<br><br><br><br>Seems to be quit ok - but want work...<br><br>Does anyone here has already tried something like that and can give me a hint about this ?<br><br>I am doing something completly wrong here ?<br><br>Or - does anyone here already have a working aoc implementation for sip ?<br><br>regards,<br>Wolfgang Pichler<br></font></body></html>