I am using the PJSIP driver with yealink, SNOM and Grandstream Phones on Asterisk 13. I am configuring BLF for each of these phones. I can get the basics of BLF to function correctly. I can pickup a call, the states show correctly and I can place a call.

The issue I am having is that I cannot see any call details between remote users. For example: Ext A, Ext B and Ext C are in the same office. Ext A calls Ext B. Ext C can see that Ext B is ringing but cannot see the caller id of the caller (Ext A).

A wireshark trace of the Notify reveals that no information from Ext A is being passed in the Notify message (the and tags are absent). I can see in the old chan_sip drive there was a notifycid option that would populate these tags.

Is there any such option in the PJSIP driver?
Should this just work and I am doing something wrong?

Thanks in advance.

I have found my answer but it is not the one I wanted.
Basically RFC4235 is not supported in the PJSIP stack… yet.


As this is a show stopper for us, we will be switching back to the old chan_sip driver.


I have a problem with blf and pickup call…
My configuration is: Asterisk 13.3.0, PJSIP 2.3 and snom 320 (fw version I would like to monitor extension/endpoint 221 from extension/endpoint 240. When a call is received from 221, the led on 240 is static and not blinking. I have also check dev state (why is it “INVALID” ?) in Asterisk cli:

– Executing [221@interni:1] NoCDR(“PJSIP/227-00000040”, “”) in new stack
– Executing [221@interni:2] Gosub(“PJSIP/227-00000040”, “subInterni,s,1(221)”) in new stack
Executing [s@subInterni:1] NoOp(“PJSIP/227-00000040”, “DEVICE STATE - INVALID”) in new stack
– Executing [s@subInterni:2] Dial(“PJSIP/227-00000040”, “PJSIP/221,50,tTrkKxXwW”) in new stack
– Called PJSIP/221
– PJSIP/221-00000041 is ringing
== Spawn extension (subInterni, s, 2) exited non-zero on ‘PJSIP/227-00000040’

Always in Asterisk cli I have this warning but I can’t understand the meaning…

WARNING[7486]: res_pjsip_pubsub.c:2870 pubsub_on_rx_publish_request: No registered publish handler for event presence

My SIP trace on snom 320 (extension/endpoint 240) is:

Received from udp: at Mar 31 11:32:41 (783 bytes):

NOTIFY sip:240@;line=ahmo3uqz SIP/2.0
Via: SIP/2.0/UDP;rport;branch=z9hG4bKPj8952666c-b62c-4b96-8ba3-5470a0311755
From: sip:221@;tag=08bd2dfc-d885-401c-9580-9397c6144955
To: sip:240@;tag=q2iz77wv4q
Contact: sip:
Call-ID: 313432373730383634383631373737-dz6y1ahcg7wo
CSeq: 12914 NOTIFY
Event: dialog
Subscription-State: active;expires=2281
Allow-Events: message-summary, presence, dialog, refer
Content-Type: application/dialog-info+xml
Content-Length: 230

<?xml version="1.0" encoding="UTF-8"?> terminated

The features key on snom 320 (extension/endopint 240) is configured as BLF and the value is:

sip:221@|*8 ( *8 is the pickup code configured in Asterisk (features.conf) )

@gazzaf, could you please help me with pickup?

Thank you very much…

I will help if I can.

Please show me the output of pjsip show endpoints. Please be sure to sanitize any sensitive information.

On the snom, are you using a blf field or XML-Definition. Also please show me what core show hints prints out. In the asterisk cli are there any warnings when the snom registers for blf?

I am assuming you are using asterisk without freepbx but please correct me if my assumption is incorrect.

Does the snom phone you are using have the ability to support XML-Definitions? If you are unsure I can look it up.

I solved the problem in this way:

we must modify the file asterisk-13.2.0/res/res_pjsip_dialog_info_body_generator.c adding the following line:

ast_sip_presence_xml_create_attr(state_data->pool, dialog, "direction", "recipient");

after line n.135:

L.134 dialog = ast_sip_presence_xml_create_node(state_data->pool, dialog_info, “dialog”);
L.135 ast_sip_presence_xml_create_attr(state_data->pool, dialog, “id”, state_data->exten);
L.136 ast_sip_presence_xml_create_attr(state_data->pool, dialog, “direction”, “recipient”);
L.138 state = ast_sip_presence_xml_create_node(state_data->pool, dialog, “state”);
L.139 pj_strdup2(state_data->pool, &state->content, statestring);

Then you have reinstall Asterisk 13.2.0 or 13.3.0 (make, make install…)

Now everything work very well…

Thank you very much gazzaf…