App that generates a Matterbridge config file based on channel names.
This remote configuration file* is generated based on simple channel-naming rules.
NOTE: This app is based on features that are not yet implemented or merged into Matterbridge. Unimplemented features are notes with an asterisk*.<.sup>
Imagine that you're a member of an international Slack team, and there's a
channel called #rad-project
. In this channel, people are speaking Japanese, but you
only speak English.
Well, this sucks, right? No problem!
Just create a new channel called #rad-project-en
(with added language
code), and jump in! You'll be joined by a bot who will relay
and translate all non-English messages into your language. Your English
responses will be relayed untranslated back to #rad-project
. If your
new Japanese friends don't speak English, and want to know what you're
saying, just have them create #rad-project-ja
, where all non-Japansese
messages will be translated for them.
(Not yet implemented.)
Imagine you are part of a team that values transparency, but you use Slack, which has a few hurdles to being able to read messages and participate. Further, some conversations and channels are necessarily more private, and perhaps not being on the public internet is a good thing for them.
Imagine that you could start a channel in Slack for semi-public conversations with the community, but then easily promote a room to being fully transparent by bridging it with Gitter, with full public chat rooms. But renaming your Slack channel from #rad-project
to #rad-project-pub
, your channel will automatically be bridged with the Gitter room for my-organization/rad-project
. If the chat room doesn't exist, it's created. Any messages in Slack will be relayed to this public room, and vice versa. If you decide to bring things private again, just rename the channel back to #rad-project
, and the bridge will be deactivated.
- Supports: Slack
- Creates translation gateways* based on language-code suffix
- Forces Matterbridge config reload when remote config* changes
Once you've got this app running and configured, here's how it works:
- Add a two-letter language suffix to a channel will set the locale of
that channel. This will allow Matterbridge to translate incoming
messages into the target language, assuming the Google Translation
feature is enabled*.
- Example:
#mychannel-en
- This feature requires that a "base channel" exists (eg.
#mychannel
), which will have all untranslated messages dropped into it. This ensures that team members who speak multiple languages won't be forced to read imperfect Google Translations.
- Example:
We recommend using pipenv
and pyenv
to manage
development environments.
pipenv install
cp sample.env .env
# Add your Slack API token here:
vim .env
On the command line:
pipenv run python cli.py
Or, for the web app:
pipenv run python app.py
Configuration is done via environment variables. See
sample.env
for
details. If a .env
file is present, its values will be used
automatically.
The API token from your Slack team.
You may use legacy user tokens or bot tokens. We recommend bot tokens, or otherwise the token will have access to all the user's private conversations. Also, a bot must be invited into each channel or conversation, which is added precaution in case your token gets released into the wild.
The URL of a template file that will wrap the auto-generated portion of
your configuration. The string {{AUTOGENERATED}}
will be replaced.
See
examples/matterbridge.sample.toml
.
The full url of the /webhook
endpoint enabled on your Matterbridge
instance*, used to prompt Matterbridge to reload remote configuration.
When channel events are detected on Slack, this autoconfig app will use
this endpoint to prompt a reload of the remotely hosted configuration.
The auth token must match the one configured in Matterbridge.
We host a version of this on Heroku. Here are the details:
master
branch is automatically deployed there.- All changes are made throgh pull requests.