Files

4.0 KiB
Raw Permalink Blame History

Контракты Событий (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-схем, описанных выше
  }
}