42 lines
4.0 KiB
Markdown
42 lines
4.0 KiB
Markdown
# Контракты Событий (Event Schemas)
|
||
|
||
Платформа контакт-центра использует событийно-ориентированную (Event-Driven) архитектуру поверх брокера сообщений **RabbitMQ** (с использованием паттерна Transactional Outbox). Все события (сообщения) следуют подходу "Contract-First" и описаны JSON-схемами.
|
||
|
||
Исходники всех актуальных JSON-схем хранятся в директории `contracts/events/`.
|
||
|
||
## Список доменных событий (Domain Events)
|
||
|
||
### Жизненный цикл звоноков (Telephony & Media Events)
|
||
Шлюз телефонии (Asterisk Bridge Service) инфраструктура генерирует события о состоянии вызовов в реальном времени.
|
||
|
||
- `call.connected.json` — Выстреливает, когда звонок успешно сопряжен между абонентом и конечной точкой (оператором или ИИ-помощником).
|
||
- `call.transferred.json` — Срабатывает при физическом переключении звонка (например, слепой трансфер от оператора к оператору, или Handoff от ИИ к живой очереди).
|
||
- `call.recording.ready.json` — Ивент о том, что аудиозапись звонка завершена, обработана и скопирована в хранилище (управляется `recording-service`).
|
||
- `ivr.completed.json` — Генерируется сервисом `ivr-service`, когда абонент завершил обход голосового меню (нажал необходимые DTMF цифры) и готов к маршрутизации.
|
||
|
||
### Жизненный цикл обращений (Interaction Events)
|
||
Отвечают за высокоуровневую бизнес-логику тикетов и многоканальных чатов. В основном генерируются в `interaction-service`.
|
||
|
||
- `interaction.created.json` — В систему поступило новое обращение (клиент позвонил, написал в Telegram/Webchat или Email). Содержит метаданные канала.
|
||
- `interaction.assigned.json` — Обращение захвачено живым агентом (или назначено routing-движком).
|
||
- `interaction.escalated.json` — Агент или ИИ эскалировал тикет на уровень выше (например, на вторую линию поддержки - L2, или пометил тикет как критичный).
|
||
- `interaction.closed.json` — Диалог или звонок успешно завершен, подведены итоги работы.
|
||
|
||
### Состояния операторов (Agent State Events)
|
||
- `agent.state.changed.json` — Транслирует изменения статуса сотрудника ("Готов", "Перерыв", "В разговоре"). Используется в `supervisor-service` для отрисовки Dashboard в реальном времени, а также потребляется `routing-service` для распределения звонков по свободным операторам.
|
||
|
||
## Структура Конверта (Event Envelope)
|
||
Любое доменное сообщение оборачивается в стандартизированный JSON-конверт для успешного трансфера через шину `event-bus-service`:
|
||
|
||
```json
|
||
{
|
||
"event_id": "8f39b1a0-54f3-...",
|
||
"event_type": "call.connected",
|
||
"timestamp": "2026-04-06T12:00:00Z",
|
||
"source_service": "asterisk-bridge-service",
|
||
"payload": {
|
||
// Внутреннее содержимое строго по одной из JSON-схем, описанных выше
|
||
}
|
||
}
|
||
```
|