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

私のマシン (Windows 8.1 を実行) に最新の cURL をインストールしました。上記のスクリプトを実行すると、次のようになります。

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

All quoting handled by cmd.exe is done with double quotes except to enclose the command to run within a FOR /F statement. So your cURL command running on Windows shall to be like:

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-urlencodeparam がそのバージョンでサポートされていないため、動作しなくなり、それなしでは動作しないようです。

現在 cURL 7.29 で使用しており、正常に動作しています。

于 2016-09-22T02:41:20.383 に答える