493: Undecipherable

-Blog-

-Projects-

-About me-

-RSS-

Asterisk: SIP Presence is only partly supported

Dennis Guse

Asterisk 11 and following added support for publishing/distributing the presence of an extension. This enhances the hints, which are so faronly server-generate extension states, e.g. idle, unavailable, busy. Actually the presence can be set for an extension independant how this extension is connected to the system.

So far the functionality was limited to exten => _X,hint,SIP/${EXTEN}, which gives you server-side generated extension states. Now the presence state can be set for an extension using the dial plan function/variable PRESENCE_STATE().

In my case, clients are only connecting via SIP and can now subscribe for presence states of their buddies (in this case extensions). Works like charm.

However: The presence state cannot be updated the SIP way by a SIP client for the used extension (which is denoted by a hint). Asterisk does not SUBSCRIBE on the presence state of the client, when it registers.

Thus the client does not know that Asterisk would be interested in his presence state and therefore does not NOTIFY Asterisk, if his presence state changes. And now Asterisk cannot inform all other clients that are subscribed on this extension…

At the moment Asterisk only allows to set the presence state it presents for an extensions using the PRESENCE_STATE() and sadly not the SIP way.

Olle E. Johansson confirmed the behavior on the Asterisk mailing list.

Asterisk only implements 50% of RFC 3856.

Again: Thanks to Frank Haase for his support and wisdom!

Update reported to Asterisk.