Slack提供的cURL命令无法发布内联json

Slack提供的cURL命令无法发布内联json,curl,slack-api,slack,Curl,Slack Api,Slack,我正试图在一个空闲频道上发布消息。Slack提供了一个cURL命令的示例,但是逐字运行这个命令是行不通的 提供的命令是: curl -X POST --data-urlencode 'payload={"channel": "#deployment", "username": "webhookbot", "text": "This is posted to #deployment and comes from a bot named webhookbot.", "icon_emoji": ":g

我正试图在一个空闲频道上发布消息。Slack提供了一个cURL命令的示例,但是逐字运行这个命令是行不通的

提供的命令是:

curl -X POST --data-urlencode 'payload={"channel": "#deployment", "username": "webhookbot", "text": "This is posted to #deployment and comes from a bot named webhookbot.", "icon_emoji": ":ghost:"}' https://hooks.slack.com/services/SomeCode/OtherCode/3rdCode
我已经在我的机器上安装了最新的cURL(运行windows 8.1),当运行上面的脚本时,我得到:

curl: (6) Could not resolve host: #deployment,
curl: (6) Could not resolve host: username
curl: (6) Could not resolve host: webhookbot,
等等

我认为这可能是关于windows控制台如何处理单引号和双引号的问题,但我一直无法让它正常工作

我发现如果我用一个文件替换json字符串,payload@filename.txt然后它就可以工作了,但是我真的需要json是动态的

有人能告诉我这里出了什么问题吗?

找到了答案

我需要将包装整个JSON字符串的单引号更改为双引号,然后在此上下文中转义单引号的方法不是\“或^”,而是“”

因此,这起了作用:

curl -X POST --data-urlencode "payload={""channel"": ""#deployment"", ""username"": ""webhookbot"", ""text"": ""This is posted to #deployment"", ""icon_emoji"": "":ghost:""}" https://hooks.slack.com/services/Code1/Code2/Code3

我希望这能节省别人花在这上面的时间。

我的报价很好

curl -X POST --data-urlencode 'payload={"channel": "#general", "username": "webhook", "text": "Some message.", "icon_emoji": ":ghost:"}' https://hooks.slack.com/services/BLAHBLAH/BLAHBLAHBLAH/BLAHBLAHBLAHBLAH
但是,当尝试将其与cURL 7.15一起使用时,可能是因为该版本不支持
--data urlencode
参数,并且如果没有它,它似乎无法工作


目前,它与cURL 7.29一起使用,工作正常。

cmd.exe处理的所有引用都使用双引号完成,只是将要在FOR/F语句中运行的命令括起来。因此,在Windows上运行的cURL命令应如下所示:

curl -X POST --data-urlencode "payload={'channel': '#deployment', 'username': 'webhookbot', 'text': 'This is posted to #deployment', 'icon_emoji': ':ghost:'}" https://hooks.slack.com/services/Code1/Code2/Code3

也适用于powershell,经过测试。