はじめに
以下の目的で作ってみたのでまとめる。
- Postmanの使い方を練習する
- API(Webhook)の使い方を練習する
参考にしたページ(作成の流れは公式の手順通りではあるので)
Slack側の設定
Webhookを受信できるように設定
公式の手順でいうところの 2. Enable Incoming Webhooks から作業を始める。
1. Create a Slack app は割愛。
アプリのメニューからWebhookの設定ページへ移動。
Webhookを受信できるよう、オンに設定する。
オンにすると、画面下にWebhookURLの情報が表示される。
WebhookURLと、このWebhookURLで投稿する先のチャンネル名が
記載されているのでコピーする。
設定ページに書いてある通りWebhookでPOSTする時に
Content-Typeヘッダーはapplication/json
となっている必要があるので、
Postmanでリクエストを作成する際は留意しておく。
WebhookURLが作成されていない場合は
「Add New Webhook to Workspace」を押下すると
投稿先のチャンネルを選択する画面へ移動するので選択する。
この後は、Webhookの設定ページへ戻り、WebhookURLをコピーする。
Slack側での設定は以上で終わり。
【整理】WebhookでPOSTする際に必要な情報
- WebhookURL
- Webhookのボディの中身
(今回はボディをJSON形式で書く、ということもありContent-Typeヘッダーはapplication/json
)
ベースURIがhttps://slack.com/api
のAPIを
打つ際に必要なユーザートークンやボットトークンは不要。
ボディの中身の書き方は公式に色々書いてあるが
ビルダーがあるので、ビルダーでメッセージを作って
JSON(ビルダー内ではPayloadと呼ばれているもの)を
コピペする方法が手っ取り早いと思うのでリンクを貼っておく。
An overview of message composition
Formatting text for app surfaces
Block Kit Builder
ビルダーはSlack APIのメニューから開くこともできる。
Postman側の設定
Webhookのリクエストを作成&試しに送信
Postmanを開き、ワークスペースにある新規ボタンを押下。
HTTPリクエストを選択し、新規に追加する。
以下の画面が表示されるので、リクエストの内容を入力していく。
ボディ以外の入力箇所と入力値は以下の通り。
入力箇所 | 入力値 |
---|---|
メソッド | POST |
URL | コピーしたWebhookURL (https://hooks.slack.com/services/… ) |
認証 | 認証なし |
ヘッダー (ボディ作成時に自動で設定されるため任意) | Content-Type : application/json |
ボディは「Raw」を選択し、JSON形式に設定できている事を確認する。
最後にボディに適当にメッセージを入力する。
{
"text":"Hello, World!"
}
そのためSlackを見ると、投稿先のチャンネルにメッセージが投稿されていることが分かる。
Webhookでメッセージの送信ができたので
このリクエストの設定を元に、メッセージとスケジュールを設定する。
時間になったら送信する用のメッセージを作成
メッセージの作成はBlock Kit Builderで行う。
左側にメッセージを作成するパーツみたいなものがあるので、
選択してテキストだけ書き換えて作成。
右側のPayloadはWebhookのボディに貼り付けたいので、
作成できたら、画面上の「Copy Payload」を押下してコピーする。
Payload全文
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":mega: 定期投稿",
"emoji": true
}
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "plain_text",
"text": "Postmanでスケジュールされた投稿です。\n Webhookで投稿しています。\n スケジュールを変更する場合はPostmanを開いてください :flying_saucer:",
"emoji": true
}
},
{
"type": "divider"
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": ":bubbles: <https://web.postman.co//|Postman Web版>"
}
]
}
]
}
スケジュールを設定したいWebhookのボディに、コピーしたPayloadを貼り付ける。
作成が完了した後は「保存」を押下する。
(保存しないとスケジュールを設定できない為)
スケジュールを設定する
Webhookはコレクション配下に保存されている為、
コレクションを押下して、実行メニューを開く。
実行メニューのスケジュールタブにある
「スケジュール実行」を押下して、スケジュールを編集する。
編集画面の左側は実行するAPIを選択する。
編集画面の右側は、今回はスケジュール名・スケジュールを実行する頻度を設定する。
その他の項目はお好みで。
設定できたら画面右下の「Schedule Run」を押下して保存する。
スケジュールの概要が表示されていれば、スケジュールは作成完了となる。
Postman側も設定は以上で終わり。
設定通り動くか確認
今回は、リクエストを午前11時に送信するようスケジュールを作成した。
Slack側を見てみると作成した通りの時間に
メッセージが投稿されている事を確認できた。
ちなみにPostman側でスケジュールの「表示」を押下すると
ログ等を確認できる。
まとめ
今回作ってみたことで目的の
- Postmanの使い方を練習する
- API(Webhook)の使い方を練習する
は達成できたと思う。
また、Webhookを送信するために必要な情報・準備について
Slackのユーザートークンやボットトークンが必要なAPIと比較して
自分の中で整理できた事は良かった。
最近はPostmanの使い方からAPI関連を色々触ってみている
(RPAの作成に役立つと思い)のでまた何か作ったら記事にまとめたい。
できればSlack以外のAPIにも触れたいところ