2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

記事投稿キャンペーン 「2024年!初アウトプットをしよう」

【Slack】Webhookを時間になったら送信する【Postman】

Last updated at Posted at 2024-01-29

はじめに

以下の目的で作ってみたのでまとめる。

  • Postmanの使い方を練習する
  • API(Webhook)の使い方を練習する

:point_down:参考にしたページ(作成の流れは公式の手順通りではあるので)

Slack側の設定

Webhookを受信できるように設定

公式の手順でいうところの 2. Enable Incoming Webhooks から作業を始める。
1. Create a Slack app は割愛。
image.png
アプリのメニューから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リクエストを選択し、新規に追加する。

以下の画面が表示されるので、リクエストの内容を入力していく。
image.png
ボディ以外の入力箇所と入力値は以下の通り。

入力箇所 入力値
メソッド POST
URL コピーしたWebhookURL (https://hooks.slack.com/services/…
認証 認証なし
ヘッダー (ボディ作成時に自動で設定されるため任意) Content-Type : application/json

ボディは「Raw」を選択し、JSON形式に設定できている事を確認する。

最後にボディに適当にメッセージを入力する。

body
{
    "text":"Hello, World!"
}

送信に成功するとレスポンスはokと返ってくる。
240125_09.png

そのためSlackを見ると、投稿先のチャンネルにメッセージが投稿されていることが分かる。

Webhookでメッセージの送信ができたので
このリクエストの設定を元に、メッセージとスケジュールを設定する。

時間になったら送信する用のメッセージを作成

メッセージの作成はBlock Kit Builderで行う。
左側にメッセージを作成するパーツみたいなものがあるので、
選択してテキストだけ書き換えて作成。
右側のPayloadはWebhookのボディに貼り付けたいので、
作成できたら、画面上の「Copy Payload」を押下してコピーする。

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版>"
				}
			]
		}
	]
}

240125_12.png

スケジュールを設定したいWebhookのボディに、コピーしたPayloadを貼り付ける。
作成が完了した後は「保存」を押下する。
(保存しないとスケジュールを設定できない為)
240126_14.png

スケジュールを設定する

Webhookはコレクション配下に保存されている為、
コレクションを押下して、実行メニューを開く。
240126_15.png
実行メニューのスケジュールタブにある
「スケジュール実行」を押下して、スケジュールを編集する。

編集画面の左側は実行するAPIを選択する。

編集画面の右側は、今回はスケジュール名・スケジュールを実行する頻度を設定する。
その他の項目はお好みで。
設定できたら画面右下の「Schedule Run」を押下して保存する。
240126_18.png
スケジュールの概要が表示されていれば、スケジュールは作成完了となる。

Postman側も設定は以上で終わり。

設定通り動くか確認

今回は、リクエストを午前11時に送信するようスケジュールを作成した。
Slack側を見てみると作成した通りの時間に
メッセージが投稿されている事を確認できた。
240126_19.png

ちなみにPostman側でスケジュールの「表示」を押下すると

ログ等を確認できる。

まとめ

今回作ってみたことで目的の

  • Postmanの使い方を練習する
  • API(Webhook)の使い方を練習する

は達成できたと思う。
また、Webhookを送信するために必要な情報・準備について
Slackのユーザートークンやボットトークンが必要なAPIと比較して
自分の中で整理できた事は良かった。

最近はPostmanの使い方からAPI関連を色々触ってみている
(RPAの作成に役立つと思い)のでまた何か作ったら記事にまとめたい。
できればSlack以外のAPIにも触れたいところ

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?