Коды ошибок управления вызовами (маршруты mpbx-api для управления вызовами, mpbx-b2bua control)
Возвращаются REST API управления вызовами (W7-API-01, /api/v1/call-control/...) и методами движка,
которые за ним стоят (B2bua::call_view, calls_view, hangup, hold, answer, send_dtmf).
Перевод и парковка передают коды переводов из transfers.md; инициирование вызова
передаёт коды MPBX-CALL-* из calls.md. Сообщения никогда не содержат номеров, имён,
цифр или идентификаторов SIP. Руководство: REST API управления вызовами.
| Код | HTTP | Значение | Что делать |
|---|---|---|---|
MPBX-CC-CALL-NOT-FOUND | 404 | Нет живого вызова с этим идентификатором, которым вы можете управлять: он завершён, это вызов другой компании или ни одна из его сторон не находится в отделе, где у вас есть calls:control (все эти случаи выглядят одинаково). | Запросите список вызовов (GET /call-control/calls); возможно, вызов завершён. |
MPBX-CC-PARTICIPANT-NOT-FOUND | 404 | Участник не является живой стороной вызова, не является одной из двух говорящих сторон (удержание, DTMF) или устройство не звонит по этому вызову (ответ). | Перечитайте участников вызова и используйте participant_id из них. |
MPBX-CC-STATE | 409 | Вызов не находится в состоянии, к которому применимо действие: не отвечен (удержание, DTMF), не звонит (ответ), удержан другой стороной, находится в переводе, парковке, приложении, очереди или конференции, это исходящий вызов АТС, который ещё не соединён, удержан самим телефоном (возобновление) или уже завершается (сброс). | Дождитесь нужного состояния или действуйте на телефоне. |
MPBX-CC-FORBIDDEN | 403 | Никогда через API: экстренный вызов не сбрасывается, не удерживается, не переводится, не паркуется и не получает цифры. | Ничего: экстренные вызовы обрабатываются на телефоне. |
MPBX-CC-UNSUPPORTED | 503 | Движок не может выполнить действие сейчас: нет медиаприложения для музыки на удержании, медиасервис отказал, стороны не удалось соединить снова (вызов остаётся на удержании), устройство нельзя попросить ответить или другая сторона отказалась принять цифры. | Проверьте [media] и медиасервис; повторите попытку. |
MPBX-CC-INVALID-DTMF | 400 | Цифры — это не от 1 до 32 символов из 0-9, *, #, A-D. | Отправляйте только допустимые сигналы DTMF. |
MPBX-CC-USER-OUT-OF-REACH | 403 | Инициирование вызова для пользователя, которым вы не можете управлять, либо указана сторона живого вызова (перевод, парковка, удержание, возобновление, DTMF), которая находится вне вашей зоны доступа: ваше право calls:control не распространяется ни на один отдел пользователя. | Используйте ключ или роль с calls:control для отдела пользователя либо для всей компании. |
MPBX-CC-STREAM-TOO-MANY | 429 | Медиапоток (W9-AI-06): слишком много открытых потоков для этого ключа API или пользователя (4), для этой компании (100) или у этого вызова уже есть поток. | Сначала закройте поток; повторите после Retry-After. |
MPBX-CC-STREAM-BAD-FRAME | (событие error WebSocket) | Текстовый кадр медиапотока не является известной командой, либо аудиокадр некорректен (заголовок, дорожка 0, нечётная длина PCM, больше одной секунды). Поток остаётся открытым. | Следуйте формату кадров из руководства по медиапотоку. |
MPBX-CC-STREAM-PLAYBACK-FULL | (событие error WebSocket) | В очереди воспроизведения больше 10 с аудио. Кадр отброшен. | Отправьте mark и дождитесь его перед отправкой новых данных, либо отправьте clear. |
MPBX-CC-STREAM-UPGRADE-REQUIRED | 426 | Обычный HTTP-запрос пришёл на GET /call-control/calls/{id}/media-stream. | Подключайтесь клиентом WebSocket. |
MPBX-CC-STREAM-CREDENTIAL-ENDED | (закрытие 4401) | Во время потока учётные данные истекли или были отозваны либо утратили calls:control. | Переподключитесь с действительными учётными данными. |
Также: MPBX-RBAC-FORBIDDEN (403) без calls:control; MPBX-CALL-ENGINE-UNAVAILABLE (503) на узле API
без движка вызовов; MPBX-RATE-LIMITED (429, api.md) при более чем 10 инициированных вызовах в
минуту на ключ API или пользователя (и на целевого пользователя) либо 60 запросах управления вызовами в
минуту на ключ API или пользователя.
Аудит
Каждая запись содержит result (ok или код ошибки), а для отказа — исход denied:
call.control_originate (destination, device_id, call_id; сущность — пользователь),
call.control_drop, call.control_answer (device_id), call.control_hold,
call.control_resume, call.control_transfer (participant_id, destination или
voicemail_extension), call.control_park (participant_id, orbit) и call.control_dtmf
(participant_id, digit_count: сами цифры никогда не записываются).
Медиапоток (W9-AI-06): call.control_media_stream_open (rate, tracks, stream_id; также при отказе,
для экстренного вызова) и call.control_media_stream_close (stream_id, reason, duration_s,
frames_out, frames_in, commands); команды в потоке аудируются как их REST-маршруты.
Аудио и цифры никогда не записываются.