Skip to content

yuma-ito-bd/schedule-line-reminder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

スケジュール予報 (schedule-line-reminder)

Ask DeepWiki Test Type Check

Googleカレンダーに登録している1週間分の予定をLINEに通知してくれるプロジェクトです。

※現在はLINEアカウントやAWSリソースを自分で用意する必要があります。

使い方

  1. LINEアカウント「マイスケジュールリマインダー」を友達登録する。
  2. GoogleアカウントでGoogleカレンダーへのアクセスを許可する。
  3. 毎日21時に1週間分の予定がLINEに通知されます。

できること

  • 1対1のトークのみ対応
  • デフォルトのGoogleカレンダーの予定を1週間分通知する
  • LINE上で購読カレンダーの一覧表示・追加・削除(クイックリプライ対応)

LINEで使えるコマンド

  • カレンダー一覧 または カレンダー
    • 現在購読中のカレンダー一覧を返信します。購読が無い場合は追加方法を案内します。
  • カレンダー追加
    • Googleアカウントと未連携の場合は、まず認可URLを返信します。URLを開き認可後、利用可能なカレンダーの一覧をクイックリプライで提示します。追加したいカレンダーを選択すると購読に登録されます。
  • カレンダー削除
    • 現在購読中のカレンダーをクイックリプライで提示します。削除したいカレンダーを選ぶと購読から削除されます。

注意事項

  • クイックリプライで表示できる件数には上限があります(最大12件)。
  • 項目ラベルは表示上、最大20文字に丸めて表示されます。

対応予定の機能

  • グループトーク内での通知
  • 購読カレンダーのみを対象にした通知配信

開発方法

必要なツール

各種インストールしてください。

利用しているAPI

システムフロー図

カレンダーの予定を通知する

カレンダーの予定の通知は以下のように行っています。

graph LR

subgraph AWS
  EventBridge -->|1.trigger| Lambda
end

subgraph Google
  google[Google Calendar API]
end
Lambda -->|2.fetch| google
Lambda -->|3.pushMessage| messaging-api

subgraph LINE
  messaging-api[LINE Messaging API] -->|4.notify| user((User))
end
Loading
  1. EventBridgeによって毎日21時にLambdaがトリガーされます。
  2. LambdaではGoogle Calendar APIからカレンダー情報を取得し、LINE Messaging APIに対してメッセージを送ります。
  3. LINEユーザーにメッセージが届きます。

LINEユーザーからのイベントを受け取る

LINEユーザーが友達登録した際、メッセージを送信した際は以下のようにイベントを取得できます。

graph LR

subgraph LINE
  user((User)) -->|友達登録、メッセージ送信| line[LINE Platform]
end

subgraph AWS
  apigw[API Gateway] -->|trigger|Lambda
end
line-->|Webhook|apigw
Loading
  1. LINEユーザーが友達登録やメッセージ送信などを行う
  2. LINEプラットフォームから登録済みのWebhook用エンドポイントにリクエストが送られる
  3. API GatewayからLambdaを起動する

環境構築

各サービスでの設定

各種トークンの発行

以下のアクセストークンが必要になるため、発行します。

デプロイ

下記のコマンドを実行するとAWS環境にリソースが作成されます。

bun run build
bun run deploy

その後、AWS SSMのパラメータストアまたはLambdaの環境変数に以下の値を設定してください。

パラメータ名 環境変数名 説明
line-schedule-reminder-google-client-id GOOGLE_CLIENT_ID Google Calendar APIのためのクライアントID
line-schedule-reminder-google-client-secret GOOGLE_CLIENT_SECRET Google Calendar APIのためのクライアントシークレット
line-schedule-reminder-google-redirect-uri GOOGLE_REDIRECT_URI Googleで認可を得たときにリダイレクトされるURL
line-schedule-reminder-line-channel-access-token LINE_CHANNEL_ACCESS_TOKEN LINEチャネルアクセストークン
line-schedule-reminder-line-channel-secret LINE_CHANNEL_SECRET LINEチャネルの署名キー

動作検証

AWSマネジメントコンソールからデプロイしたLambdaをテスト起動してください。 (参考:コンソールでの Lambda 関数のテスト - AWS Lambda

正しく設定できていれば公式アカウントからGoogleカレンダーの予定が通知されます。

ユニットテスト

ユニットテストは__tests__フォルダに格納しています。下記のコマンドで実行してください。

bun run test

LICENSE

MITライセンスです。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5