LoginSignup
1
1

More than 5 years have passed since last update.

curl経由でSlackにメッセージを飛ばす

Posted at

【経緯】

これの派生のような感じです。
上記でせっかくSlack APIについて軽く触れてみたので、第二弾としてサーバーからcurlコマンドでSlackのチャンネルにメッセージを投げてみました。
※基本的に参考にさせていただいた方の記事で手順は確認出来るので、簡単にメモ&はまったところだけ記載します。

【Tokenの取得】

  1. Slack APIにアクセス
  2. 「Generate test tokens」をクリック
  3. 「Create token」をクリック
  4. 作成されたTokenをコピーする

【サーバーからのcurl実行(chat.postMessage)】

■特定のユーザに飛ばすとき

command
$ curl -XPOST -d "token={作成したToken}" -d "channel={メッセージを飛ばしたいチャンネル名}" -d 'text=<@user_id> メッセージだよ!!!' -d "username={メッセージ通知元}" -d "icon_url={アイコン画像のURL}" "https://slack.com/api/chat.postMessage" 

@channelに飛ばすとき

command
$ curl -XPOST -d "token={作成したToken}" -d "channel={メッセージを飛ばしたいチャンネル名}" -d 'text=<!channel> メッセージだよ!!!' -d "username={メッセージ通知元}" -d "icon_url={アイコン画像のURL}" "https://slack.com/api/chat.postMessage" 

【はまったところ】

textだけシングルクォーテーションという記述からお察しの通り、もともとtextも全部ダブルクォーテーションで囲んでました。

NG
$ curl -XPOST -d "token={作成したToken}" -d "channel={メッセージを飛ばしたいチャンネル名}" -d "text=<!channel> メッセージだよ!!!" -d "username={メッセージ通知元}" -d "icon_url={アイコン画像のURL}" "https://slack.com/api/chat.postMessage" 

そしてエラーでコマンドがこける。当然ですね(ヤケクソ)

エラー
-bash: !channel: event not found

【まとめ】

サーバーサイドのエンジニアという訳ではないですが、これくらいは知っとこうねっていう内容にはまったので精進します。
(実際過去にcurl経由ではないですが同じような現象には発生したことがある)

【参考】

https://qiita.com/mizuki_takahashi/items/3f77c2e5b6142563ce66
https://qiita.com/daigon/items/474064e484dcd7136bae
https://nj-clucker.com/single-double-back-quote-on-shell-script/

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1