mattermostでBOTから複数のチームに通知を一斉送信する
はじめに
どうも!生産技術部のエンジニアです。Mattermostサーバを立ち上げ、現在、50人以上のユーザが利用しており、それぞれのチームを作り活動しています。管理者からすべてのチームに、メンテナンス等の通知を送るため、BOTアカウントとシェルスクリプトを利用しました。スクリプトから通知を一斉送信する方法を紹介します。
環境
$ mattermost-cli version
Version: 5.14.0
Build Number: 5.14.2
Build Date: Fri Aug 30 20:20:48 UTC 2019
Build Hash: 817ee89711bf26d33f840ce7f59fba14da1ed168
Build Enterprise Ready: false
DB Version: 5.14.0
jq
コマンドによりjsonファイルからデータ抽出を実施するため、jq
コマンドを導入する必要があります。
実施方法
- 送信用のスクリプト(mattermost_admin_notification.sh)
- 通知設定ファイル(notification_setting.json)
- 送信メッセージ設定ファイル(message.json)
上記3つのファイルを同じ階層に配置し、スクリプトを実行する事で送信できます。
# 初回のみchmodを実施し、ファイルのアクセス権を変更する
$ chmod 755 mattermost_admin_notification.sh
# 通知を一斉送信する
$ ./mattermost_admin_notification.sh
送信用のスクリプト
jsonファイルをjqコマンドで展開し、curlコマンドで送信します。
#!/bin/bash
bot_access_token=$(cat notification_setting.json | jq -r '.["bot-access-token"]')
mattermost_url=$(cat notification_setting.json | jq -r '.["mattermost-url"]')
teams=$(cat notification_setting.json | jq '.teams')
# team数を取得
len=$(echo $teams | jq length)
# team毎のchannel-idを取得し、curlで送信
for i in $( seq 0 $(($len - 1)) ); do
channel=$(echo $teams | jq .[$i])
channel_id=$(echo $channel | jq '.["channel-id"]')
message=$(cat message.json | jq '.channel_id|='$channel_id)
curl --noproxy 10.75.94.188 -i -X POST -H 'Content-Type: application/json' -d "$message" -H 'Authorization: Bearer '"$bot_access_token" http://$mattermost_url/api/v4/posts
done
通知設定ファイル
<bot-access-token>
にはボット生成時のトークンを記入します。<channel-id>
は、MattermostのQ&Aを参考に取得しました。
{
"bot-access-token":"<bot-access-token>",
"mattermost-url":"10.75.94.188:8001",
"teams":[
{
"name":"Tomoyuki",
"channel":"off-topic",
"channel-id":"<channel-id>"
},
{
"name":"Elec",
"channel":"off-topic",
"channel-id":"<channel-id>"
}
]
}
送信メッセージ設定ファイル
Mattermost#message-attachmentsを参考に作成しました。
{
"channel_id":"",
"message":"This is a message from a admin_notification_bot",
"props":
{
"attachments":
[
{
"color": "#FF8000",
"pretext": "管理者からのお知らせです。",
"text": "@here 今週末にサーバを一時的に停止します。停止中はサービスをご利用できません。",
"author_name": "Tomoyuki Sugiyama",
"fields": [
{
"short":false,
"title":"目的",
"value":"サーバが正常な状態を維持できるように、定期的にシステムアップデート・セキュリティアップデートを実施します。"
},
{
"short":true,
"title":"停止日",
"value":"5/1 17:00"
},
{
"short":true,
"title":"再稼働日",
"value":"5/11 9:00"
},
{
"short":false,
"title":"その他",
"value":"分からないことがあれば@tomoyukiまでダイレクトメッセージを送ってください。"
}
]
}
]
}
}
Author And Source
この問題について(mattermostでBOTから複数のチームに通知を一斉送信する), 我々は、より多くの情報をここで見つけました https://qiita.com/TomoyukiSugiyama/items/3b194814d9cc218c5f1f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .