🤖
GAS経由でSlackBotにスレッド返信で通知させる
TL;DR
- GAS経由でSlackBotに通知させる時に、複数の内容をスレッドにしてポストさせたい
-
incoming webhook
を使って通知すると、返信する投稿のthread_ts
が取得できない - SlackAppのBotにして、
chat.postMessage
を使うとやりたい動作ができた
背景
- Google App Script 経由で、SlackにPostしていたが、複数の内容をスレッドにして通知させたい
- Slackの
incoming webhook
を使ってお手軽に通知を実装していたがやりかたが分からなかった
実装例
test()
を実行すると、"テストだよ"をまず投稿して、その後返信として"スレッドだよ"が追加される
BOT_TOKEN
と CHANNEL_ID
はそれぞれの環境に合わせて変える必要がある
function test(){
const thread_ts = postToSlack("テストだよ")
postToSlack("スレッドだよ", thread_ts);
}
// slack に post する
function postToSlack(message, thread_ts=null) {
var url = "https://slack.com/api/chat.postMessage";
var payload = {
"token" : `${BOT_TOKEN}`,
"channel" : `${CHANNEL_ID}`,
"text" : `${message}`
};
if(thread_ts){
payload["thread_ts"] = thread_ts;
}
var params = {
"method" : "post",
"payload" : payload
};
// Slackに投稿する
const response = UrlFetchApp.fetch(url, params);
const dates = JSON.parse(response.getContentText('utf-8'));
// thread_ts を返す
return dates['ts'];
}
忘れがちなこと
- 通知を出したい channel に app自身を追加すること
感想
incoming webhook
で同じようなことができるやり方があれば教えて欲しい。
Slack的には、Appを使うことが推奨されていそうだけど
Discussion