首页 > 解决方案 > 如何修复从松弛对话框到谷歌表格的“连接有问题”错误

问题描述

我正在尝试构建一个 Slack 斜杠命令,该命令可以打开一个对话框并使用谷歌应用脚​​本将结果发送到谷歌表格。我已经打开对话框,但是当我尝试发送它时,我得到了错误 -

We had some trouble connecting. Try Again?

我花了几个小时在堆栈溢出上试图解决我的问题。我认为这与返回的 200 / 空白消息有关。问题是我不知道在我的谷歌脚本中添加它的位置。我的经验是在 Python 中,我不知道足够的 javascript 知道在哪里添加相关的 return 200 块。我在下面添加了 google javascript,因为我无法附加文件。

我尝试了几种方法来添加相关的回报,但我不知道在哪里添加或如何构建它。我发现的所有示例似乎都不适用于 Google App Script(例如,不支持箭头函数)。

function doPost(e) {
var params = e.parameter;
var token = params.token;
var text = params.text;
var trigger_id = params.trigger_id;
var slackUrl = "https://slack.com/api/dialog.open";
if (token == ""){ 
  var dialog = {
    "token": "", 
    "trigger_id": trigger_id,
    "dialog": JSON.stringify({
      "callback_id": "ryde-46e2b0",
      "title": "Submit a Slack-Update",
      "submit_label": "Update",
      "elements": [
        {
          "type": "text",
          "label": "Yesterday",
          "name": "yesterday",
          "placeholder": "What did you finish yesterday?"
        },
        {
          "type": "text",
          "label": "Today",
          "name": "today",
          "placeholder": "What will you work on today?"
        },
        {
          "type": "text",
          "label": "Blockers",
          "name": "blockers",
          "value": "None"
         }
      ]
    })
  }
  var options = {
    'method' : 'post',
    'payload' : dialog,
  }; 
  UrlFetchApp.fetch(slackUrl, options);
} 
else{
  var res = {"text":"failed token verification!"} 
  return 
ContentService.createTextOutput(JSON.stringify(res)).setMimeType(ContentService.MimeType.JSON);
  }
  return ContentService.createTextOutput();
}

我相信,一旦我收到原始 json,我就可以在 google 表格中正确格式化响应,我只需要通过这一步并实际在 google 表格中接收我的松弛对话响应。

谢谢您的帮助。

标签: jsonpython-3.xgoogle-apps-scriptgoogle-sheetsslack-api

解决方案


正如您正确假设的那样,问题是 Slack 期望您收到 200 OK 响应,但正文为空。

以下是如何使用 Google Apps 脚本发送它:

return ContentService.createTextOutput(""); 

我用 Slack Dialog 对其进行了测试,它可以工作。

这类似于这个问题


推荐阅读