In PBX terms, presence is a glorified term for “someone is on the phone” and, possibly, “someone doesn't want to be disturbed”. We already talked about how snom ONE publishes the presence state changes to Microsoft Lync when that person is on the phone.
With the 5.0.2 version, we started adding in the other direction: When someone talks on the phone without using the PBX, the PBX can still show the other users in the office users this person is on the phone. For example, when someone is on his or her mobile phone, either the phone or the phone provider can send that status information to the PBX. I have learned that in Scandinavian countries some mobile phone providers support this kind of update of presence information.
Instead of going a complicated SIP route, we just added that feature into the HTTP part of the PBX. All the service provider needs to do is to open an HTTP request to a predefined URI that looks like this:
https://pbx/call_state.htm?domain=abc.com&user=123&password=secret&number=12345678
The PBX will assume the user is busy talking to 12345678. When the call is over, the service provider is supposed to make another request:
https://pbx/call_state.htm?domain=abc.com&user=123&password=secret
The absence of the number parameter tells the PBX there is no phone call going on. Right now, the PBX doesn't populate the number to anybody else, nor does it poplulate the internal numbers. The URI may contain a parameter, “expires”, that tells the PBX for how long the extension is in a call, unless it explicitly clears the state with the empty number. The default value for this parameter is the maximum call duration on the system, which is usually two hours. This makes sure the status of the extensions gets cleared eventually, even if the service provider misses the clear update.
This works from the cell phone service provider, but it would also work directly from a cell phone. For example, if someone has an Android app that's watching the call state of the phone, it could easily update the PBX call state with this little application.
The other interesting note is the PBX can also combine incoming presence updates with outgoing presence updates. For example, if the cell phone provider sends the information to the PBX, the PBX could then relay the information to the connected Microsoft Lync account.
This is the beginning of the journey. We have to see what other services support presence information. For example, I can think about IBM sametime or the Google plus and Facebook networks. Hopefully they just use some simple HTTP-based API. This would make it a lot easier for us to get this done in one of the next releases.
If someone out there has a wish as to what presence network we should address next, let us know. Feedback is always welcome.