docker
python3
bot
Mattermost

Docker上のmattermostとローカルpythonでbot連携した

環境:grinning:

Ubuntu 16.0.4
docker 18.03.1-ce
python 3.5.2

mattermostdriverを使う

mattermostとのやり取りを簡単にしてくれます。
https://github.com/Vaelor/python-mattermost-driver

pythonの実装:relaxed:

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という表示が出れば成功です。

設定:writing_hand:

outgoingwebhooks

下記を参考にしながらwebhookを設定していきます。
SlackクローンのMattermostを使ってみる - 外部連携編 -(WebHooks、Hubot)

統合機能>外向きのウェブフックを選択すると下のような画面がでます。
無題.png

トリガーワード:トリガーとなるキーワードを設定します。今回は「kumo」にします。
コールバックURL:pythonを動かしたサーバーのURLとポートを書きます。

エラーがでる:frowning2:

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だと繋がりませんね。
kumobot.png

うまくいきましたね!