【问题标题】:Slack Webhook - Getting Invalid_PayloadSlack Webhook - 获取 Invalid_Payload
【发布时间】:2016-10-07 20:34:46
【问题描述】:

我正在尝试为 Slack 设置一个 webhook,但收到“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

【问题讨论】:

    标签: node.js request slack-api slack


    【解决方案1】:

    这对我有用

    var payload = {"text":"Message to be sent"}
    payload = JSON.stringify(payload);
    
    request.post({url: url, body: payload},function(err,data){
        console.log(data.body);
    })
    

    【讨论】:

      【解决方案2】:
      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"
      【解决方案3】:

      我的猜测是您缺少 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 格式发送”here 以供参考

      【讨论】:

      • 用我的 webhook 地址试过这个,但没有帮助。仍然返回相同的错误:invalid_payload
      【解决方案4】:
      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
      【解决方案5】:

      尝试使用邮递员发送帖子请求,方法是使用您的 webhook 作为 URL,在正文下使用 raw 并使用 { "text":"hello" } 并按照下图操作:

      或者使用这个 curl 命令:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-02
        • 1970-01-01
        相关资源
        最近更新 更多