There are currently 2 XMLRPC APIs available from the sipXopenfire plugin.
Unified Presence
NOTE : Calls are secured using BASIC Authentication
XML-RPC presence java clients provided by sipxecs (sipXopenfire project) can be used using the SHARED_SECRET
Here you can get and set someone's unified presence.
Example using curl CLI tool to get presence information
- getUnifiedPresenceInfo
This method returns XMPP information being given the sip extension, as described below
Step 1. Create a file called get-presence.xml with content, replace 200 with the SIP user id you wish to get presence information on
<?xml version="1.0"?> <methodCall> <methodName>presenceServer.getUnifiedPresenceInfo</methodName> <params> <param> <value> <string>2011</string> </value> </param> </params> </methodCall>
Step 2. Then run this command, replacing mypbx.example.com with the FQDN of your sipXecs system
curl \ -H "Content-Type: application/xml" \ -X POST \ --data-binary @get-presence.xml \ http://<user>:<password>@mypbx.example.com:9094/plugins/sipx-openfire-presence/status
Returns as response something like:
<?xml version="1.0" encoding="UTF-8"?> <methodResponse xmlns:ex="http://ws.apache.org/xmlrpc/namespaces/extensions"> <params> <param> <value> <struct> <member> <name>custom-presence-message</name> <value></value> </member> <member> <name>sip-id</name> <value>2011</value> </member> <member> <name>status-code</name> <value>ok</value> </member> <member> <name>unified-presence</name> <value>available-for-both</value> </member> <member> <name>jabber-id</name> <value>mirceac@openuc.ezuce.com</value> </member> <member> <name>xmpp-presence</name> <value>AVAILABLE</value> </member> <member> <name>sip-presence</name> <value>IDLE</value> </member> </struct> </value> </param> </params> </methodResponse>
The same procedure as above can be applied for other calls present int the Unified Presence API
- getXMPPUsername(String emailAddress)
This method returns the xmpp username being given the email address saved in user-portal: contact information page
XML to send:
<?xml version="1.0"?> <methodCall> <methodName>presenceServer.getXmppUsername</methodName> <params> <param> <value> <string>mirceac@ezuce.com</string> </value> </param> </params> </methodCall>
Returns as response something like:
<?xml version="1.0" encoding="UTF-8"?> <methodResponse xmlns:ex="http://ws.apache.org/xmlrpc/namespaces/extensions"> <params> <param> <value> <struct> <member> <name>sip-id</name> <value>mirceac</value> </member> <member> <name>status-code</name> <value>ok</value> </member> </struct> </value> </param> </params> </methodResponse>
- getPresenceState(String xmppUsername)
This method returns the presence state being given the XMPP id
The string representation of the presence might be:
AVAILABLE, AWAY, BUSY, OFFLINE, CHAT, EXTENDED_AWAY
XML to send:
<?xml version="1.0"?> <methodCall> <methodName>presenceServer.getPresenceState</methodName> <params> <param> <value> <string>mirceac</string> </value> </param> </params>
Returns as response something like:
<methodResponse xmlns:ex="http://ws.apache.org/xmlrpc/namespaces/extensions"> <params> <param> <value> <struct> <member> <name>status-code</name> <value>ok</value> </member> <member> <name>xmpp-presence</name> <value>AVAILABLE</value> </member> </struct> </value> </param> </params> </methodResponse> </methodCall>
- setPresenceState(String xmppUsername, String xmppPresenceAsString)
This method changes the presence state of the given XMPP user id
The xmppPresenceAsString parameter can have the following String representations:
AVAILABLE, AWAY, BUSY, OFFLINE, CHAT, EXTENDED_AWAY
XML to send:
<?xml version="1.0"?> <methodCall> <methodName>presenceServer.setPresenceState</methodName> <params> <param> <value> <string>mirceac</string> </value> </param> <param> <value> <string>AWAY</string> </value> </param> </params> </methodCall>
Retuns as response something like:
<methodResponse xmlns:ex="http://ws.apache.org/xmlrpc/namespaces/extensions"> <params> <param> <value> <struct> <member> <name>status-code</name> <value>ok</value> </member> </struct> </value> </param> </params> </methodResponse>
If you now call the getPresenceState method it will show you AWAY as xmpp-presence value
- setPresenceStatus(String id, String status)
This method sets the given status message of the given XMPP user id
XML to send:
<?xml version="1.0"?> <methodCall> <methodName>presenceServer.setPresenceStatus</methodName> <params> <param> <value> <string>mirceac</string> </value> </param> <param> <value> <string>Here</string> </value> </param> </params> </methodCall>
It returns as response something like:
<methodResponse xmlns:ex="http://ws.apache.org/xmlrpc/namespaces/extensions"> <params> <param> <value> <struct> <member> <name>status-code</name> <value>ok</value> </member> </struct> </value> </param> </params> </methodResponse>
- public Map getPresenceStatus(String id)
This method returns the presence status message of the given XMPP user id
XML to send:
<?xml version="1.0"?> <methodCall> <methodName>presenceServer.getPresenceStatus</methodName> <params> <param> <value> <string>mirceac</string> </value> </param> </params> </methodCall>
It returns as response something like:
<?xml version="1.0" encoding="UTF-8"?> <methodResponse xmlns:ex="http://ws.apache.org/xmlrpc/namespaces/extensions"> <params> <param> <value> <struct> <member> <name>custom-presence-message</name> <value>Here</value> </member> <member> <name>status-code</name> <value>ok</value> </member> </struct> </value> </param> </params> </methodResponse>
- ping(String originator name)
XML to send:
<?xml version="1.0"?> <methodCall> <methodName>presenceServer.ping</methodName> <params> <param> <value> <string>mirceac</string> </value> </param> </params> </methodCall>
It returns something like:
<?xml version="1.0" encoding="UTF-8"?> <methodResponse xmlns:ex="http://ws.apache.org/xmlrpc/namespaces/extensions"> <params> <param> <value> <struct> <member> <name>status-code</name> <value>ok</value> </member> <member> <name>instance-handle</name> <value>of:821711375117195347</value> </member> </struct> </value> </param> </params> </methodResponse>