bot
centos7
PHP7
Mattermost

CentOS7.3 環境(Vagrant)に Mattermost いれたので php で bot を追加してみる(Outgoing WebHooks) その1

bot

Mattermost いれたので Hubot でも入れて遊んでみようと思ってみつつも、Hubotの設定とcoffie script 覚えるのが少し敷居が高かったので、とりあえず bot だけサクっと動作させみた。かついいお手本サイトさんがあったので参考にさせて頂きました。

結果的に「超簡単」ではあるんだけどね

やり方が判れば、みな「簡単だよー」って言うと思うけど、botのアイコン変わらなかったり名前が変更されなく15分位悩みました。その他は、まあ割と手順とおりにやればいい。

統合機能の事前準備

まず「システムコンソール-統合機能-カスタム統合機能」を選択する。※日本語化してます
そこで下記の機能を有効に設定します。

・統合機能によるユーザー名の上書きを許可する:
・統合機能によるプロフィール画像アイコンの上書きを許可する
・統合機能の管理を管理者のみに制限する

image.png

超簡単botを設置してみる

超簡単!MattermostにBOTを追加する

上記を参考にしつつ進めていきます。「echo ほげ」入力すると bot から「2017/08/01 13:21:23 ほげ」って返信される機能を作ってみます。

コールバックURL

入力された文字列を処理するための、いわゆるAPIを実装します。どこに設置してもいいですが、Mattermost は 80 ポート使っているので、Apache(8080)+php とか別ポートでAPIを動かしていればいいです。

echo.php
<?php
if ($_POST['token'] != "bsfwydtxc3rgznwki35gw6s5to") { return; }

$text   = $_POST['text'];
$query  = preg_split('/[\s\x{3000}]/u', $text, 2);

echo json_encode(array("icon_url" => "/static/emoji/1f697.png", "username" => "echo", "text" => date("Y/m/d H:i:s") . " " . $query[1]));
return;

ここで重要なのは $_POST['token'] !=の定義でトークンを判定していること。トリガーで起動されるがトークンと一致してないと処理しない判定です。定義いるのかな?

botの定義(外向きウェブフック)

外向きウェブフックを選択して。

image.png

定義した最終結果だけだけど、ここで必要な定義は2つ。
まず「トリガーワード」は、bot が起動する条件。
あと「コールバックURL」、こちらは実際に動かすbot。

image.png

定義をするとトークンが払い出されるのでメモするなりします。
そしてbotプログラムに反映すること。

動作確認してみる

「echo あああ」って入力してみる。きたーーー!!!
本当だ、超簡単だったww

image.png

phpなら

phpなら簡単にDBアクセスすることできたり、スクレイピングしたりとか色々できるから便利機能をちょちょいって作れるのがいいかもね。

参考にさせて頂きましたサイト様

超簡単!MattermostにBOTを追加する
SlackクローンのMattermostを使ってみる - 外部連携編 -(WebHooks、Hubot)