7

我正在尝试向 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": ":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 是动态的。

谁能建议这里有什么问题?

4

3 回答 3

11

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
于 2016-11-17T07:49:59.810 回答
6

弄清楚了。

我需要将包裹整个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

我希望这可以节省其他人我花在它上面的时间。

于 2015-11-16T14:52:40.343 回答
0

我的报价工作正常。

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 一起使用,并且运行良好。

于 2016-09-22T02:41:20.383 回答