【GAS】Slackで匿名Botを実装する
はじめに
最近記事の投稿を始めたTutuです。
今回は社内で誰でも遠慮なく発言できる場所を作りたいと思って匿名Botを以下を参考に作成しました。
実装に関してはほぼこちらのコードを参考にさせていただきました。なので今回は解説をしていこうと思います。
→gasで作ったslackbotにDMすると匿名化されてチャンネルに投稿されるのを作った
概要としては匿名BotにDMを投稿するとincoming webhook
を利用して特定のChannnelにBotを通して投稿されるというものです。
Slack Appの設定
bot eventsについて
message.im
→BotのDMに投稿されたときのイベント
message.channels
→Botに関するメッセージがチャンネルに投稿された時のイベント
app_mention
→Botに関連するメッセージのイベント(message.channels、message.groups、message.mpim)
実装
※今回は簡易的な説明のみ行いたいと思います
イベントリクエストの信頼性を確認
if(postData.type == 'url_verification') {
return ContentService.createTextOutput(postData.challenge);
}
今回はBotへのDMのみ反応するためimを設定
postData.event.channel_type == 'im'
postData.event.text
から実際の投稿を取得できるのでそれをjson
としてmessageData
に格納
→参考:Slack API Document
var slackUrl = 'Incoming WebhooksのURL';
var message = postData.event.text;
var messageData = {
'text': message
};
後はPOST
時のオプションを設定してincoming webhook
でPOST
するだけ!
var options = {
'method' : 'POST',
'headers' : {'Content-type': 'application/json'},
'payload' : JSON.stringify(messageData)
};
return UrlFetchApp.fetch(slackUrl, options);
以下全コード
function doPost(e) {
var postData = JSON.parse(e.postData.getDataAsString());
console.log(postData.type);
if(postData.type == 'url_verification') {
return ContentService.createTextOutput(postData.challenge);
} else if (
postData.event.channel_type == 'im'
) {
return reply(postData);
}
return 0;
}
function reply(postData){
var slackUrl = 'Incoming WebhooksのURL';
var message = postData.event.text;
var messageData = {
'text': message
};
var options = {
'method' : 'POST',
'headers' : {'Content-type': 'application/json'},
'payload' : JSON.stringify(messageData)
};
return UrlFetchApp.fetch(slackUrl, options);
}
結果
AnonymousとしてChannnelに投稿されました!
最後に
今回はこの記事のほぼ流用だったので、今後は匿名投稿時のマニュアルをスラッシュコマンドで設定するなど、実際に社内で使いやすいようにするためにアレンジしていけたらと思います!
参考文献
Author And Source
この問題について(【GAS】Slackで匿名Botを実装する), 我々は、より多くの情報をここで見つけました https://qiita.com/Tutu12344/items/ae99d1a94b1232368633著者帰属:元の著者の情報は、元の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 .