SUBSCRIBE events for BLF


#1

Hello,

I’ve been testing SUBSCRIBE & NOTIFY events used by Grandstream wave and Zoiper softphone for PRESENCE. It turns out 3 states are possible with Zoiper: Available, On the phone and Offline but only 2 possible states on GS wave: Confirmed (on the phone) and terminated (Online) but there’s an issue with the offline state.

As far as I have read, turns out Zoiper request for the presence status but GS wave and other GXP phone with the same issue doesn’t. Here’s the part sent by Zoiper:

User-Agent: Z 5.2.25 rv2.8.112
Event: dialog
Allow-Events: presence,kpml,talk

Is there any way to request the presence status on the GS wave SUBSCRIBE request?

Thanks in advance.


#2

perhaps this will help -


#3

Thank you @lpneblett BLF seems to work fine with a UCM Pbx, but this is using an external provider, VoIP.ms in this case. Zoiper seems to be getting the correct presence status but not GS wave or a GXP phone. This is because this line “Allow-Events: presence,kpml,talk” is not included in the SUBSCRIBE events sent by GS wave or GXP phone.

Thank you


#4

Are you subscribing to a hosted system with voip.ms?


#5

Yes, and the BLF works fine with Zoiper, but not with GS wave or GXP phones (at least no for the offline state). It turns out 2 different NOTIFY events could be sent

For Zoiper:
Message Body
eXtensible Markup Language
<?xml
<presence
xmlns="urn:ietf:params:xml:ns:pidf"
xmlns:pp="urn:ietf:params:xml:ns:pidf:person"
xmlns:es="urn:ietf:params:xml:ns:pidf:rpid:status:rpid-status"
xmlns:ep="urn:ietf:params:xml:ns:pidf:rpid:rpid-person"
entity="sip:sip@denver1.voip.ms">
<pp:person>
<note>
On the phone
</note>
<tuple
</presence>

And for GS wave:
Message Body
<?xml version="1.0"?>\n
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="9" state="full" entity="sip:sip@Denver.voip.ms">\n
<dialog id="sip">\n
<state>confirmed</state>\n
</dialog>\n
</dialog-info>\n

That’s the info sent by the server on the NOTIFY events, they are different because Zoiper requested to allow the presence event in the dialog event.

Event: dialog
Allow-Events: presence,kpml,talk

And GS wave only requested:
User-Agent: Grandstream Wave 1.0.3.29
Expires: 0
Supported: replaces, path, timer, eventlist
Event: dialog
Accept: application/dialog-info+xml, multipart/related, application/rlmi+xml

Thank you


#6

You are correct in that the WAVE only supports two states for BLF as you have noted - confirmed and void. GS has altered the NOTIFY such that a confirmed is sent when the other end is ringing rather than an early. The phones do support all three as a BLF will blink on a ring when being sent an “early”.

In a Notify, there is a server (presence agent) that actually manages the subscription lists. It is the server that knows what extensions are to be monitored and the extensions that are to be notified. When an extension changes its presence status (from available to away) this is done via a dial code or other mechanism and it is the server who receives this code and then sends the NOTIFY advising of such a change to the subscribers.

The ALLOW is a message that tells the server what the UA (Zoiper) can support. The absence of such does not mean that the UA does not support the method, merely that the UA is not telling the server what it either does or does not support and the server is not to assume one way or the other. If the UA subscribed to an event package, then the server should send for that package. If the UA does not subscribe, then the NOTIFY will not be sent. This is what you are really seeing, there is no subscription.

So, the bottom line is that I agree with you - the WAVE currently has no mechanism by which to subscribe for presence. This would require a feature request made to GS via their support portal.

In the meantime, I can only suggest you search for other apps that provide what you need.