🏗️ PulseHub の仕組み
PulseHub は、フラットで読みやすい構造を持つ古典的な MVC(Model-View-Controller) Web アプリケーションです。フレームワークは使用していません — ルーティング、データベースアクセス、認証、レンダリングはすべて PHP で直接実装されています。
ブラウザ / チャネルプロバイダー
│
▼
index.php ← フロントコントローラー
│
▼
app/router.php ← URL → [Controller, メソッド]
│
▼
app/Controllers/ ← ビジネスロジック
│
┌────┴────────────────────┐
▼ ▼
app/Views/ app/Helpers/db.php
(HTML テンプレート) (PDO MySQL クエリ)
4 つのリクエストタイプ
- ページリクエスト —
/inbox、/contactsなどへの GET → HTML + JS を読み込み - API リクエスト —
/api/...への GET/POST/PATCH/DELETE → JSON を返却 - Webhook リクエスト — プロバイダーから
/webhooks/{type}/{id}への POST → 受信メッセージを処理 - SSE ストリーム —
/sseへの持続的接続 → リアルタイムイベントをブラウザにプッシュ
データフロー:受信メッセージ
1. 顧客が WhatsApp でメッセージを送信
2. Meta が /webhooks/whatsapp/{channel_id} に POST
3. WebhookController が署名を検証し、ペイロードを正規化
4. コンタクトを検索/作成、会話を検索/作成
5. メッセージを保存、SSE イベントを発火、オートメーションイベントをキューに追加
6. Meta に 200 を返却
7. SSE が 2 秒以内に接続中のすべてのエージェントブラウザにプッシュ