← atelier-kyo-manager OpenClaw →

reserve-optimizer

整骨院向けLINE予約管理Bot。LINE Bot + GAS + Cloudflare Workers + Stripe決済の サーバーレス構成で、24時間自動受付・決済・AIチャット対応を実現。

なぜ作ったか

整骨院の予約管理は電話・紙ベースが多く、スタッフの負担が大きいという課題がありました。LINE Botで24時間自動受付・Stripe決済・AIチャット対応を実現し、予約業務をゼロにするために開発しました。

アーキテクチャ

レイヤー構成

[LINEユーザー] ←→ [LINE Messaging API]
                      ↓ Webhook
                 [Cloudflare Worker] ← 署名検証 + 即座に200 OK返却
                      ↓ waitUntil で転送
                 [GAS Web App] ← 会話ステートマシン実行
                      ↓
                 [Google Spreadsheets] ← データ保存
                      ↓
                 [Stripe Checkout] ← デポジット決済(1,000円)

設計上の判断と理由

Q: なぜCloudflare Workerを挟んでいるのか?GASに直接Webhookしない理由

LINEのWebhookは5秒以内に200 OKを返さないとタイムアウトします。しかしGASの起動は遅く(コールドスタートで3〜5秒)、処理も含めるとタイムアウトする可能性があります。そこで:

  1. Cloudflare Workerが即座に200 OKを返す(LINEタイムアウト回避)
  2. waitUntil で非同期にGASへ転送
  3. WorkerでHMAC-SHA256署名検証も行う(セキュリティ層)

Q: なぜデータベースにGoogle Spreadsheetsを選んだのか?

Q: なぜデポジット制(前払い1,000円)なのか?

会話ステートマシン

LINE Botの会話フローを状態管理する仕組みです:

初期状態 → 日付選択 → 時間枠選択 → 予約確認 → Stripe決済 → 予約完了
                                                        ↓ キャンセル
                                                    予約取消

各状態でQuickReply(選択肢ボタン)を表示し、ユーザーが迷わないように設計しています。

AIチャット(代替プロバイダー M2.7)

整骨院に関する質問に回答するAIチャット機能:

面接で聞かれそうなポイント

「なぜサーバーレス構成?EC2等のサーバーではない理由」

「Stripe Checkoutの選定理由」

技術スタック