【发布时间】:2019-04-05 22:45:21
【问题描述】:
我已经设置了我认为应该是有效的 JSON 输出以在 slack 中发送消息,但 Slack 一直拒绝它。
我使用 slack 的 api 网站上的指南尝试了多种不同的消息布局格式,但到目前为止,唯一成功发送的方法是完全扁平的 JSON,没有块格式。
function submitValuesToSlack(e) {
var name = e.values[1];
var caseNumber = e.values[2];
var problemDescription = e.values[3];
var question = e.values[4];
var completedChecklist = e.values[5];
var payload = [{
"channel": postChannel,
"username": postUser,
"icon_emoji": postIcon,
"link_names": 1,
"blocks": [
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Name:*\n " + name
}
]
}]
}];
console.log(JSON.stringify(payload, null, "\t"));
var options = {
'method': 'post',
'payload': JSON.stringify(payload)
};
console.log(options)
var response = UrlFetchApp.fetch(slackIncomingWebhookUrl, options);
}
当我运行它时,我得到以下输出:
[
{
"channel":"#tech-support",
"username":"Form Response",
"icon_emoji":":mailbox_with_mail:",
"link_names":1,
"blocks":[
{
"type":"section",
"fields":[
{
"type":"mrkdwn",
"text":"*Name:*\n test"
}
]
}
]
}
]
我认为这是正确的,但是 slack api 只是以 HTTP 400 错误“无文本”拒绝它
我对块格式有什么误解吗?
编辑:
澄清一下,如果我将它用于我的 JSON 而不是更复杂的格式,则格式化是有效的:
{
"channel":"#tech-support",
"username":"Form Response",
"icon_emoji":":mailbox_with_mail:",
"link_names":1,
"text":"*Name:*\n test"
}
【问题讨论】:
-
payload是在options中分配数据的正确属性吗?这是从浏览器还是服务器发送的? -
我相信是这样,当我删除其他格式时,slack 会对此做出响应,也就是如果我只有:``` { "channel":"#tech-support", "username": "Form Response", "icon_emoji":":mailbox_with_mail:", "link_names":1, "text":"*Name:*\n test" }``
-
查看他们的 API 文档,我相信
"blocks":[]是导致问题的原因。试着把它拿出来。 -
@EternalHour 当然,但这不能回答 OP 的问题
-
@ErikKalkoken 这不是一个答案,因此,它是一个评论:)
标签: javascript json slack slack-api