Vertex AI を使ってイベント案内メールを自動でカレンダーに登録する仕組み作り
久しぶりに記事を書く @wezardnet です。
夏休みの自由課題的な感じでタイトルのような仕組みを作ってみたので紹介します。
1. TL;DR
みなさんはメールで届いたイベント案内で、参加を予定するならカレンダーにそのイベントの日時や場所などを登録しますか?
私は日時や場所、イベントの内容を見て Google カレンダーに予定を手作業で登録してます。
これが地味に面倒くさい。参加を予定したら自動でカレンダーに登録してほしいなぁという気持ちになります。
Google 系のイベントは参加申込すると、カレンダーに登録するリンクがメール内にありますが、申し込まない(参加を考え中で申込みが未だのタイミング)とカレンダーに追加リンクの入ったメールは届きませんし Google 以外のイベント案内では、そもそもそんなリンクはありません。
面倒な作業は自動化して作業効率化を図ろうと考え、巷で流行っている生成 AI を使えば実現できそうと思いました。生成 AI 活用事例の一助になれば嬉しいです。
2. 構成
次のようなイメージで構成を考えてみました。使用する主なプロダクトは次になります。筆者は App Engine が大好きなので今もメインで使ってます 😝
Gmail
Google カレンダー
App Engine
Cloud Pub/Sub
Vertex AI
簡単な説明を以下に書きます。
Gmail API - users.watch を呼び出し、特定のラベルに対する変更を監視する
users.watch のレスポンスを Firestore へ格納する(historyId, expiration など、使わないけど念のため保管)
新着メールを受信 → 参加するイベントのメール案内なら監視対象のラベルを付ける(参加するかどうかは、メールの内容を目視しないとわからないので手作業で仕分けします)
Cloud Pub/Sub を介して変更情報がプッシュ通知される
Cloud Functions で変更情報を受け取り App Engine にそのまま流す
変更情報を App Engine で受け取る
変更があったラベルに対して Gmail API で対象のメールを取得する
Vertex AI にプロンプトを投げ、メール本文からイベントの名称、開催日時、開催場所、イベント概要を抽出してもらう
Calendar API を呼び出す
自分の Google カレンダーにイベント情報を登録する(イベントはサイレントモードで登録する)
この構成でなぜ Functions が間に挟まっているのか不思議に思うかもしれません。Pub/Sub のサブスクリプションは App Engine で良くね?
筆者の App Engine は Identity-Aware Proxy(IAP) を有効にしており、デフォルトサービスは allUsers 権限で一般公開されています。
が、なぜか IAP を有効にしている状態だとサブスクリプッションにプッシュ通知が来ません。なんでやろ??
3. Vertex AI でメールから必要な情報を抽出してもらう
Gmail API 経由でラベル(「イベント参加予定」というラベル名にしました)付けされたメールを取得し、メール本文から次の情報を抽出しもらいたいわけです。
イベント名
開催日時(開始日時と終了日時)
開催場所
イベント概要
Vertex AI に投げるプロンプトは次のようにしました。レスポンスは JSON で返してもらいます。
#指示
次のメール本文からイベントの名称、開催日の開始日時と終了日時、開催場所とイベント概要を抽出して JSON 形式で出力してください。
日時の書式は yyyy-MM-dd HH:mm でお願いします。
#出力
{
"name":{イベント名},
"start.date":{開始日時},
"end.date":{終了日時},
"location":{開催場所},
"overview":{イベント概要}
}
#メール本文
From: Google Cloud イベント事務局 google-cloud-event@google.com
Date: 2024年8月22日(木) 9:03
Subject: 【登録開始】 10/24 開催 Generative AI Summit Tokyo ’24 秋
To: xxxxxxx@xxx.co.jp
Gemini を使った企業の成功事例をたっぷりご紹介!
͏ ͏ ͏ ͏ ͏ ͏ ͏
͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
[image: Google Cloud logo]
[ Google Cloud logo ]
Google Cloud 主催 イベントのご案内
https://go.cloudplatformonline.com/ODA4LUdKVy0zMTQAAAGVFl3HeSt6KsXyhuxwc5FRpP-7C9bfqW7PVlbG_G79JOQ05doHfxMyXqx91cHieA2gtu7a_Gg=
[ Image ] [[
https://cloudonair.withgoogle.com/events/generative-ai-summit-24-fall?utm_source=cloud_sfdc&utm_medium=email&utm_campaign=FY24-Q4-japan-JPAN641-onlineevent-er-GenAISummitTokFall_mc&utm_content=invite0822&utm_term=-]]
Generative AI Summit Tokyo ’24 秋 開催
生成 AI は、ビジネスのあらゆる場面で活用され、企業の成長を力強く後押しします。
このイベントでは、Gemini や Google Cloud
を使った企業の成功事例をたっぷりご紹介します!実際に使っている企業の声を聞いたり、デモを見たり、生成 AI
の専門家のセッションに参加したり、生成AIの可能性を肌で感じられる 1 日になること間違いなし!
(以下、省略)
Vertex AI からのレスポンスは次のとおり。
{
"name": "Generative AI Summit Tokyo ’24 秋",
"start.date": "2024-10-24 11:00",
"end.date": "2024-10-24 18:30",
"location": "ベルサール渋谷ファースト / オンライン配信",
"overview": "Gemini や Google Cloud を使った企業の成功事例を中心としたイベント。\n実際に使っている企業の声を聞いたり、デモを見たり、生成 AI の専門家のセッションに参加したりできる。"
}
おぉ、いい感じで返してくれる。さすがや!
ここまで出来ればあとは Google カレンダーに登録するだけです 😎
4. Google カレンダー登録
ただ単純に Google カレンダーに登録しても面白くないので、イベント予定はサイレント モードで登録します。
というわけで、自動化するという目的は達成することができました 🎊
AI ができることは AI に任せて、人間じゃなきゃダメなところは人間がやる、そんな世界に今後はなっていくのでしょう。
#GoogleCloud #VertexAI #生成AI #GenerativeAI #Gmail #GoogleCalendar
この記事が気に入ったらサポートをしてみませんか?