Bridging chat services in Nextcloud Talk

With Talk 10, part of Nextcloud 20, we introduce a major new feature in Talk: bridging with other services. This allows users to connect a Talk conversion to one or more external services, like IRC, Slack, MS Teams or more. The administrator has to have enabled this feature and users can then simply configure it from the right-hand sidebar in Talk.

Talk bridge in action

Note that this feature is a part of Talk 10, which has many more improvements! Check out our Nextcloud 20 announcement for details.

Bridging chat services in Nextcloud Talk: How it works

So, how does this work?

  • We ship matterbridge as a separate app, which is installed automatically by Talk when the admin enables Matterbridge integration. Instead of using the binary we ship, the admin can also install matterbridge locally.
  • The connection is channel per channel.
  • Channel moderator can configure a bridge in the settings in the right sidebar.
  • The moderator can choose a protocol like IRC, Slack or Teams, then configures it.
    • Note: bridges have many optional features. This can get messy in the UI… So while for some we have advanced features, for many not. Manual configuration is possible, though, as a Matterbridge can be run fully manually.
  • Messages to the Talk room and the bridged channel are replicated in both directions.
  • On both sides, messages from the bridge are coming from the bridge bot user. You see [protocol] <user name> ... message ...
  • You can configure multiple channels to sync with a room. So you create a single Talk room, connect it to 2 IRC rooms, a Matrix room and a Teams room. Whenever a user says something in Teams, it gets replicated to the Talk room, the 2 IRC rooms and Matrix. When a user says something in Talk, it gets replicated to Teams, 2 IRC rooms and Matrix. And so on!
    • Note that this way, Nextcloud Talk is a nice GUI for Matterbridge and for bridging any other protocol. Say your company has Teams and Slack and you want to improve the communications. You can bridge a few important channels in Teams and Slack using Talk inbetween. This is very easy to set up in Talk.
  • The showing of anything ‘fancy’, like images, emoji, shared files and so on, depends on the system. It works for some, for others we still have some work to do or it might not be possible.
  • The bridge keeps running even if you’re not logged in or in the browser.
  • For each Talk room where bridge is configured, one process with the binary is run, irrespective of how many services are connected to that single room.
    • for example: 1 talk room is connected with a Teams channel, one Talk room is connected to a Talk room on another server and to a Slack channel. One Talk room is connected to 4 IRC channels and 1 other Talk room on the same server. There are 3 bridges running.
    • The process is such that a user configures the bridge, a config is generated and a binary is started with that configuration.
    • If the bridge stops working for any reason, entering the room will restart it, but Nextcloud also regularly checks and restarts bridges that should be running so a server reboot or unstable bridge should not result in many lost messages.
  • Configuration changes are shared in the chat room so other participants know the matterbridge is configured.
  • From any system, writing @userID will display a nice Talk mention, as Talk recognizes those. Of course, IN the external service there is no auto-complete so if you don’t know that user Camile D'souza has the user name camile, you won’t be able to mention her.

Supported platforms and limitations

There is a wide range of platforms supported by the bridge, but not all have easy user interface configuration yet. A quick status overview:

  • Slack: works with token.
    • Matterbridge doc is good and must be carefully followed because the new Slack “app type” does not provide compatible tokens so the classic/deprecated app type must be selected.
  • Nextcloud Talk
  • Matrix: flawless, classic login/password authentication
  • Mattermost: flawless, classic login/password authentication
  • IRC: basic, no auth, no nick password, but we will extend configuration
  • XMPP/Jabber: Until now we failed to get this working, we are still debugging.
  • MS Teams: still being tested

Untested but available in the interface: Zulip, Steam, RocketChat and Discord

Not yet integrated but supported by Matterbridge

Some of these will be a bit harder to do as they require the server owner to get some API token setup with these services first. The procedures to get an API token can change, require multiple tokens or sometimes break, shutting down the bridge. We will, in time, add some of these, but perhaps not all. You can of course still use them manually.

  • Gitter
  • Hipchat
  • Keybase
  • SshChat
  • Telegram
  • Whatsapp
  • Twitch

Conclusion

With bridging in Talk, you can break down those barriers between different channels! We hope this will be incredibly useful for many of our users and customers.

Our bridge is based on the open source Matterbridge tool. Installation is integrated in Nextcloud Talk and should be a 1-click affair on almost all systems. Learn more about Matterbridge in the github repository.