Slack Webhook - 获取 Invalid_Payload 错误

14

我正在尝试设置一个钩子到Slack,但是收到了“Invalid_Payload”错误信息。

我已经查看了Stack、Slack和Github... 但找不到我需要的答案。

由于涉及隐私问题,在这里用“CustomLink”代替实际链接。

代码:

var request = require('request')

var webhook = "https://hooks.slack.com/services/CUSTOMLINK"

var payload={"text":"This is via an integration from Me - It is a test"}

request.post({url: webhook, payload: payload}, function(err, res){
    if(err){console.log(err)}
    if(res){console.log(res.body)}
})

错误:

 invalid_payload
5个回答

7
这对我有帮助。
var payload = {"text":"Message to be sent"}
payload = JSON.stringify(payload);

request.post({url: url, body: payload},function(err,data){
    console.log(data.body);
})

6
var payload= {"text":"This is via an integration from Me - It is a test"}
payload = JSON.stringify(payload)

我忘记将我创建的JSON字符串化。我真是太笨了。


通过设置头部 {"Content-type": "application/x-www-form-urlencoded"},它对我起作用了。 - mgalic

4
我的猜测是您缺少了“Content-type: application/json”头信息。这样,您发送的json数据就无法被正确识别为json格式。您可以尝试:
var request = require('request')

var webhook = "https://hooks.slack.com/services/CUSTOMLINK"

var payload={"text":"This is via an integration from Me - It is a test"}

var headers = {"Content-type": "application/json"}

request.post({url: webhook, payload: payload, headers: headers}, function(err, res){
    if(err){console.log(err)}
    if(res){console.log(res.body)}
})

请参考此处,查看“直接以JSON格式发送”的选项。


1
尝试使用我的Webhook地址,但没有帮助。仍然返回相同的错误:invalid_payload。 - KJ Carlson

2

使用Postman发送POST请求,将您的webhook用作URL,在body中使用原始格式,并使用{ "text":"hello" },并按照以下图片操作:

postman

或者使用以下curl命令:

curl --location --request POST 'https://hooks.slack.com/services/o1GLCDvsanqNDqMHCBQAd7F3' \
--header 'Content-Type: application/json' \
--data-raw '{
    "text": "hello"
}'

1
var request = require('request');
var apiurl = webhookurl;

var payload= {
  username:'myusername',
  text:'test'
}
payload = JSON.stringify(payload);

request.post(
  {
  url:apiurl,
    form:payload
  }, function (err, result, body) {

    if(err) {
      return err;
    } else {

      console.log(body);
    }

  });

如果我这样做,像 ( ) ! 这样的字符会被转换成 %28 %29 %21 - Sharcoux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接