環境
Ubuntu 16.0.4
docker 18.03.1-ce
python 3.5.2
mattermostdriverを使う
mattermostとのやり取りを簡単にしてくれます。
https://github.com/Vaelor/python-mattermost-driver
pythonの実装
flaskでwebサーバーを作ります。
flaskについては下記を参考にするなどしてください(今回はすごく簡単なことしかしません)
ウェブアプリケーションフレームワーク Flask を使ってみる
from mattermostdriver import Driver
from flask import Flask, request
app = Flask(__name__)
SERVER_URL = ""
CHANNEL_ID = ""
USER_EMAIL = ""
USER_PASS = ""
mat = Driver({
'url': SERVER_URL,
'login_id': USER_EMAIL,
'password': USER_PASS,
'scheme': 'http',
'port': 8065,
'verify': False
})
mat.login()
@app.route('/kumobot', methods=['POST'])
def post():
req = request.json
dialog = req['text']
try:
mat.posts.create_post(options={
'channel_id': CHANNEL_ID,
'message': 'Hi!'
})
except Exception as e:
print(e)
return '200'
if __name__ == '__main__':
app.debug = True
app.run(host='0.0.0.0')
以下を埋めてください。
SERVER_URL = ""
CHANNEL_ID = ""
USER_EMAIL = ""
USER_PASS = ""
あとは上の実装を適当に名前をつけ(例:botserver.py)
$ python3 botserver.py
で実行!
Running on XXXという表示が出れば成功です。
設定
outgoingwebhooks
下記を参考にしながらwebhookを設定していきます。
SlackクローンのMattermostを使ってみる - 外部連携編 -(WebHooks、Hubot)
統合機能>外向きのウェブフックを選択すると下のような画面がでます。
トリガーワード:トリガーとなるキーワードを設定します。今回は「kumo」にします。
コールバックURL:pythonを動かしたサーバーのURLとポートを書きます。
エラーがでる
err=Post http://XXX:5000/kumobot: address forbidden
https://docs.mattermost.com/administration/config-settings.html?highlight=cors
こちらにも書かれていますが、AllowedUntrustedInternalConnectionsにIPアドレスを追記するとよいみたいです。
$ docker cp {CONTAINER}:mm/mattermost/config/config_docker.json {LOCALFILEPATH}
$ vi {LOCALFILEPATH}
$ docker cp {LOCALFILEPATH} {CONTAINER}:mm/mattermost/config/config_docker.json
テスト
トリガーワードがkumoなのでhi kumoだと繋がりませんね。
うまくいきましたね!