slackでIncoming Webhooksの設定を行うと、以下のように動作確認用としてHello Worldのメッセージを出力する為のcurlコマンドのサンプルが表示されます。
ですが、これをWindowのコマンドプロンプトから実行すると、以下のようにCould not resolve host: applicationエラーが出力されます
c:\> curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World!"}' https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/xxxxxxxxxxxxxxxxxxxxxxxx
curl: (6) Could not resolve host: application
invalid_payload
これは、提示されたコマンドがLinux向けのものになっており、また、LinuxとWindowsで文字列クォートのルールが異なっているためです。
解決方法
以下のようにクォートの仕方を変更すればWindowsからもcurlコマンドでメッセージの送信が行えます。
c:\> curl -X POST -H "Content-type: application/json" --data "{\"text\":\"Hello, World!\"}" https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/xxxxxxxxxxxxxxxxxxxxxxxx
ok
Windowsで実行する時は、下記の2点に気をつければよいです。
- スペースを含むパラメータはダブルクォート「"」でくくる。
- ダブルクォートの中にあるダブルクォートは、バックスラッシュ・円記号「\」でエスケープする
メッセージ内に「"」が多くてエスケープが大変な場合は、別ファイルにした方が分かりやすくなる場合もあります。curlコマンドでは@filenameでファイルの内容を渡すことができるので、この機能を利用します。
echo {"text":"Hello world!"} > slack_message.txt
curl -X POST -H "Content-type: application/json" --data @slack_message.txt https://hooks.slack.com/services/...
del slack_message.txt
こちらもおススメ
Curl初めてだったのでピンポイントで助かりました。