Сообщение REFER |
|
Запрос REFER, передаваемый отправителем, предписывает получателю (идентифицированному адресом в поле Request-URI) связаться с третьей стороной, используя контактную информацию, которая содержится в сообщении. Такой механизм может быть использован для многих целей, включая переадресацию вызова (Call Transfer). Например, если Anton установил сеанс связи с пользователем Vladimir и решает, что Vladimir должен поговорить с пользователем Alexander, Anton может поручить своему SIP UA передать запрос REFER SIP-агенту пользователя Vladimir, снабдив его контактной информацией пользователя Alexander. Если Vladimir даст свое согласие, его UA попытается связаться с пользователем Alexander, используя контактный адрес. После этого UA пользователя Vladimir уведомит UA пользователя Anton, насколько успешно прошла попытка установить связь с пользователем Alexander. Если не определено иначе, правила передачи запросов REFER и ответов на них те же, что и для запроса BYE. В запрос REFER включается заголовок Refer-To. Значение, содержащееся в заголовке, указывает адрес третьей стороны, с которой отправитель предлагает связаться получателю запроса REFER. Например, sip:anton@niits. ru. Если запрос принят, UAS должен передать ответ с кодом 202 (Accepted) до того, как истечет время действия REFER-транзакции. Вслед за этим UA получателя создает подписку. Подписка, создаваемая запросом REFER, по своей сути является такой же, как подписка, создаваемая запросом SUBSCRIBE. REFER - это только механизм, который создает подписку на уведомление о событии переадресации - «refer». Создание подписки влечет за собой незамедлительную передачу запроса NOTIFY Механизм передачи сообщений NOTIFY используется для того, чтобы информировать UA, передавший REFER, о статусе переадресации. Идентифицирующие диалог значения заголовков То, From и Call-ID в каждом сообщении NOTIFY должны соответствовать аналогичным заголовкам в запросе iEFER, как если бы вместо REFER был запрос SUBSCRIBE. Каждое сообщение NOTIFY должно содержать заголовок Event со значением refer. NOTIFY содержит также тело сообщения типа message/sipfrag (тип тела сообщения message/sipfrag подробно описан в [67]), содержащее исчерпывающую информацию о состоянии действия переадресации вызова; в теле сообщения может также содержаться дополнительная информация о результате действия. Запрос NOTIFY может быть создан всякий раз, когда появляется новая информация о статусе переадресации вызова. Уведомления о событии «refer» не могут передаваться чаще, чем один раз в секунду. Возможен и такой вариант, когда за время подписки передается ровно два сообщения NOTIFY- безотлагательный запрос NOTIFYn NOTIFY, содержащий окончательный результат переадресации вызова. Окончательный запрос NOTIFY содержит заголовок Subscription-State со значением terminated (подписка окончена) и со значением параметра «reason» - noresource. Подробнее сведения о запросе REFER приведены в [68]. На рис. 3.8 представлен пример обмена сообщениями между терминалом пользователя Anton и терминалом пользователя Alexander при успешной переадресации вызова, где пользователь Alexander переадресует вызов другому абоненту. |

