Перейти к основному содержимому

🏗️ Как работает PulseHub

PulseHub — это классическое веб-приложение MVC (Model-View-Controller) с плоской и понятной структурой. Фреймворк не используется — маршрутизация, доступ к базе данных, аутентификация и рендеринг реализованы непосредственно на PHP.

Браузер / Провайдер канала


index.php ← Фронт-контроллер


app/router.php ← URL → [Controller, метод]


app/Controllers/ ← Бизнес-логика

┌────┴────────────────────┐
▼ ▼
app/Views/ app/Helpers/db.php
(HTML-шаблоны) (PDO MySQL запросы)

Четыре типа запросов

  1. Запросы страниц — GET на /inbox, /contacts и т.д. → загружает HTML + JS
  2. Запросы API — GET/POST/PATCH/DELETE на /api/... → возвращает JSON
  3. Запросы Webhook — POST от провайдеров на /webhooks/{type}/{id} → обрабатывает входящие сообщения
  4. Поток SSE — постоянное подключение к /sse → передаёт события в реальном времени в браузер

Поток данных: входящее сообщение

1. Клиент отправляет сообщение в WhatsApp
2. Meta отправляет POST на /webhooks/whatsapp/{channel_id}
3. WebhookController проверяет подпись, нормализует данные
4. Находит/создаёт контакт, находит/создаёт беседу
5. Сохраняет сообщение, запускает SSE-события, ставит события автоматизации в очередь
6. Возвращает 200 для Meta
7. SSE отправляет данные во все подключённые браузеры агентов в течение 2 секунд

Поток данных: исходящее сообщение

1. Агент вводит ответ и нажимает «Отправить»
2. Браузер отправляет POST на /api/conversations/{id}/messages
3. Сохраняет сообщение, вызывает API канала (WhatsApp, Twilio и т.д.)
4. Отправляет SSE-событие другим агентам
5. Возвращает 201