cURL 无效负载

cURL 无效负载

我正在编写一个脚本来使用curl 向Slack 发送消息。这是我的代码:

@echo off
@SETLOCAL EnableExtensions EnableDelayedExpansion
SET topic="Fw: *** Subject: Detail|detail|more-detail|detail:000"
echo %topic%
curl.exe -X POST -H "Content-Type: application/json" --data-urlencode "payload={\"channel\": \"#channelname\", \"username\": \"webhookbot\",\"text\": \"%topic\",\"icon_emoji\": \":ghost:\"}"  SLACK_WEBHOOK -k

执行此脚本后,我会收到invalid_payload错误以及回显结果。有人可以帮我解决这个问题吗?

我读过这个线,但我仍然不太确定如何解决它。

答案1

您似乎正在使用传入网络钩子。

选择以下其中一项:

a) 删除-H 'Content-type: application/json'或更改为-H 'Cotent-type: application/x-www-form-urlencoded'

curl.exe -X POST --data-urlencode "payload={\"channel\": \"#channelname\", \"username\": \"webhookbot\",\"text\": \"%topic\",\"icon_emoji\": \":ghost:\"}" SLACK_WEBHOOK_URL

b) 保留内容类型照原样,但更改--data-urlencode为数据并从数据中-d删除payload=

curl.exe -X POST -H "Content-Type: application/json" -d "{\"channel\": \"#channelname\", \"username\": \"webhookbot\",\"text\": \"%topic\",\"icon_emoji\": \":ghost:\"}" SLACK_WEBHOOK_URL

但如果您使用 Slack API(例如 /chat.postMessage):

1)您需要使用令牌授权 - 添加curl选项-H "Authorization: Bearer YOUR_TOKEN_HERE"

2) 不要使用--data-urlencode, 但是-d

来自文档:https://api.slack.com/methods/chat.postMessage

使用 application/x-www-form-urlencoded 数据进行 POST 时,可选的 Attachments 参数应包含 JSON 编码的附件数组。让自己轻松起来,并将整个消息作为 application/json 发送。

payload=3)从数据中删除from data

curl.exe -X POST -H 'Content-Type: application/json' -H "Authorization: Bearer YOUR_TOKEN_HERE" -d "{ \"channel\": \"#channelname\", \"text\": \"message body\", \"username\": \"webhookbot\", \"icon_emoji\": \":ghost:\" }" "https://slack.com/api/chat.postMessage"

相关内容