powered by Jive Software

Openfire Chat API


#1

I am trying to build a new web based client for Openfire to replace the outdated and abandoned Flash-based Sparkweb. The project is called Pade (A Yoruba word for Meeting) and my first step was to decide on my web client API.

Representational state transfer (REST) has now become the standard for abstracting request/response type web services into an API. When it is combined with Server Sent Events (otherwise known as Event Source), the result is a fresh new way of providing two-way real-time communication between web clients and a server using synchronous requests/responses (IQ) with REST and asynchronous evening (Message, Presence) with SSE. The really cool feature of SSE is the automatic re-connection by the web browser.

The Rest API plugin by Redor is brilliant . It allows you to administer Openfire via a RESTful API. Most of the common functions we do from the Openfire admin console web application can now be automated and integrated into server-side Java plugins or client-side web applications with ease. After spending hours inside the code and extending it for use at work to manage all the telephony entities we use with our Openlink XEP from the various commercial plugins we develop, it became clear that REST+SSE is the way forward for web-based real time messaging. Don’t take my work for it. Read what the folks at erlang-solutions.com have to say.

As my first step towards implementing Pade, I have built a Chat API plugin by extending the REST API plugin with SSE and Jetty web authentication taken from the Openfire meetings plugin. The plugin now runs on the HTTP-BIND (7070/7443) port instead of the admin (9090/9091) port. It authenticates you as an Openfire user once and reuses the authentication for REST, SSE and XMPP bosh/websockets. It supports everything you can do with the REST API plus Bookmarks and SIP Accounts as an admin user. It then enables you as a normal user to handle presence, chat, groupchat, contacts and users with just a handful of REST requests and SSE events.

Documentation can be found on GitHub Wiki pages


#2

Added SwaggerUI to Chat API. Allows easy quickly find an API endpoint and try it out on your Openfire server.


#3

This really looks nice! Sorry it might be dumb question but I could find multiple jar files in your github repository. Which one should I use to add into Openfire plugin to get this UI and other features?


#4

Where is the Chat API plugin? It’s not listed in the plugin directory. What am I missing?


#5

It is in a state of flux.

The old version built with ANT is deprecated and can be found here in the igniterealtime repo at

The new version built with Maven is still in development and can be found in my personal repo at

I intend to move in back into its own repo on igniterealtime at some point when I am free to work on it.


#6

Can you please let me where will I get this new version of ChatAPI plugin. I need it urgently. I am using openfire 4.2.3 and found one older version of chat API.jar. Using that I am getting response code 500 error while posting message to a chat room.

Request ur urgent help . Thanks


#7

Try


#8

Thanks Dele. But I am getting this error: while trying to use this. Can you please help me on this:

2018.06.09 23:20:57 org.jivesoftware.openfire.plugin.rest.exceptions.RESTExceptionMapper - IllegalArgumentException: Exception with ressource Exception
2018.06.09 23:21:30 org.jivesoftware.openfire.plugin.rest.exceptions.RESTExceptionMapper - IllegalArgumentException: Exception with ressource Exception
2018.06.09 23:31:00 org.jivesoftware.openfire.plugin.rest.exceptions.RESTExceptionMapper - IllegalArgumentException: Exception with ressource Exception
2018.06.09 23:33:45 org.jivesoftware.openfire.plugin.rest.RESTServicePlugin - refreshClientCerts
java.lang.NullPointerException
at org.jivesoftware.openfire.plugin.rest.RESTServicePlugin$3.call(RESTServicePlugin.java:1047)
at org.jivesoftware.openfire.plugin.rest.RESTServicePlugin$3.call(RESTServicePlugin.java:1036)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)


#9

Also I am not able to download the certificate ,getting 406 error


#10

Client certificates is not working properly yet with official openfire server. I have not finished testing it and it may require more changes to openfire server code before it works properly.