Outgoing Webhooksはお勧めしませんとslackさんがおっしゃるので、ひとまずオウム返しするbotを作りましたので共有します。
下記のコードは、特定のチャンネルでのbotへのメンションに対してオウム返しするものになります。
下記のコード中のチャンネルID、ボットユーザIDはご自身の環境でログを仕込んで調べていただいて書き換えてもらえればと思います。
作り方
- スプレッドシートから
ツール>スクリプトエディタ
を選択してエディタを開いて下記のコードをコピペ
function doPost(e) {
var postData = JSON.parse(e.postData.getDataAsString());
// Event Subscriptionsに必要な部分
if(postData.type == 'url_verification') {
return ContentService.createTextOutput(postData.challenge);
} else if (
postData.event.channel == 'チャンネルID' // 指定のチャンネルだけを観測する
&& postData.authed_users[0] != 'ボットユーザID' // botが発言者の場合には反応しない
&& postData.event.text.indexOf('ボットユーザID') != -1 // botが呼ばれた時だけ反応する
) {
return reply(postData);
}
return 0;
}
function reply(postData){
// Incoming WebhooksのURL
var slackUrl = 'Incoming WebhooksのURL';
// botへのメンションを全て消す
var text = postData.event.text.replace(/<@ボットユーザID>/g, '').trim();
// おうむ返しするテキストを用意する
var messageData = {
'text': '<@' + postData.event.user + '> ' + text
};
var options = {
'method' : 'POST',
'headers' : {'Content-type': 'application/json'},
'payload' : JSON.stringify(messageData)
};
return UrlFetchApp.fetch(slackUrl, options);
}
-
公開>ウェブアプリケーションとして導入
を選択すると下記の画像のようなのがでてくる - プロジェクトバージョンをnewにして、自分が実行者でアクセスは匿名でもできるように選択して更新をクリックする
- 今後コードを修正するたびにnewにして更新した方がよいと思います(何でかは良く理解していない)
- 更新して出てきたURLはslack apiで使うのでコピーしておく
slack botの設定
- https://api.slack.com/ にアクセスしてbotを流れるように作成
- Event SubscriptionsのRequest URLに先ほどスプレッドシートでコピーしたURLをペースト(おそらく緑のチェックマークがつくはず)
- Subscribe to Workspace EventsとSubscribe to Bot Eventsの設定は下記の画像のように設定する
(私はこれでできた)