今回の現場は、ちょっと特殊な環境。
一方、よくあるパターンで、「進捗管理は数多ある Excel で」「質疑や依頼、相談などは『Excel の管理表』+ 2 段目の環境にあるチャット(Mattermost)で」という体制。これはものすごく非効率なので(特にコミュニケーション手段がオンライン会議以外で「チャット」と「直接会話」しかないのがつらい)、強く要望してなんとか Redmine を導入してもらった。
ところで、Redmine の強力な武器は、メールによる通知。しかし、メールは 1 段目の環境でしか読めず、通常の作業は 2 段目でのみ行うことになっていることもあって、メールで通知したとしても気付けない。Redmine のサーバ自体は 2 段目の環境内にあってブラウザで読み書きできるので、通知も Mattermost で受け取りたい……
ということで、Redmine と Mattermost との連携を模索してみた。
まずは Mattermost で通知を受け取れるようにならないと話にならない。調べたところ、「Incoming Webhook」による方法と「パーソナルアクセストークン」による方法があることが判った。
curl -i -X POST -d 'payload={"text": "<テキスト>", "username": "<通知元ユーザ名>", "channel": "<投稿先チャンネル名>"}' <Webhook の URI>
curl -i -X POST -d 'payload={"text": "<テキスト>", "username": "<通知元ユーザ名>", "channel": "<「@」+通知先ユーザ名>"}' <Webhook の URI>
sudo -u mattermost mmctl --local user create --username="redmine" --email="メールアドレス" --password="パスワード"
curl -i -H 'Authorization: Bearer <投稿元ユーザのアクセストークン>' -H 'Content-Type: application/json' -d '{"channel_id": "<チャネルの ID>", "message": "<メッセージ>"}' http://mattermost.gotanda.or.jp:8065/api/v4/posts
こと DM の送信に関しては、Incoming Webhook を使うのが圧倒的に楽。で、Redmine 側のプラグインがどうだか調べたところ、(その範囲では)すべて Incoming Webhook を使用していた。これで、万一希望に沿うように改造することになっても、障壁は低い (^^;
。
Redmine 側のプラグインとしてとりあえず 3 つ見つかったが……
redmine_mattermost
」は最近メンテナンスされておらず、4.x 系まででしか動かないっぽい。redmine_issue_assign_notice
」は担当者が変更された際に新旧担当者に通知を飛ばすものだが、「redmine_messenger
」もこの機能を持っていることが判明。
というわけで、以下に redmine_messenger
との組み合わせについて雑にまとめておく。
redmine_issue_assign_notice
プラグインの機能も内包している)mmctl user convert <変換するユーザ名> --bot
なお、設定項目にある「ユーザー名をその人についての投稿(@ユーザー名)に変換する」「ウォッチャーを表示する」「チケットの更新」の効果は、よく判らない……