🏗️ Как работает 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 запросы)
Четыре типа запросов
- Запросы страниц — GET на
/inbox,/contactsи т.д. → загружает HTML + JS - Запросы API — GET/POST/PATCH/DELETE на
/api/...→ возвращает JSON - Запросы Webhook — POST от провайдеров на
/webhooks/{type}/{id}→ обрабатывает входящие сообщения - Поток 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