Иногда прокси-сервер перенаправляет один SIP-вызов на несколько конечных точек SIP. Этот процесс известен как разветвление. Здесь один вызов может звонить нескольким конечным точкам одновременно.
С помощью SIP-вилки вы можете звонить со своего настольного телефона одновременно с программным телефоном или SIP-телефоном на своем мобильном телефоне, что позволяет легко принимать вызов с любого устройства.
Как правило, в офисе, предположим, что начальник не может ответить на звонок или нет, разветвление SIP позволяет секретарю отвечать на звонки на его добавочный номер.
Форкинг будет возможен, если будет доступен прокси с отслеживанием состояния, так как он должен работать и получать ответ из множества полученных.
У нас есть два типа разветвления —
- Параллельная форкинг
- Последовательный Форкинг
Параллельная форкинг
В этом случае прокси-сервер разветвляет сообщение INVITE, скажем, на два устройства (UA2, UA3) одновременно. Оба устройства сгенерируют 180 звонков, и тот, кто получит вызов, сгенерирует 200 OK. Ответ (предположим, UA2), который первым достигает инициатора, устанавливает сеанс с UA2. Для другого ответа будет активирован ОТМЕНА.
Если отправитель получает оба ответа одновременно, то, основываясь на q-значении, он пересылает ответ.
Последовательный Форкинг
В этом случае прокси-сервер разветвляет INVITE на одно устройство (UA2). Если UA2 в это время недоступен или занят, прокси-сервер перенаправит его на другое устройство (UA3).
Филиал — ID и тег
Идентификаторы филиалов помогают прокси-серверам сопоставлять ответы на разветвленные запросы. Без идентификаторов филиалов прокси-сервер не сможет понять ответ с ответом. Branch-id будет доступен в заголовке Via.
Теги используются UAC для различения нескольких окончательных ответов от разных UAS. UAS не может решить, был ли запрос разветвлен или нет. Поэтому к нему нужно добавить тег.
Прокси также могут добавлять теги, если он генерирует окончательный ответ, они никогда не вставляют теги в запросы или ответы, которые они направляют.
Может быть возможно, что один запрос также может быть обработан несколькими прокси-серверами. Таким образом, прокси, который будет форкать, должен добавлять свои уникальные идентификаторы к ветвям, которые он создал.
Вызов колла и идентификатор звонка
Участок вызова относится к отношениям сигнализации один к одному между двумя пользовательскими агентами. Идентификатор вызова — это уникальный идентификатор, содержащийся в сообщении SIP, которое относится к вызову. Звонок — это совокупность ног колла.
UAC начинается с отправки приглашения. Из-за разветвления он может получить несколько 200 OK от разных UA. Каждый из них соответствует отдельной ветви вызова в пределах одного и того же вызова.
Таким образом, вызов — это группа ног вызова. Участок вызова относится к сквозному соединению между UA.
Пространства CSeq в двух направлениях ветви вызова независимы. В пределах одного направления порядковый номер увеличивается для каждой транзакции.
Голосовая почта
Голосовая почта очень распространена в настоящее время для корпоративных пользователей. Это телефонное приложение. Когда изображение становится недоступным или неспособным принять вызов, УАТС объявляет вызывающую сторону оставить голосовое сообщение.
Пользовательский агент либо получит ответ 3xx, либо перенаправит его на сервер голосовой почты, если номер вызываемого абонента недоступен. Тем не менее, требуется какое-то расширение SIP, чтобы указать системе голосовой почты, какой почтовый ящик использовать, то есть, какое приветствие будет воспроизводиться и где хранить записанное сообщение. Есть два способа добиться этого —
-
Используя расширение поля заголовка SIP
-
Используя Request-URI, чтобы сигнализировать эту информацию
Используя расширение поля заголовка SIP
Используя Request-URI, чтобы сигнализировать эту информацию
Предположим, для пользователя sip: [email protected] имеет систему голосовой почты по адресу sip: voicemail.tutorialspoint.com, которая предоставляет голосовую почту, а Request-URI сообщения INVITE при пересылке на сервер голосовой почты может выглядеть следующим образом:
sip:voicemail.tutorialspoint.com;target = sip:[email protected];cause = 486
На следующем рисунке показано, как Request-URI несет идентификатор почтового ящика и причину (здесь 486).