メインコンテンツまでスキップ

🏗️ 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 つのリクエストタイプ

  1. ページリクエスト/inbox/contacts などへの GET → HTML + JS を読み込み
  2. API リクエスト/api/... への GET/POST/PATCH/DELETE → JSON を返却
  3. Webhook リクエスト — プロバイダーから /webhooks/{type}/{id} への POST → 受信メッセージを処理
  4. SSE ストリーム/sse への持続的接続 → リアルタイムイベントをブラウザにプッシュ

データフロー:受信メッセージ

1. 顧客が WhatsApp でメッセージを送信
2. Meta が /webhooks/whatsapp/{channel_id} に POST
3. WebhookController が署名を検証し、ペイロードを正規化
4. コンタクトを検索/作成、会話を検索/作成
5. メッセージを保存、SSE イベントを発火、オートメーションイベントをキューに追加
6. Meta に 200 を返却
7. SSE が 2 秒以内に接続中のすべてのエージェントブラウザにプッシュ

データフロー:送信メッセージ

1. エージェントが返信を入力し、送信をクリック
2. ブラウザが /api/conversations/{id}/messages に POST
3. メッセージを保存、チャネル API を呼び出し(WhatsApp、Twilio など)
4. 他のエージェントに SSE イベントをプッシュ
5. 201 を返却