Диагностика сбоев перевода вызовов: Blind и Attended Transfer через SIP REFER
- При попытке перевода звонка вызов сбрасывается для обоих собеседников.
- Консультативный перевод соединяет оператора с третьим лицом, но после нажатия 'Перевод' мост не замыкается.
- SIP-клиент возвращает ошибку
405 Method Not Allowedили603 Declinedна запросREFER. - В логах фиксируется
481 Call/Transaction Does Not Existпри попытке подстановки заголовкаReplaces.
1. Различия механизмов перевода Blind и Attended
- Blind Transfer (Слепой перевод): телефон шлет
REFERс адресом нового абонента в заголовкеRefer-To: <sip:user3@domain.com>. - Attended Transfer (Консультативный перевод): абонент 2 создает второй диалог с абонентом 3, после чего шлет
REFERс заголовкомReplaces, указывающимCall-ID,to-tagиfrom-tagпервого диалога.
2. Анализ заголовка REFER с параметром Replaces
REFER sip:user1@203.0.113.10:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.20:5060;branch=z9hG4bK9876
Refer-To: <sip:user3@domain.com?Replaces=call-id-12345%3Bto-tag%3Dabc%3Bfrom-tag%3Ddef>
Referred-By: <sip:user2@domain.com>3. Контроль статуса через транзакцию NOTIFY
Инициатор перевода обязан отслеживать статус перевода через подписку на события (Event: refer). При успешном ответе (200 OK на NOTIFY с телом SIP/2.0 200 OK) инициатор посылает BYE в свой диалог.
4. Включение поддержки REFER на транках и шлюзах
Если оператор или SBC не поддерживает метод REFER, включите локальную обработку трансфера на АТС (трансфер средствами PBX без отправки REFER оператору):
# Asterisk pjsip.conf
[endpoint]
transfer_mode = fix_messaging
# Или отключение сквозного REFER:
disable_refer = yes Частые вопросы (FAQ)
Что произойдет, если АТС получит REFER, но не поддерживает Replaces?
АТС вернет ошибку 420 Bad Extension с указанием Unsupported: replaces в заголовке, и вызов не переведется.
Почему при слепом переводе звонок сбрасывается, если целевой номер занят?
Если переводящий телефон сразу посылает BYE, не дожидаясь ответа NOTIFY о статусе вызова, исходный вызов уничтожается, а целевой абонент возвращает 486 Busy Here.
Как экранируются спецсимволы в заголовке Refer-To?
Параметры Replaces внутри SIP URI обязаны быть URL-encoded (двоеточия заменяются на %3A, точки с запятой на %3B, знаки равенства на %3D).
В чем разница между переводом средствами телефона и переводом через DTMF (Features)?
Перевод через телефон использует сигнальный метод SIP REFER. Перевод через DTMF (например, комбинация *2) перехватывается самой АТС из медиапотока без участия SIP-логики аппарата.