別に記事にするほどのことでもないんですが。
SlackにPOStするやつを準備するとき無駄に手間取ったので、まとめておきます。
前準備
複数人がいるワークスペースだと間違えて#generalとかに流してしまう可能性があるので、
専用のワークスペースを作るのもアリだと思います
(Slack ワークスペースを作成するが参考になりそうです)
アプリ作成
https://api.slack.com/ にアクセス
「Start Building」ボタンをクリック
アプリ名とアプリを使うワークスペースを選択し、「Create App」を押す
Webhook登録
ページ下部の「Add new Webhook to Workspace」を押す
とりあえずアプリをワークスペースにインストールします
メッセージの投稿先は#generalにしました
専用のワークスペースではない場合は自分へのDMにしても良いと思います
これで登録は完了です!
ページ下部にあるcurlコマンドを実行すると、
こんな感じのメッセージが来ます。
<補足>
僕はWindows環境なのですが、上のcurlコマンドをそのまま実行すると、
C:\Users\user>curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World!"}' https://hooks.slack.com/services/AAAAAAAAA/AAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAA
curl: (6) Could not resolve host: application
invalid_payload
といった感じで、エラーになります。
これは、Windowsのコマンドプロンプトがシングルクォーテーション('
)をうまく処理できないために起こるエラーです。(僕は原因に気づくのに10分かかりました)
僕はWSLで実行しましたが、Windowsで実行したい場合は、上のcurlコマンドを
curl -X POST -H "Content-type: application/json" --data "{'text':'TEXT'}" https://hooks.slack.com/services/AAAAAAAAA/AAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAA
と変えてください。
Linuxコマンド化
いちいちcurlするのがめんどいので、/usr/local/bin/slacknotify
に以下のようにしました。
#!/bin/bash
curl -X POST -H "Content-type: application/json" --data '{"text":"Message from VPS : '"$@"'"}' "https://hooks.slack.com/services/AAAAAAAAA/AAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAA" -kLso /dev/null
これで、slacknotify Message to Slack
といった感じでSlackにメッセージが送れます。
僕は処理完了時の通知やアプリのフィードバック・エラーログなどに使っています。
Pythonで使うなら以下のようになります。
import requests
def feedback(message):
headers = {
'Content-type': 'application/json'
}
data = '{"text":"{}"}'.format(message)
response = requests.post('https://hooks.slack.com/services/AAAAAAAAA/AAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAA', headers=headers, data=data)