2020/05/29
PythonでMattermostにIncoming Webhookを投げる
概要
セルフホストするMattermostへWebhookを使ってメッセージを投げ込む必要があったので調査しました。
本プロジェクトはPythonを多用しているため、Pythonでできないか調べてみました。
実施事項
Python側の処理
Mattermostへのメッセージのポストは単純にhttp postを投げるだけなので、特段ライブラリなどいらないかなという思いはありましたが
一応調べてみたところ、良さそうなライブラリ mattermostdriverがあったので、そちらを使うことにしました。
使い方は簡単で
- installします
% poetry add mattermostdriver
# pipの場合は以下
% pip install mattermostdriver
- 以下のような感じで使います
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の変更(+リスタート)が必要でした。以下が詳しかったです。
- https://developers.mattermost.com/integrate/incoming-webhooks/
- https://docs.mattermost.com/administration/config-settings.html#enable-integrations-to-override-usernames
- https://docs.mattermost.com/administration/config-settings.html#enable-integrations-to-override-profile-picture-icons
以下の設定を変更して、mattermost serverの再デプロイを実施しました。
/mattermost/config/config.json
"EnablePostUsernameOverride": true,
"EnablePostIconOverride": true,
設定変更後、Pythonで作った、scriptで、usernameとiconが変更されていることを確認しました。
以上になります。
関連する記事
[Python]ハイフンなし電話番号からハイフン付きに復元
Pythonでハイフンなしの日本の電話番号をハイフン付きのものに変換する
[Python]BeautifulSoup4でhtmlの解析
BeautifulSoup4というPythonのライブラリを使って、特定のURLのコンテンツを取得し、タイトルや説明文を取得できるようにしました。
[Python]銀行コードと支店コードの取扱
Pythonで銀行コード、支店コードデータを取り扱う便利なライブラリzengin-codeを導入しました。
Sendgridを使ってメールの受信を行う
Inbound Email Parse Webhookという機能を利用してメールを受信したらWebhookを呼び出すようにしました