XMPP
- Overview
- XMPP chat client
- To Access
- From the Community Admin page, click the XMPP tab.
Introduction
XMPP is a chat protocol that enables users to have instant message applications and other technologies. Support in Tiki was first added in 2003. Nowadays, support is via the ConverseJS XMPP client and Tiki users can integrate chat feature to their websites. See also PluginXMPP and Module XMPP
How to use XMPP in Tiki
1.1.1. install and Configure an XMPP server
Despite Tiki has ConverseJS bundled in its package, it is still necessary to have an XMPP server where clients can connect. Tiki can be very well integrated to Openfire XMPP server, but other servers also works.
1.1.2. Enable the feature and plugin
Enable the feature at "Admin home > RTC > XMPP" tab. Enable the plugin at "Admin home > Editting and plugins > Plugins > XMPP plugin"
1.1.3. Configure Tiki to talk to the XMPP server
Go to the community page on the admin panels (RTC page on Tiki 19+), select the XMPP tab, and:
- Check the XMPP client (ConverseJS).
- On XMPP server domain field, example type yourserver.wikisuite.org.
- On XMPP http-bind URL field, example type https://yourserver.wikisuite.org:7070/http-bind/ .
- chose an Authentication method .
- Click on Apply.
1.1.4. Use ConverseJS modes
ConverseJS can be used in 3 modes:
- Overlayed mode
- Embedded mode
- Fullscreen mode
Overlayed mode
Overlayed Mode is configured as a Tiki Module. A small box will appears on bottom of the page containing a contact list. Users can click on contact list to start a chat session.
Embedded mode
The Embedded mode can be configured as a wiki_plugin. A chatbox will appear in the middle of the page. This chatbox is a group chat, where many users can send messages.
Fullscreen mode
Fullscreen mode takes all webpage space to provide the contact list and chat boxes. Users can switch between private chats and group chats while using this mode.
Authentication mode
The ConverseJS embedded in Tiki can authenticate in XMPP server using 3 different strategies.
- Username / password
- Prebind
- OAuthBearer Token
When using the username/password mechanism to authenticate, ConverseJS will ask user these information whenever is necessary. It is very easy to setup, but in other hand, it may demotivate the user to join the chat if he needs to type his password several times.
The Prebind mode is mechanism that makes XMPP server to confirm that a specific user is trying to authenticate. The user does not need to type username or password using this mode. Whenever user log into Tiki, he will automatically log into Openfire when needed. The Tiki prebind URL needs to be informed in Openfire panel.
On OAuthBearer Token, ConverseJS extract a special Token from Tiki and gives as a password to Openfire. Extra setup is needed in Openfire side in order to use this mode. Also, this mode is still beta and is available on Tiki 20.
Installing the XMPP Prebind library for TikiToken
The XMPP Prebind library candy-chat/xmpp-prebind-php
allows Tiki to perform automatic login to an XMPP server using the Openfire TikiToken authentication method. This makes the user experience smoother because users do not have to type their username and password to join the chat.
Importance:
- Required only for the TikiToken authentication method.
- Not needed for Username/Password or OAuthBearer Token authentication.
- If you select TikiToken in the admin settings but the library is not installed, Tiki will still work: ConverseJS will fall back to standard BOSH login, and users can still access chat. No warning appears in the admin UI.
Library source: https://packagist.org/packages/candy-chat/xmpp-prebind-php
Installation steps:
- Open a terminal and go to your Tiki installation folder.
- Require the library using Composer:
composer require candy-chat/xmpp-prebind-php
- Composer will download and install the library.
- After installation, Tiki will detect the library automatically. The class `XmppPrebind` will now be available.
- Go to Admin home > RTC > XMPP and select the TikiToken authentication method. The prebind library will be used automatically.
Note: Installing this library is optional. Without it, TikiToken authentication will silently fall back to standard login, so chat still works, but users will not get the automatic login experience.
Option | Description | Default |
---|---|---|
XMPP client (ConverseJS) | Integration with Converse.js XMPP client. | Disabled |
XMPP server domain | XMPP server domain example.org |
None |
XMPP http-bind URL | Full URL to the http-bind. https://xmpp.example.org/http-bind/ |
None |
XMPP MUC Domain | Required for auto-joining rooms conference.example.org |
None |
Authentication method | The authentication method to be used by XMPP client Plain | OAuth (uses Tiki as provider) | Openfire TikiToken |
None |
Openfire REST API endpoint | Full URL to API endpoint https://xmpp.example.org:9091/plugins/restapi/v1/ |
None |
Rest API username | Username to allow Openfire API usage | None |
Rest API password | Password to allow Openfire API usage | None |
Allow anonymous | Allow anonymous users on Chat | Disabled |
Always Load ConverseJS | Adds the ConverseJS Javascript and CSS files to every page. | Disabled |
ConverseJS Debug Mode | Enables more logging, e.g. XML stanzas and error tracebacks to the JavaScript Console | Disabled |
ConverseJS Extra Settings | JSON format object defining extra optional settings to initialize ConverseJS | None |
Option | Description | Default |
---|---|---|
XMPP client (ConverseJS) | Integration with Converse.js XMPP client. | Disabled |
XMPP server domain | XMPP server domain example.org |
None |
XMPP http-bind URL | Full URL to the http-bind. https://xmpp.example.org/http-bind/ |
None |
XMPP MUC Domain | Required for auto-joining rooms conference.example.org |
None |
Authentication method | The authentication method to be used by XMPP client Plain | OAuth (uses Tiki as provider) | Openfire TikiToken |
None |
Openfire REST API endpoint | Full URL to API endpoint https://xmpp.example.org:9091/plugins/restapi/v1/ |
None |
Rest API username | Username to allow Openfire API usage | None |
Rest API password | Password to allow Openfire API usage | None |
Allow anonymous | Allow anonymous users on Chat | Disabled |
Always Load ConverseJS | Adds the ConverseJS Javascript and CSS files to every page. | Disabled |
ConverseJS Debug Mode | Enables more logging, e.g. XML stanzas and error tracebacks to the JavaScript Console | Disabled |
ConverseJS Extra Settings | JSON format object defining extra optional settings to initialize ConverseJS | None |
New in Tiki17: the addition of the ConverseJS XMPP client. New in Tiki19: PluginXMPP to embed a chatroom in a wiki page
The reference implementation is with Openfire, but this should work with any XMPP server (perhaps with fewer features).