[asterisk-dev] AOC in chan_sip

Klaus Darilion klaus.mailinglists at pernau.at
Tue Aug 7 08:48:37 CDT 2007


Hi Wolfgang!

Regarding AOC-encoding/decoding:

For AOC decoding there is already code in libpri.
For AOC encoding you can take a look at 
http://bugs.digium.com/view.php?id=7494

regards
klaus

Wolfgang Pichler schrieb:
> Hi all,
> 
> 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.
> 
> The first one are snom devices - the are supporting AOC with a special 
> SIP INFO Messages which are getsting described here:  
> http://wiki.snom.com/wiki/index.php/Advice_of_charge_%28AOC%29_in_SIP
> 
> The second one are patton gateways - which are using the following SIP 
> INFO Message to transfer the AOC info.
> 
> INFO sip:anonymous at 000.000.000.0:5060 SIP/2.0
> Via: SIP/2.0/UDP 000.000.000.0:5062;branch=z9hG4bKfb0c15d1d
> Max-Forwards: 70
> Content-Length: 60
> To: sip:anonymous at 000.000.000.0:5060;tag=565aadc2bfc3677
> From: sip:0800820300 at 000.000.000.0:5062;tag=2aa3479136cfb29
> Call-ID: 6cdcb36f822cc5f42c24c5a40dbe3c21 at 000.000.000.0
> CSeq: 667497007 INFO
> Supported: timer
> Content-Type: application/QSIG
> Supported: replaces
> User-Agent: Patton SN4638 5BIS UI MxSF v3.2.8.45 00A0BA020142 R4.T 
> 2007-05-28_RFE745 H323 SIP BRI
> 
> 91a11a0201000201213012a10d810346522ea206810100820101820100
> 
> Basicaly the patton gateway does encapsulate the ISDN binary code into a 
> sip info message with Content Type application/QSIG
> 
> Now i do want to implement the patton AOC support within the sip channel.
> 
> The big question now is - where and how to start...
> 
> I have taken a look at the code in chan_sip.c, and i do have some 
> questions about it.
> 
> - The iflist linked list - is this a list with all currently open sip 
> dialogs ?
> - 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.
> 
> 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.
> 
> Here is my code which does generate the SIP INFO Message:
> 
> static int sip_send_aocd_to_peer(struct sip_pvt *p)
> {
>         struct sip_request req;
>         char buf[2048];
> 
>         reqprep(&req, p, SIP_INFO, 0, 1);
>         // Insert already generated ISDN binary for testing purpose
>         snprintf(buf, sizeof(buf), 
> "91a11a0201000201213012a10d810346522ea206810100820101820100");
> /*      add_header(&req, "AOC", buf);
>         add_header_contentLength(&req, 0);  */
> 
>         add_header(&req, "Content-Type", "application/QSIG");
>         add_header_contentLength(&req, strlen(buf));
>         add_line(&req, buf);
> 
>         return send_request(p, &req, 1, p->ocseq);
> }
> 
> this does generate the following sip messages:
> 
> INFO sip:101 at 90.146.5.134:5061 SIP/2.0
> Via: SIP/2.0/UDP 88.198.158.245:5060;branch=z9hG4bK2a0ddade;rport
> From: <sip:031620837999550 at vpbx.yosd.at>;tag=as5f87418c
> To: 101 <sip:101 at vpbx.yosd.at:5061>;tag=868274887
> Contact: <sip:031620837999550 at 88.198.158.245>
> Call-ID: 010D7008-214C-4D45-B75B-F8C6CA2EA09E at 10.200.0.22
> CSeq: 102 INFO
> User-Agent: Commoveo Cockpit
> Max-Forwards: 70
> Content-Type: application/QSIG
> Content-Length: 58
> 
> 91a11a0201000201213012a10d810346522ea206810100820101820100
> 
> 
> 
> Seems to be quit ok - but want work...
> 
> Does anyone here has already tried something like that and can give me a 
> hint about this ?
> 
> I am doing something completly wrong here ?
> 
> Or - does anyone here already have a working aoc implementation for sip ?
> 
> regards,
> Wolfgang Pichler
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> --Bandwidth and Colocation Provided by http://www.api-digital.com--
> 
> asterisk-dev mailing list
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-dev



More information about the asterisk-dev mailing list