🤖

Mattermost用Bot作成(slackbot利用)

2022/09/17に公開

Mattermostでもslackbotを使うと通知用Botを簡単に作れます。
というわけでいきなり実践編です。

内向きのWebhookを作成する

Web画面から作るのはいろんなところで紹介されているので、今回はあえてコマンドで作ってみようと思います。
参考ページ:mmctl webhook create-incoming

必須オプションはchannel(defaultの投稿先) と user(defaultの名前) のようです。

bitnami@debian:~/python3$ mmctl webhook create-incoming
Error: required flag(s) "channel", "user" not set

必要最小限のオプションで作るならこんな感じです。
チャンネル指定のところがチーム名:チャンネル名という指定になるところに注意。
-userで指定するのはもちろんユーザ名です。(今回はデフォルトのuserを利用)

bitnami@debian:~/python3$ mmctl webhook create-incoming --channel default:town-square --user user
Id: 9****************e
Display Name:

作成後の確認はmmctl webhook listで。

bitnami@debian:~/python3$ mmctl webhook list
Incoming:        (9***********************e  ★今回作ったやつ
Incoming:       Bot (e********************c

There are 2 webhooks on local instance
bitnami@debian:~/python3$

統合機能画面で見ても、ちゃんと作成されています。
Webhook作成後の統合機能画面キャプチャ

slackwebをインストールする

POSTリクエストいろいろ書くのがめんどくさい(=布教の妨げになる)ので、pip3でslackweb-1.0.5.tar.gz をインストールします。

手動でゲットしたい方はPyPlから。

pip3のインストールログ
bitnami@debian:~/python3$ pip3 install slackwebpip3 install slackweb
Collecting slackweb
  Downloading slackweb-1.0.5.tar.gz (1.3 kB)
  Preparing metadata (setup.py) ... - \ | / done
Using legacy 'setup.py install' for slackweb, since package 'wheel' is not installed.
Installing collected packages: slackweb
  Running setup.py install for slackweb ... - \ | / - \ done
Successfully installed slackweb-1.0.5

パスワード変更通知Botを作ってみよう

commentは任意のコメントをいれます。
今回はパスワード通知的な文言を入れました。

urlは内向きwebhookのアドレスを入れてください。
今回はMattermostサーバと同じサーバ上にスクリプトを置いて実行できる環境を想定して書いています。

usernameは通知に出す名前。channelは通知先のチャンネル名です。
特に設定がなければwebhookに設定したdefaultの値が使われます。

import slackbot
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

# incoming webhook

comment = "@channel パスワード変更しましょう。有効期限は●日です"

mattermost = slackweb.Slack(url="https://127.0.0.1:443/hooks/gaaaaaa")
mattermost.notify(text=comment,username="パスワード変更通知おじさん",channel="000")

実行します。

bitnami@debian:~/python3$ python ./informPassword.py

無事に通知されました!
通知結果

おわりに

slackwebにはいろんなオプションがあるので、もっとリッチな通知も可能です。
また、作成したスクリプトをcronを使って実行したりすれば定期的に通知することも可能です。
●●しわすれた!ってことがないようにチームのみんなで育てる文化を作っていけばよりクリエイティブな仕事に専念できるので、どんどん作って布教していきましょう!

Discussion