LoginSignup
8
7

More than 5 years have passed since last update.

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

Posted at

環境: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

うまくいきましたね!

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7