Skip to content

Gateway: developing new one

Krzysiek Madejski edited this page Feb 13, 2019 · 6 revisions

How to develop a new gateway/bridge?

Step-by step list

  • Create a new catalog in /bridge folder and a main file named after the bridge you are creating, such as whatsapp.go
  • Implement a Bridger interface
  • gitter is a relatively simple bridge that you might use as a reference to adapt
  • Mention your bridge exists in /gateway/bridgemap/bridgemap.go
  • Divide functionality in several files, as it is done for slack
    • yourbridge.go with main struct and implementation of the Bridger interface
    • handlers.go with handling messages incoming to Bridge
    • helpers.go for all the misc fucntions and helpers
  • While sending the message to the bridge make sure that you set the config.Message.Channel field to channel as it is mentioned in the config file.
  • Minimal set of features is sending and receiving text messages working.
  • Documentation
    • Add a sample configuration of your bridge to matterbridge.toml.sample and explain all the custom options
    • Add your bridge to README
    • Document all exported functions
  • Run golint and goimports and clean the code
  • Run go mod vendor to pull in all the vendor code
  • Send a PR

Features

Below is a feature list that you might copy to your issue.

Features:

  • Connect to external service
  • Get all active chats
  • Check if chosen channels exist exgternally
  • Connect to chosen channel
  • Show nicknames in external service
  • Show nicknames in relayed messages
  • Test if multiple channels are working
  • Show profile pictures from your bridge in relayed messages
  • Show profile picture in your bridge
  • Handle reply/thread messages
  • Handle notifications
  • Create a channel if it doesn't exist
  • Sync channel metadata (name, topic, etc.)
  • Document settings in matterbridge.toml.sample
  • Document bridge in README
  • Explain setting up the bridge process for users in the wiki
  • Add screenshots from your bridge in the wiki
  • Document code

Handle messages

  • text from the bridge
  • text to the bridge
  • image
  • audio
  • video
  • contacts?
  • any other?
Clone this wiki locally