[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