Bot User OAuth Token の作成
こちらの記事に倣って、作成できます。
Slack チャネル作成
チャネルを作成し、Bot が投稿できるように Integrations を追加します。
コード準備
kyouheicf/workers-slack-cron のコードを使います。基本パターンとして、以下の記事を参照しました。
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
に設定します。
SLACK_BOT_ACCESS_TOKEN = "xoxb-xxx"
SLACK_BOT_ACCESS_CHANNEL = "your-channel-name"
ローカル Cron Trigger テスト
以下のコマンドで実施できます。
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 でもメッセージを受信できたことが確認できます。
シークレット設定
作成した Bot User OAuth Token と Slack チャネル名をシークレットとして、設定します。
wrangler secret put SLACK_BOT_ACCESS_TOKEN
wrangler secret put SLACK_BOT_ACCESS_CHANNEL
Cron Trigger で公開
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 にメッセージされたことが確認できます。
Real-time Logs でも定期実行の様子が確認できます。