LoginSignup
5
6

More than 5 years have passed since last update.

ライブラリを使わずgasだけで作るオウム返しするslack botの作り方

Last updated at Posted at 2019-04-10

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で使うのでコピーしておく

スクリーンショット 2019-04-10 14.12.23.png

slack botの設定

  • https://api.slack.com/ にアクセスしてbotを流れるように作成
  • Event SubscriptionsのRequest URLに先ほどスプレッドシートでコピーしたURLをペースト(おそらく緑のチェックマークがつくはず)

スクリーンショット 2019-04-10 14.05.32.png

  • Subscribe to Workspace EventsとSubscribe to Bot Eventsの設定は下記の画像のように設定する

スクリーンショット 2019-04-10 14.05.43.png

(私はこれでできた)

ログに関しての参考資料

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6