json - 如何修复从松弛对话框到谷歌表格的“连接有问题”错误
问题描述
我正在尝试构建一个 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 表格中接收我的松弛对话响应。
谢谢您的帮助。
解决方案
正如您正确假设的那样,问题是 Slack 期望您收到 200 OK 响应,但正文为空。
以下是如何使用 Google Apps 脚本发送它:
return ContentService.createTextOutput("");
我用 Slack Dialog 对其进行了测试,它可以工作。
这类似于这个问题。
推荐阅读
- spring-data-redis - 我们如何使用 SpringBoot 为 RedisHash 配置 TTL?
- html - 如何在不使用浮动的情况下在 CSS 中将元素彼此相邻定位。即侧边栏旁边的主要内容
- kendo-ui - 剑道多选过滤器不显示
- bash - 使用 FOR 循环将列表中的项目与 ARRAY 中的项目进行比较
- python - Django在表单中静态添加字段
- python - 如何通过云功能将 GCP 的安全中心资产导出到云存储?
- javascript - 触摸事件未在移动设备上触发
- ansible - 如何在 ansible 中使用 {{ item }}?
- php - 根据 WooCommerce 中的用户角色和购物车总数更改结帐时的订单按钮文本
- apache-spark - Glue PySpark 作业因资源问题而失败