为Slack斜杠命令

时间:2017-02-25 13:05:15

标签: google-apps-script slack-api

TL; DR - 我想设置一个适用于Google Apps脚本的Slack斜杠命令。您如何推荐我这样做?

上下文:

当有人填写Google表单时,我目前使用表单google.com/script来触发对Slack的webhook调用。 Here it is for reference。我的问题是我想添加的一个附加功能,它不会与此代码重叠。

我想在Google Apps中收听Slack斜杠命令,所以我一直在查看大量的回调示例。我不明白为了实现这一目标所必需的舞蹈。以下是变量:

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

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

对于能够配置回调URL并了解它如何进行身份验证以及最终消耗来自Google中的Slack的API调用的下一步指导将非常棒。

1 个答案:

答案 0 :(得分:3)

你走在正确的轨道上,因为几个星期以来我正在摆弄它,所以这可能会有所帮助:

Google App脚本

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

    1. 创建新的斜线命令

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

    3. 复制安全令牌,您需要在Google App脚本中

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

    5. 不要忘记保存

    6. 返回Google App脚本

      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);
         }
        
      2. 保存脚本并再次将脚本发布为Web应用程序(每次更改内容时都必须执行此操作,请始终选择“new”作为版本

      3. 其他信息

        这是你从每个斜杠命令得到的东西。在上面的示例中,我只使用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
        

        适合我的作品,希望有所帮助:)祝你好运!