0
0

GASを叩くSlack BotのEvent Subscriptions → Request URL Verifiedを無理やりクリアする

Posted at

概要

  • SlackとGASを連携した仕組みを用意したい
  • GASでPost APIを用意したが、Slack BotのEvent Subscriptions → Request URL Verifiedが3秒以内で返す必要がありなかなかパスできない
  • ということでやり方を考えたのでメモ

結論

  • Challenge responseを返すコードのみにして、デプロイする
    • デプロイバージョンを覚えておく※①
  • Request URL Verifiedをパスする
  • 真のコード群に変更し保存してデプロイする
    • デプロイバージョンを覚えておく※②
  • デプロイ管理から、①を編集し、②のバージョンに切り替える

なぜこういうことをしているのか

  • コード量にもよるが、割とスプシへのRead/Write処理をいれるだけで処理完了時間が3秒超えがち
  • そうすると、SlackのRequest URL Verifiedでパスできない(タイムアウトする)
  • 下記コード量であれば1秒ぐらいで返せるようになるため、こいつでパスすれば良し
  • ただし、GASはデプロイ単位でURLが変更になる...
  • デプロイするとURLは変わるが、デプロイバージョンを編集すると別のバージョンにURLが同じでも切り替えることができる
  • ので、一度パスするコードをデプロイして、その後に本当の実装のバージョンに切り替えることができる
  • 補足するとRequest URL Verifiedは3秒タイムアウトがあるが、Slack Bot自体はおそらく正確なタイムアウト値はあるだろうが、10秒ぐらいだったら動作してくれる

Challengeを返すコード

function doPost(e) {
  var params = JSON.parse(e.postData.contents);
  return ContentService.createTextOutput(params.challenge);
}

これだけなら1秒ぐらいで返してくれる

雑感

めっちゃハマった。。。

0
0
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
0
0