为 Slack 斜杠命令配置 Google Apps 脚本回调

mbb*_*mbb 3 google-apps-script slack-api

TL;DR -我想设置一个适用于 Google Apps 脚本的 Slack 斜杠命令。你怎么建议我这样做?

语境:

我目前使用google.com/script和 Sheets 在有人填写 Google 表单时触发对 Slack 的 webhook 调用。这里供参考。我的问题是我想添加的一个附加功能,它不会与此代码重叠。

我想在 Google Apps 中收听 Slack 斜杠命令,因此我一直在查看大量回调示例。我不明白为了让这一切顺利进行所需要的舞蹈。以下是变量:

  • 我已经设置了 Slack 斜杠命令,它要求提供 URL 和方法类型(POST 或 GET),然后给我一个token用于验证传出有效负载的信息。
  • 我已经在 Google API 上设置了 OAuth 2.0 客户端 ID,它提供了一个client IDsecret token.
  • 此处的 Google Apps 教程提供https://script.google.com/macros/d/{SCRIPT ID}/usercallback,但如果我在本指南中正确阅读,则需要用户授权

我已经查看了其他提到回调(thisthis)的问题,但没有发现任何相关的问题。

对能够配置回调 URL 并了解它将如何进行身份验证并最终使用来自 Google 中 Slack 的 API 调用的后续步骤的指导会很棒。

Pas*_*ers 7

你走在正确的轨道上,几周以来我一直在摆弄这个,所以也许这会有所帮助:

谷歌应用脚​​本

  1. 发布 > 部署为 Web 应用程序 > 版本:新建/作为应用程序执行:我/谁有权访问:任何人甚至匿名
  2. 您将获得该网络应用程序的网址,例如 https://script.google.com/macros/s/xxx-ver-long-number-xxx/exec
  3. 收到

松弛集成

  1. 创建新的斜线命令

  2. 方法 POST / URL:粘贴 The url from your web app

  3. 复制安全令牌,您需要在 Google App Script 中使用它

  4. 根据需要设置所有其他设置。

  5. 不要忘记保存

返回 Google 应用脚本

  1. 复制粘贴这个基本的东西

     function doPost(request) {
    
     //// SET SECURITY TOKEN (FROM SLACK COMMAND)
      var your_token = "YOUR_SLASH_COMMAND_TOKEN"; 
      var output;
    
     //// GET PARAMETES FROM SLACK POST REQUEST
      var params = request.parameters;
    
     //// ... and store them into variables
      var cmd_token = params.token; // or params.token[0] idk
    
     //// CHECK RECEIVED TOKEN AGAINST YOUR SAVED TOKEN
      if (your_token == cmd_token) {
         output = {"text":"SUCCESS"};
      } else {
         output = {"text":"INVALID TOKEN"};
      }
    
     //// SEND RESPONSE BACK TO SLACK
     return ContentService.createTextOutput(JSON.stringify(output)).setMimeType(ContentService.MimeType.JSON);
     }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 保存脚本并再次将脚本发布为 Web 应用程序(每次更改某些内容时都必须执行此操作,始终选择“新”作为版本

附加信息

这是你从每个斜杠命令中得到的东西。在上面的例子中,我只使用token...

token=gIkuvaNzQIHg97ATvDxqgjtO
team_id=T0001
team_domain=example
channel_id=C2147483705
channel_name=test
user_id=U2147483697
user_name=Steve
command=/weather
text=94070
response_url=https://hooks.slack.com/commands/1234/5678
Run Code Online (Sandbox Code Playgroud)

对我来说很完美,希望它有帮助:) 祝你好运!

  • @Albert 我用一个新的 Slack Command + 一个新的 GAS 项目再次测试了工作流程。我可以复制您看到的“401_client_error”。发布脚本的方式(发布为 Web 应用程序)在这里至关重要,而 Google 实际上确实改变了一些东西。新方法对我有用:发布 > 部署为 Web 应用程序 > 项目版本:新建 > 将应用程序执行为:我 > 谁有权访问:任何人,甚至匿名。(谁拥有访问权限部分已更改)现在我不再收到`401_client_error`。希望这可以帮助。我在上面更新了我的答案。 (2认同)