はじめに
LINE WORKSのカレンダー機能はAPIも提供されており、それを使うことでカレンダー上で何かの実行スケジュールを管理することも可能。
今回は、IFTTTを経由してカレンダーの予定と連携する仕組みを作った。
ソースコード
利用した言語・フレームワーク等
- 言語 : Python 3.9
- デプロイ : Serverless Framework
- 開発フレームワーク : AWS Lambda Powertools for Python
構成図
- バックエンドはAWSのサーバーレスアーキテクチャで構成。
- Lambda : 初期設定やカレンダー予定のポーリング、Webhookへの送信、Botへの通知。
- DynamoDB : 設定値の管理。
- 初期設定画面への動線は、Botのリッチメニューからアクセスするようにした。
- Botとのトークは、サーバーからのメッセージ受信のみ。
連携の流れ
事前準備
Webhook連携のために、IFTTTであらかじめAppletを作っておく。
https://ifttt.com/create
「IF」には Webhooks の「Receive a web request」を指定する。
「THEN」には任意のアクションを設定する。「Event Name」には任意のイベント名を入力。
今回はWebhook.siteで確認したため、Webhooksの「Make a web request」を指定。
初期設定
- まず、IFTTTのWebhook情報を設定する。
- ログイン
- ユーザーIDの取得、カレンダーの作成、予定の定期取得のために、User Account認証を行いアクセストークンを取得・格納する。
- IFTTTの設定値入力・送信
- IFTTT integration key : IFTTTアカウントごとに持っているKey。Webhooksページの「Documentation」から確認可能。
- IFTTT Event ID : IFTTTのIFの設定で入力した「Event Name」
- Description : メモ
- ログイン
- 設定すると、専用カレンダーが自動作成される。
連携実行
- 初期設定にて自動作成されたカレンダーに予定を追加する。
- サーバー側にて5分毎にカレンダーの予定一覧が取得され、開始時刻となった予定を検知すると、IFTTTのWebhookへイベントが送信される。
- Webhookイベントをトリガーに、あらかじめ設定したIFTTTのアクションが実行される。
- 今回はWebhook.siteのエンドポイントへリクエストが飛ばされる。
- 同時に、トークへBotから実行通知が送られる。
利用したLINE WORKS API
まとめ
何かスケジュール実行したいものをLINE WORKSのカレンダーで管理する仕組みを作った。
今回は汎用性を高くするため、連携プラットフォームであるIFTTTを利用した。Webhookイベントを送るだけなので、カレンダーだけでなく他のサービスにも応用できそう。