Presence in, Presence out
In PBX terms, presence is a glorified term for “someone is on the phone”, and possibly “someone does not want to get disturbed”. We already talked about how snom ONE publishes the presence state changes to Microsoft Lync when that someone is on the phone.
Now with the 5.0.2 version, we started adding the other direction: When someone talks on the phone without using the PBX, the PBX can still show the other office users that 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 updating the 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 a HTTP request to a predefined URI that looks like this:
https://pbx/call_state.htm?domain=abc.com&user=123&password=secret&number=12345678
Then the PBX will assume that 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, that there is no phone call going on. Right now, the PBX does not populate the number to anybody else, like it does not populate the internal numbers as well. The URI may contain a parameter “expires” that tells the PBX for how long the extension is in a call, unless it clears the state explicitly with the empty number. The default value for this parameter is the maximum call duration on the system, usually two hours. This makes sure that the status of the extensions gets cleared eventually, even if the service provider should miss the clear update.
Now this works from the cell phone service provider, but it would also work from a cell phone directly. For example, if someone has an Android app that is watching the call state of the phone, it could easily update the PBX call state with this little application.
The other interesting note is that 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; that would make it a lot easier for us to get this done in one of the next releases.
If one of you out there has a wish what presence network we should address next, let us know. Feedback is always welcome.