[asterisk-dev] PJSIP Dialog-Info+XML enhancement

Joshua C. Colp jcolp at digium.com
Wed Nov 14 10:26:06 CST 2018


On Wed, Nov 14, 2018, at 12:01 PM, Hans-Peter Jansen wrote:
> [Sorry for resending, but I have to in order to conform to the CLA]
> 
> @Joshua: now that I signed the CLA, may I kindly ask you to look at the code 
> now? Ideas, where/how to get/synthesize call-id, local-tag and remote-tag 
> attributes and the caller info in PJSIP land are appreciated.
> 
> @everyone: this is an attempt to implement Dialog-Info+XML for PJSIP to get on 
> par with chan_sip. It will allow subscribed SNOM phones to display the caller  
> to some monitored extensions and to pick that call up by pressing the 
> corresponding function key without distributing the call in call groups. In 
> Asterisk 1.2 times, this was implemented by the bristuff patches. chan_sip of 
> current Asterisk versions support this feature out of the box.
> 
> On Montag, 29. Oktober 2018 13:56:17 Joshua C. Colp wrote:
> > On Mon, Oct 29, 2018, at 1:47 PM, Hans-Peter Jansen wrote:
> > > Dear Asterisk developers,
> > > 
> > > in an attempt to add the missing pieces in
> > > res/res_pjsip_dialog_info_body_generator.c to provide a similar
> > > Dialog-Info+XML implementation, as what chan_sip.so provides already,
> > > I invested the better part of today, but things seem to be much more
> > > complicated in PJSIP land (at least for somebody, who started to look
> > > at this code today).
> > > 
> > > This is the only missing functionality, that keeps me from transitioning
> > > to PJSIP, and, if I read the various related complains correctly, a lot of
> > > other Asterisk users as well.
> > > 
> > > What I found out so far:
> > > 
> > > PJSIP version:
> > > 
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="3"
> > > state="full" entity="sip:62 at 192.168.23.2:15060">
> > > 
> > >   <dialog id="62" direction="recipient">
> > >   
> > >    <state>early</state>
> > >   
> > >   </dialog>
> > >  
> > >  </dialog-info>
> > 
> > The information does not currently exist in PJSIP, 'nor does it get passed
> > in. The chan_sip module has special logic (find_ringing_channel) local to
> > it to gather the information it thinks is correct which is then placed into
> > the message. The same kind of thing would need to be done in PJSIP.
> 
> First of all, thanks for your instant response, Joshua.
> 
> Here's, where I got with some hackery today (attached):
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="1" 
> state="full" entity="sip:62 at 192.168.23.2:15060">
>  <dialog id="62" direction="recipient">
>   <remote>
>    <identity display>sip:000413414123 at 192.168.23.2</identity>
>    <target uri="sip:000413414123 at 192.168.23.2" />
>   </remote>
>   <local>
>    <identity display="hp Office 2">sip:62 at 192.168.23.2:15060</identity>
>    <target uri="sip:62 at 192.168.23.2:15060" />
>   </local>
>   <state>early</state>
>  </dialog>
> </dialog-info>
> 
> Remote is still wrong, it's a local extension, and I also have no idea ATM, 
> where to fetch call-id, local-tag and remote-tag attributes. It also makes
> asterisk not to exit gracefully anymore after hitting ^C.
> 
> May I kindly ask you to take a look at it?

The chan_sip module appears to use the information of the underlying subscription for the call-id and tags. This can be retrieved using the ast_sip_subscription_get_dialog function to get the dialog, and then accessed on it[1]. Specifically call_id, local, and remote. Can you clarify what you mean by "Remote is still wrong". As well on a cursory glance I don't see anything that would explain the ^C problem, but it's possible there is a memory issue within it that I don't see immediately.

[1] https://www.pjsip.org/pjsip/docs/html/structpjsip__dialog.htm

-- 
Joshua C. Colp
Digium - A Sangoma Company | Senior Software Developer
445 Jan Davis Drive NW - Huntsville, AL 35806 - US
Check us out at: www.digium.com & www.asterisk.org



More information about the asterisk-dev mailing list