2020/05/29

PythonでMattermostにIncoming Webhookを投げる

mattermostpython

概要

セルフホストするMattermostへWebhookを使ってメッセージを投げ込む必要があったので調査しました。
本プロジェクトはPythonを多用しているため、Pythonでできないか調べてみました。

実施事項

Python側の処理

Mattermostへのメッセージのポストは単純にhttp postを投げるだけなので、特段ライブラリなどいらないかなという思いはありましたが
一応調べてみたところ、良さそうなライブラリ mattermostdriverがあったので、そちらを使うことにしました。

使い方は簡単で

  1. installします
% poetry add mattermostdriver
# pipの場合は以下
% pip install mattermostdriver
  1. 以下のような感じで使います
mattermost_driver = Driver({
    'scheme': 'https',
    'url': 'mattermost.your-domain.com',
    'port': 443,
})
webhook_id = "xxxxxxxxxxxxxxxxxxxxxxxxxx"
mattermost_driver.webhooks.call_webhook(hook_id=webhook_id, options={
    "username": "my-bot",
    "icon_url": "https://www.mattermost.org/wp-content/uploads/2016/04/icon.png",
    "text": "Hello, this is some text\nThis is from python script. :tada:",
})

これで、pythonから投稿できました

Mattermostの設定

結構つまづきポイントもありました、
なぜか、usernameやicon_urlが指定しても変わってくれなかったのです。

少し調査したところ mattermostのconfigの変更(+リスタート)が必要でした。以下が詳しかったです。

以下の設定を変更して、mattermost serverの再デプロイを実施しました。

/mattermost/config/config.json

"EnablePostUsernameOverride": true,
"EnablePostIconOverride": true,

設定変更後、Pythonで作った、scriptで、usernameとiconが変更されていることを確認しました。

以上になります。