LoginSignup
5
2

More than 1 year has passed since last update.

Cloudflare Workers から Slack にメッセージする

Last updated at Posted at 2022-11-05

Bot User OAuth Token の作成

こちらの記事に倣って、作成できます。

Slack API を使用してメッセージを投稿する

Slack チャネル作成

チャネルを作成し、Bot が投稿できるように Integrations を追加します。

image-20221105014944617

コード準備

kyouheicf/workers-slack-cron のコードを使います。基本パターンとして、以下の記事を参照しました。

Build and Post Messages to Slack Using Javascript and the Slack API | by Alejandro González | Trabe | Medium

git clone https://github.com/kyouheicf/workers-slack-cron
cd workers-slack-cron

wrangler インストール

# npm install -g wrangler
% wrangler --version  
 ⛅️ wrangler 2.1.15 
--------------------

ローカルテスト用の環境変数設定

.dev.vars に設定します。

.dev.vars
SLACK_BOT_ACCESS_TOKEN = "xoxb-xxx"
SLACK_BOT_ACCESS_CHANNEL = "your-channel-name"

ローカル Cron Trigger テスト

Cron Triggers · Cloudflare Workers docs

以下のコマンドで実施できます。

wrangler dev --test-scheduled

で立ち上げた後に、__scheduledエンドポイントにリクエストを投げます。

curl "http://localhost:8787/__scheduled?cron=*+*+*+*+*"

すると、以下のように確認できます。

% wrangler dev --test-scheduled
 ⛅️ wrangler 2.1.15 
--------------------
Using vars defined in .dev.vars
Your worker has access to the following bindings:
- Vars:
  - SLACK_BOT_ACCESS_TOKEN: "(hidden)"
⬣ Listening at http://0.0.0.0:8787
- http://127.0.0.1:8787
- http://192.168.1.11:8787
Total Upload: 10.12 KiB / gzip: 2.81 KiB
1:19:28 AM GET /__scheduled 200
cron processed: event cron = * * * * *
cron processed: event type = scheduled
cron processed: event scheduledTime = 1667578768096
cron processed: event scheduledTime date = Fri Nov 04 2022 16:19:28 GMT+0000 (Coordinated Universal Time)
cron processed: event scheduledTime date jst = 11/5/2022, 1:19:28 AM
╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ [b] open a browser, [d] open Devtools, [l] turn on local mode, [c] clear console, [x] to exit                                                                                  │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Slack でもメッセージを受信できたことが確認できます。

image-20221105013736227

シークレット設定

作成した Bot User OAuth Token と Slack チャネル名をシークレットとして、設定します。

wrangler secret put SLACK_BOT_ACCESS_TOKEN
wrangler secret put SLACK_BOT_ACCESS_CHANNEL

Cron Trigger で公開

wrangler.toml ファイルに以下のように、記述します。
"* * * * *" だと毎分実行)

wrangler.toml
[triggers]
crons = [ "* * * * *" ]

以下のコマンドで公開し、定期実行させます。

wrangler publish src/index.js

Cron Trigger の確認

Cron Trigger により定期実行されるまで、多少時間がかかるケースがあります。

Testing Cron Triggers and potential delays

The recommended way of testing Cron Triggers is using Wrangler. Changes such as adding a new Cron Trigger, updating an old Cron Trigger, or deleting a Cron Trigger may take several minutes to propagate to the Cloudflare network edge.

Cloudflare Workers が Cron Trigger により定期実行され、Slack にメッセージされたことが確認できます。

image-20221105020048280

Real-time Logs でも定期実行の様子が確認できます。

image-20221105015940958

参考

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