Инварианты клиентской интеграции
Эти правила обязательны для собственного клиента или сервисного участника. Они описывают наблюдаемое поведение протокола, а не внутреннюю реализацию ядра.
Управление и авторизация
- Сервер является источником состояния участников, устройств и прав. Локальное намерение клиента не заменяет подтверждение сервера.
- Управляющий WSS, медиа и файлы имеют разные назначения. Не отправляйте медиа как JSON-команды или файлы через управляющий канал.
- Используйте access token с нужными scopes; service account не должен получать права владельца только ради удобства интеграции.
- Секрет интеграции хранится на backend. Серверный JWT secret не передаётся браузеру или партнёру.
- Ошибку сети или временную недоступность сервера нельзя трактовать как удаление аккаунта.
Идентичности
- Пользователь, подключение, участие в конференции, устройство и SSRC не взаимозаменяемы. Один пользователь может иметь несколько подключений.
- Партнёр передаёт стабильный внешний ID человека, не его отображаемое имя или случайный ID браузера.
conference_tagзадаёт комнату, аconference_session_id— конкретный созвон. Для результатов нескольких запусков сервиса учитывайте такжеjob_idи сервер/интеграцию.
Медиа и восстановление
- Создавайте и удаляйте устройства через control-команды. Не публикуйте от имени неразрешённого устройства.
- Привязывайте получаемый трек к подтверждённому endpoint/SSRC. Не объединяйте устройства разных подключений только по пользователю.
- Обрабатывайте удаление устройства симметрично добавлению: освобождайте подписку и локальные ресурсы.
- После reconnect согласуйте состояние с сервером. Повторные события не должны порождать дубли устройств и подписок.
- Модерация применяется сервером. Захват микрофона или экрана всё равно требует разрешения пользователя и поддержки платформой.
Результаты и сервисы
- Работающий CAN-worker не означает активное задание. Создание комнаты не запускает live-транскрибацию автоматически.
- Для CAN требуется действующий trial или полный ключ; service token не заменяет лицензию.
- Повторы webhook дедуплицируются по
event.id. Отвечайте2xxтолько после надёжного сохранения события. - Один
transcription.readyзавершает один запуск ASR, не обязательно весь созвон. Не затирайте другие части разговора.
Подробности: команды, конференция и устройства, авторизация, собственный клиент, CRM и транскрипт.