New docs, Mattermost, IBM Watson and more in v0.17

Jacob Tomlinson
Dec 7, 2019 · 6 min read

We’ve got a big release on our hands this time! Thanks to everyone who contributed during Hacktoberfest this release has more changes than ever!

New documentation

We have a new documentation website! One of the big goals we wanted to achieve this Hacktoberfest was to make big improvements to our documentation.

Our new documentation site

We have switched our documentation over to use Sphinx with a customised Alabaster theme. This gives the site a nice clean look and also enables us to automatically generate sections of documentation using autodoc.

We have also updated the layout so that it is hopefully easier to navigate around and we have merged so many amazing contributions to add new sections and enhance old ones.

Mattermost connector

We now have a Mattermost connector so you can add opsdroid bots to your Mattermost chats!

IBM Watson parser

We also added support for the IBM Watson NLP service. This joins our existing NLU plugins to enable you to configure rich natural language capabilities into your opsdroid skills.

CLI changes

We’ve made a few changes to our command line interface to manage your opsdroid bot. These changes bring in some consistency and also enable us to extend it further in the future.

opsdroid start

To start opsdroid you now need to run opsdroid start . Running opsdroid will still start your bot for now, but in the future this will be changed to just print the help text.

opsdroid config edit

Instead of running opsdroid -e you now need to run opsdroid config edit. This enabled us to add more config options to the command line

opsdroid config gen

You can now print out the example config with opsdroid config gen.

opsdroid config lint

One very exciting change is the ability to check that your config is valid with opsdroid config lint. Instead of starting up your bot and it crashing out with invalid config you can test this before hand. Especially useful if you store your config under version control and want to test it with CI.

opsdroid config build

You can also build your configuration with opsdroid config build. This command will run the opsdroid loading machinery to build all dynamic modules which you may have configured and install all dependencies of your connectors, databases and skills.

This could be especially useful if you want to build a Docker container of your bot with all the dependencies baked in instead of them being built at runtime.

opsdroid config list-modules

You can also check your configuration by listing all of the configured modules with opsdroid config list-modules.

For more detail on the new command line usage check out the docs.

Configuration schema

We’ve also made some changes to the configuration schema. These changes are backward compatible but you will now see warnings if you continue to use the old format.


Modules are now specified as a dictionary instead of a list. This should be a minor change in terms of your configuration but has enabled many improvements in our codebase.


We have also standardised our configuration for API keys and access tokens across all of our modules. We had a range of modules using keys like access-token, api-key, etc which have now all been standardised to token.

If you begin to see warnings about your configuration please refer to the configuration documentation and get your configuration up to date.

Other mentions

As always we have too many amazing changes to go into details on but we are really exited to see HTTP/HTTPS proxy support, webhook authentication with tokens, improved configuration validation and more. See the full release notes for in depth information on each change.

Full Release Notes


Events IIb — Matrix (#1070)
Add build subcommand to load config without running bot (#1289)
Add Slack interactions support (#1279)
Load config from path and show active modules (#1271)
Add configuration validation and refactor load_config_file method (#1212)
Add initial http/https proxy support (#1268)
Token based authentication for Webhook Matcher (#1260)
Add Mattermost Connector (#1251)
delete operation in opsdroid memory and database connectors (#1256)
Change configuration layout — use dictionaries instead of list of dicts (#1243)
Adding user id Parmeter in Event class (#1116)
Chat as slack bot user (#1247)
Make no-cache the default for local skills (#1244)
Add IBM Watson parser (#1156)
Move shell connector into core (#1147)
Update sapcai parser to allow different language when parsing (#1149)
Add an option to invert constraints (#1099)
Await the OpsDroid.load coroutine (#1109)

Bug Fixes

Always run matched events (#1286)
Fix issue when dict doesn’t update — new layout config (#1258)
Fix webhook class skills and update docs (#1242)
Remove await from Slack disconnect (#1241)
fix: Slack Connector SSL Certificate verification failed issue (#1233)
Slack connector ignore message edits (#1220)
Appropriate json response updated (#1211)
Fix configuration schema location (#1187)
Fixes schema.yaml and matrix connector to allow connections to selfho… (#1166)
Refactor: Reduce Dockerfile steps (#1164)
Upgrade Dialogflow to V2 (#1056)

Documentation and code quality

Improved Documentation with Fixed Grammar Mistakes (#1284)
Add CI for docs links (#1249)
Fail sphinx on warnings (#1274)
Switch docs to sphinx and refactor (#1265)
Document _thinking_delay() and _typing delay() (#1184)
Make log messages more consistent and add guidelines (#1221)
Watson Matcher in mkdocs (#1254)
Update and add Google docstrings for matchers methods (#1228)
Add french translation (#1209)
type in referenced docs. (#1206)
Add examples section (#1196)
needs to be ascii (#1197)
Update (#1194)
Adding steps to work on Windows 10 (#1192)
Update Spanish (es) translations (#1191)
Added docstrings for functions in (#1183)
Update Portuguese Translation (#1181)
Updated (#1179)
Update facebook documentation on how to set up the app (#1177)
Add documentation on Python version support (#1174)
Increase loader coverage (#1175)
Add Greek Translation (#1170)
Added Google Style Docstrings to file methods (#1161)
Update (#1165)
chores(webhook): rest-api as baseurl of matechers/webhook link (#1157)
add doc string for train_parsers (#1151)
adding google-style docstring to print_version (#1148)
Fixed header issues (#1150)
Fix bug with redis database configuration — db needs to be an int (#1135)
Add Polish translation (#1136)
typo in (#1131)
Additional page fixes. (#1124)
Fixed grammatical errors, maintained content consistency (#1143)
Added link to crontab matcher link (#1144)
Updated docstrings to Google style format — loader (#1138)
Fixed small grammar mistakes on the tutorial documentation (#1133)
Improve Russian translation (#1134)
Make remaining logging messages translatable (#1129)
Add german translation (#1127)
update example config script (#1125)
Update (#1107)
Documentation Fixes. (#1121)
Fix test warnings and bump coverage (#1119)
Update (#1117)
Update grammar and text on tutorial introduction (#1112)
Replace gitter references to matrix (#1098)
Update pyyalm envvar test and remove test skip (#1111)
Fix grammar in introduction doc (#1110)
Remove Deprecation warning message (#1108)


Run the skill setup after the other modules (#1329)
Add kwargs to websocket message constructor (#1328)
Fix Slack Connector interactions handler failing on various Block Actions (#1306)
Remove deprecated flags and add -f flag to logs (#1294)


The opsdroid project blog

Jacob Tomlinson

Written by



The opsdroid project blog

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade