メール一通が来るたびに「これは誰に回す?」「返信どうする?」と止まっていた。
受注確認なのか、単純な質問なのか、日程の相談なのか、判断してから対応を変える。それ自体は大した手間ではないけれど、一日に何通もあると積み重なる。しかも、振り分けを間違えると返信が遅れる。
だったらその判断を、AIにやらせればいい。
作ろうとしたもの
仕様はシンプルに決めた。
受信メール
↓ AIがスパム・営業を除外
↓ 重要メールを内容で3種類に分ける
├── 単純な質問 → 自動返信を生成して送信
├── 日程調整の依頼 → カレンダーで空き時間を探してMeet招待を送信
└── 複雑な問題 → Slackに転送して人が判断
入口はGmailのトリガー(新着を検知する仕組み)。出口は返信かSlack通知か、どちらかに振り分けるだけ。AIに頼んでワークフローを組んでもらった。
最初につまずいたところ
ワークフローのJSONをn8n(ワークフロー自動化ツール)に取り込もうとしたら、こんなエラーが出た。
「ワークフローのインポート中に問題が発生しました。プロパティオプションが見つかりませんでした。」
JSONの形式がn8nのバージョンに合っていなかった。Switch(振り分け)ノードのパラメータ構造が違った、という話だったが、修正を繰り返してもエラーが続いた。
途中で方針を変えた。全機能を一発でインポートしようとせず、まず動くものから始める。
全部まとめて取り込もうとするのをやめて、最小構成にして。メール受信→AIで分析→Slackに通知するだけでいい。そこから動くことを確認してから、返信機能と日程調整を足したい。
最小構成に落とし直したら、インポートは通った。
次のつまずきはGoogle認証
ワークフローを動かすには、GmailとカレンダーへのアクセスをGoogleに許可してもらう必要がある。OAuth(アプリがGoogleサービスを使う許可を得る仕組み)の設定が要る。
どこで設定するか分からなかった。
スコープ追加の画面って、Google Cloud ConsoleのどこにあるのGmail API、Calendar APIを追加したい
Googleの管理画面を開いて、「OAuth同意画面」→「データアクセス」→「スコープを追加または削除」という経路だとわかった。ただし「テスト中」の状態で進めないといけなかった。公開アプリとして審査を通すのは別の話で、自分で使うだけなら「テスト中」のまま自分のメールアドレスをテストユーザーに追加すれば動く。
これが分かるまでに一往復あった。
まず組んだ最小構成
完全版ではなく、最初に組んだのは次の二つだけ。
- 新着メールを検知してAIが内容を分析する
- 分類結果をSlackに通知する
この基本部分のインポートが通ったので、ここを土台に、自動返信と日程調整を足していく段取りにした。
日程調整の部分は、カレンダーの空き時間を探してMeetのリンクを生成して招待メールを送る、という流れ。AIに頼んだ指示はこんな感じだった。
カレンダーで7日以内の空き時間を探して、Meetの会議リンクを作って、件名と本文を生成してから招待を送る。空き時間がなければSlackで教えてくれればいい。
自動返信の部分は、AIが回答文を生成して送信する。ただし、AIが勝手に「これは単純な質問」と判断して送ってしまうのは怖いので、最初のうちはSlack通知を先に来させて、自分が確認してから動かす設定にした。
「全部自動」にしなかった理由
誤送信が一番困る。
間違った内容の返信が顧客に届いたら、取り消せない。日程調整の誤りも同じで、間違ったカレンダー招待が飛んだら確認と謝りの手間が増える。
だから最初のうちは、Slackで通知を受けて目で確認してからアクティブにする形にした。しばらく動かして「この分類ならAIの判断で大丈夫」と確信が持てた部分から、徐々に自動化の範囲を広げていく。
全部を一気に自動化しようとすると、事故ったときの被害が大きい。部分的に試してから広げる、という順番の方が結果的に早い。
他の受信業務への応用
今回やったのはGmailだが、入口が何でも同じ構造で動く。
問い合わせフォームの通知、発注メール、採用応募。入口の形式が違うだけで、中身の処理は「受信→判断→振り分け」の繰り返しだ。AIに何を判断させるかを定義できれば、あとは機械に回せる。
一人で回している業務ほど効く。返信のたびに止まる時間が積み重なっているので。
