WebhookやAPIを利用し、特定のチャンネルへ通知する方法。定期的にメッセージを送信したり、特定の挙動をトリガーにして通知する際に利用します。
API
SendMessagesを利用。オフィシャルのドキュメントからサンプルを拝借。
curl -H "X-Auth-Token: トークン記載" \
-H "X-User-Id: Id記載" \
-H "Content-type:application/json" \
http://localhost:3000/api/v1/chat.sendMessage \
-d '{"message": { "rid": "rid記載", "msg": "This is a test!", "alias": "テスト通知" , "avator": "http://avatorのurl" }}'
APIを投げるユーザにbotのロールがないと、aliasとavatorはなりすまし防止でクエリは蹴られるようですので気を付けてください。
Webhook
WebhookのURL作成の流れ
1.「管理」→「サービス連携」を選択
2.「+New」選択
3.適当に値を入力
4.「保存」を押す
5.作成したWebhookの設定を有効にする
6.「保存」を押して、WebhookのURLをコピー
7.URLのIP、FQDN部分は適宜修正して投げる
//Powershell(パワーシェル)で投げる $url = "http://10.10.10.10:3000/hooks/WLhhRzki6fskiL2cM/xC3TrW8aSzWevaB6eoiu6wXfJWiYsTkd7tF3PfMd9gpNTg55" $postText = ConvertTo-JSON @{ text = "webhookを利用しての通知" } $Body = [Text.Encoding]::UTF8.GetBytes($postText) //日本語投げると文字化けするためエンコードしておく Invoke-RestMethod -Method Post -Uri $url -Body $body -ContentType 'application/json'
//Curlで投げる場合 curl -X POST -H 'Content-Type: application/json' --data '{"alias":"aaaaaa","emoji":":smile:","text":"Example message"}' http://10.10.10.10:3000/hooks/WLhhRzki6fskiL2cM/xC3TrW8aSzWevaB6eoiu6wXfJWiYsTkd7tF3PfMd9gpNTg55
8.#generalのチャンネルに投稿されているはず。。。(*´ω`*)