Коды ошибок вызовов (маршруты mpbx-api для вызовов, инициирование mpbx-b2bua)
Возвращаются маршрутами вызовов вошедшего пользователя (MVP-GAP-04): POST /api/v1/calls/click-to-call,
POST /api/v1/calls/lookup, POST /api/v1/calls/{id}/conference, POST /api/v1/calls/{id}/split,
POST /api/v1/calls/{id}/pull (W6-TEL-08) и тестовым SIP-вызовом POST /api/v1/me/devices/{id}/test-call.
Коды MPBX-CALL-* движка возвращают B2bua::originate и B2bua::find_call. Объединение и разделение
возвращают коды конференций из conference.md. Сообщения никогда не содержат номеров,
имён или идентификаторов SIP. Руководство: click-to-call, тестовый вызов и конференция через API.
| Код | HTTP | Значение | Что делать |
|---|---|---|---|
MPBX-CALL-SESSION-REQUIRED | 403 | Ключ API вызвал маршрут, который совершает вызов или управляет им для вошедшего пользователя. | Используйте сессию пользователя. Управление вызовами для интеграций выполняется через REST API управления вызовами (/api/v1/call-control/..., W7-API-01, call-control.md). |
MPBX-CALL-NO-EXTENSION | 409 | У пользователя нет внутреннего номера, либо внутренний номер или пользователь отключён. Также возвращается GET и PUT /me/intercom, переключатель которых находится у внутреннего номера. | Назначьте пользователю включённый внутренний номер. |
MPBX-CALL-ENGINE-UNAVAILABLE | 503 | Ни один движок вызовов не может обработать запрос: на этом узле его нет ([sip] enabled = false), а на узле только для API (mpbx run --role api, FU-GAP04-6) ни один движок (роль engine или all) не зарегистрировался на шине управления вызовами за последние 15 секунд. | Запустите движок (роль engine или all) на том же Valkey или включите SIP. |
MPBX-CALL-BUS-TIMEOUT | 503 | Узел только для API (FU-GAP04-6): движки не ответили вовремя по шине управления вызовами (6 с; 45 с для нового вызова). Вызов мог быть всё же совершён или изменён. | Повторите попытку, предварительно проверив список вызовов; проверьте движки и Valkey. |
MPBX-CALL-BUS-BAD-FRAME | 500 | Узел только для API: сообщение шины управления вызовами не декодировано (движок другой версии во время обновления). | Обновите все узлы до одной версии. |
MPBX-CALL-UNSUPPORTED | 503 | Движок не может инициировать вызовы: медиасервис (mpbx-media) не подключён, он не ответил или не удалось прочитать план набора. | Проверьте [media] и медиасервис; повторите попытку. |
MPBX-CALL-DEVICE-UNAVAILABLE | 409 | Ни одно из устройств пользователя (или выбранное) не зарегистрировано и не может быть разбужено push-уведомлением сейчас. | Откройте приложение или браузерный телефон (он зарегистрируется), затем повторите попытку. |
MPBX-CALL-DESTINATION-REFUSED | 403 | План набора компании отклоняет адрес для этого пользователя (нет правила исходящей связи, профиль вызовов не разрешает его, номер заблокирован или платный, либо это код функции), или это не набираемый номер. Ничего не звонило. | Тот же номер нельзя набрать и с телефона пользователя; запросите у администратора право на исходящие вызовы. |
MPBX-CALL-FORBIDDEN | 403 | Никогда через API: экстренный номер (наберите его на телефоне), собственный внутренний номер пользователя или внутренний номер, который ему не принадлежит. | Набирайте экстренные номера на телефоне. |
MPBX-CALL-BUSY | 409 | Пользователь уже в вызове, а ожидание вызова выключено. | Сначала завершите другой вызов. |
MPBX-CALL-OVERLOADED | 503 | Движок достиг лимита вызовов или хранилище состояния вызовов (Valkey) не ответило. | Повторите попытку после Retry-After. |
MPBX-CALL-REMOTE-CONTROL-OFF | 409 | Click-to-call с auto_answer («Вызов с помощью» настольного телефона, W6-TEL-08) на устройстве, у которого выключено удалённое управление (по умолчанию). Ничего не звонило. | Владелец устройства включает его: PUT /api/v1/me/devices/{id}/remote-control с {"enabled": true}, либо позвоните без auto_answer (телефон зазвонит). |
MPBX-CALL-NOT-FOUND | 404 | POST /calls/lookup: нет живого вызова, в котором у вас есть плечо (leg) с этим SIP Call-ID на одном из ваших устройств (плечо другого пользователя, плечо транка, вызов другой компании и завершённый вызов выглядят одинаково). | Проверьте Call-ID своего плеча; возможно, вызов завершён. |
Перехват вызова (POST /api/v1/calls/{id}/pull, B2bua::pull)
Руководство: перехват вызова и удалённое управление вызовами.
| Код | HTTP | Значение | Что делать |
|---|---|---|---|
MPBX-PULL-CALL-NOT-FOUND | 404 | Нет живого отвеченного вызова этой компании, в котором вы являетесь стороной на одном из ваших устройств (вызов другого пользователя, плечо транка, вызов другой компании, завершённый вызов и неизвестный идентификатор выглядят одинаково). | Проверьте идентификатор вызова (POST /calls/lookup, события call.*); возможно, вызов завершён. |
MPBX-PULL-STATE | 409 | Вызов занят другим: переводом, парковкой, конференцией, оставлением голосовой почты, другим перехватом или click-to-call, у которого назначение ещё не ответило. Ничего не изменилось. | Повторите, когда это завершится. |
MPBX-PULL-SAME-DEVICE | 409 | Вызов уже на этом устройстве. | Выберите другое ваше устройство. |
MPBX-PULL-DEVICE-UNAVAILABLE | 409 | Устройство сейчас не зарегистрировано и не может быть разбужено push-уведомлением либо оно не относится к вашему внутреннему номеру. Ничего не изменилось. | Откройте приложение или браузерный телефон (он зарегистрируется), затем повторите попытку. |
MPBX-PULL-FORBIDDEN | 403 | Экстренный вызов никогда не переводится на другое устройство; либо устройства внутреннего номера вам не принадлежат. | Оставайтесь на том устройстве, где находится экстренный вызов. |
Устройство, которое не является одним из ваших активных устройств, отклоняется API до запроса к движку:
400 MPBX-INVALID-ARGUMENT по device_id.
Код набора перехвата (*85 по умолчанию, см. коды набора) отвечает SIP-статусами: 404 (нет вашего
вызова на другом устройстве), 485 Ambiguous (несколько вызовов), 488 (нет SDP-предложения), 491
(вызов занят другим), 403 (экстренный вызов; устройство без пользователя).
Также: MPBX-RATE-LIMITED (429, api.md) при более чем 10 начатых вызовах или 60 запросах
управления вызовами в минуту на пользователя, а также один тестовый вызов на устройство каждые 10 секунд.
Записи аудита (W3-AUD-01): call.click_to_call (детали destination, device_id, auto_answer, если
запрошено, result: ok или код ошибки), call.pulled (сущность — вызов; детали via = api или
dial_code, to_device_id, result: ok, код ошибки, not_your_device или для кода набора not_found,
ambiguous, forbidden либо SIP-статус; актор — пользователь или набирающее устройство для кода набора),
call.conference_merged (with_call_id, conference_id, result), call.conference_split (result) и
device.test_call (call_id, result).