この LINE Bot は、ユーザーのメッセージに応じて以下の機能を提供します:
- Ping 応答(“ping” → “pong”)
- 物件に関する問い合わせフロー(物件→エリア→予算)
- 目的リンク案内(キーワードマッチ)
- FAQ 自動応答(CSVで管理)
- OpenAI GPT による汎用チャット応答
- Google Sheets への会話ログ出力
FastAPI による Webhook サーバーとして構成されており、Vercel へのデプロイに対応しています。
- index.py:エントリーポイント。Webhook ハンドラーやルーティングを含む
- api/faq.py:FAQ 応答機能(CSV 検索ベース)
- api/goal_redirect.py:目的リンク返信機能(CSV 検索ベース)
- api/openai_chat.py:GPT 応答生成ロジック
- api/logger.py:Google Sheets への会話ログ出力
- config.json:デフォルト応答などの設定ファイル
- .env:環境変数(ローカル開発用)
- README.md:プロジェクト概要(本ファイル)
- Python 3.13
- FastAPI
- LINE Messaging API SDK v3
- gspread / Google API
- OpenAI API
- dotenv(環境変数管理)
- Vercel(サーバーレスデプロイ)
- ユーザーが「ping」と送信 → Bot は「pong」と返信します
- エンドポイント:
POST /api/callback X-Line-Signatureを検証- メッセージ処理の順序:
- 目的リンク:
goal.csvに登録されたキーワードをマッチし、対応する URL を返信 - FAQ応答:
faq.csvに一致する質問があれば回答を返信 - 物件問い合わせフロー:
- 「物件」→ エリア(都道府県・区市)を質問
- エリアが来たら予算を質問
- 予算が来たら完了メッセージを返す
- GPT 応答:OpenAI API による自然な会話応答を生成
- 目的リンク:
dummy-reply-tokenを受信した場合はログ出力のみ(テスト用)
.envにSERVICE_ACCOUNT_JSONを登録(JSON を1行文字列化)- 会話のタイムスタンプ・ユーザーID・ユーザーメッセージ・Bot応答を記録
- API:
gspread/ Google Sheets API v4 使用
- Webhook 全体に対して
ExceptionHandlerによるグローバル例外処理を実装 - ステータスコード
500で JSON の{"error": "...内容..."}を返却