4.0 KiB
4.0 KiB
Контракты Событий (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:
{
"event_id": "8f39b1a0-54f3-...",
"event_type": "call.connected",
"timestamp": "2026-04-06T12:00:00Z",
"source_service": "asterisk-bridge-service",
"payload": {
// Внутреннее содержимое строго по одной из JSON-схем, описанных выше
}
}