This guide explains how to create a new protocol backend to support a new gateway/bridge in matterbridge.
- Create a new catalog in
/bridgefolder and a main file named after the bridge you are creating, such aswhatsapp.go - Implement a
Bridgerinterface -
gitteris 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.gowith main struct and implementation of theBridgerinterfacehandlers.gowith handling messages incoming to Bridgehelpers.gofor all the misc functions and helpers
- Minimal set of features is sending and receiving text messages working.
- Documentation
- Add a sample configuration of your bridge to
matterbridge.toml.sampleand explain all the custom options - Add your bridge to README
- Document all exported functions
- Add a sample configuration of your bridge to
- Run
golintandgoimportsand clean the code - Send a PR
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 externally
- 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 deletes
- Handle edits
- 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?
How can I set the default RemoteNickFormat for a protocol so users don't have to do it in a config file?
@42wim?
Why on Slack I see bot name instead of remote username?
Check if you:
- did set
Message.Usernameon the message being relayed - did set
RemoteNickFormatin config file
Sending message to the bridge don't work
- Channels must match. While sending the message to the bridge make sure that you set the
config.Message.Channelfield to channel as it is mentioned in the config file.