Top.Mail.Ru
 
Статьи

Busy Lamp Field (BLF) – что это и как это работает

Статьи

Busy Lamp Field (BLF) – Что это и как это работает (Subscribe, Notify)


Busy Lamp Field (BLF) это подсветка в виде лампочек на кнопках телефона, которые показывают «сведения о присутствии» абонентов одной АТС. Чаще всего эта функция настраивается через веб-интерфейс телефона. После настройке, телефон подписывается на информацию о нужных абонентах, которую рассылает АТС. BLF работает через протокол SIP, используя запросы SUBSCRIBE и NOTIFY. В нормальном сценарии телефон запрашивает информацию (запрос SUBSCRIBE), а АТС отвечает (ответ NOTIFY).

Как это работает?


Когда телефон настроен на мониторинг внутренних номеров, он отправляет запрос SUBSCRIBE в сторону АТС. Если подписка на состояние внутренних номеров одобрена АТС, то в сторону телефона придет ответ 200 OK. Сообщение NOTIFY, содержащее данные в формате XML передаться подписчику (в нашем примере телефону). Как только статус одного из подписанных номеров изменится (занято, ожидание вызова, свободен), АТС отправит в сторону телефона сообщение NOTIFY.

На сообщение NOTIFY подписчик, должен ответить сообщением 200 OK. Подписчик может отписаться от рассылки, если отправит в сторону АТС сообщение SUBSCRIBE, в котором, в поле Expires будет установлено значение 0. Далее рассмотрим подробнее данный механизм.

Запрос Subscribe


В этом примере, телефон зарегистрирован на АТС, с внутренним номером 106. Ниже представлен запрос SUBSCRIBE. Телефон подписан на получение информации о внутреннем номере 136.


В этом примере мы можем увидеть:

  • SUBSCRIBE sip: 136@10.130.130.4;user=phone SIP/2.0 – сообщение SUBSCRIBE направлено на получение информации по номеру 136, зарегистрированного на АТС c IP адресом 10.130.130.4
  • From: ; – это поле содержит информацию о подписчике, номер 106, зарегистрированный на АТС с IP адресом 10.130.130.4
  • Accept: application/dialog-info+xml – поле указывает, что разрешен прием информации dialog-info в XML формате
  • Expires: 3600 – время истечения подписки. По истечении этого времени, подписчик должен послать еще одно сообщение SUBSCRIBE в сторону АТС, чтобы продолжить получать интересующую его информацию
  • Content-Length: 0 – в поле указывается, что в этом SIP сообщении нету информации в XML формате

Когда сообщение SUBSCRIBE получено и обработано АТС, АТС посылает в сторону подписчика сообщение 200 OK.


Запрос Notify


В этом примере показано, как номер 136 меняет свой статус. Сообщение NOTFIY содержит информацию в формате XML и отправляется АТС, в сторону подписчика.


В этом примере мы можем увидеть:

  • NOTIFY sip:
  • 106@10.130.130.58:2051;line=1ofdyu7v SIP/2.0 – в этом поле мы видим, что сообщение NOTIFY предназначается внутреннему номеру 106, имеющему IP адрес 10.130.130.58
  • Subscription-State: active;expires=3521 – в этом поле мы видим, сколько времени осталось до конца подписки
  • Content-Length: 507 – в этом поле мы видим размер XML файла в байтах
  • entity=”sip:136@10.130.130.4;user=phone” – в этом поле представлена, информация о абоненте, на которого телефон подписался
  • direction=”initiator” – в этом поле показано, что наблюдаемый внутренний номер, стал инициатором звонка. Если бы наблюдаемый внутренний номер принял входящий вызов, то в значении поля было бы указано “recipient”
  • confirmed – в этом поле указан статус вызова, в этом примере вызов установлен, т.е. принят другой стороной. Если вызов еще не обработан (принят), удаленным абонентом, то в поле было бы указано “early”, а если бы вызов был закончен, то в поле было бы указано “void”
  • in , – в этом поле показано, что внутренний номер 136 вызывает номер 117

Когда сообщение NOTIFY получено и обработано подписчиком, подписчик посылает в сторону АТС сообщение 200 OK.


Отказ от подписки


В этом примере показано, как подписчик отказывается от подписки на стороне АТС. Разница между запросами SUBSCRIBE и UNSUBSCRIBE, только в том, что в поле Expire указан параметр 0. 


В этом примере мы можем увидеть:

  • SUBSCRIBE sip:
  • 136@10.130.130.4;user=phone SIP/2.0 - сообщение SUBSCRIBE направлено на получение информации по номеру 136, зарегистрированного на АТС c IP адресом 10.130.130.4
  • From: 106@10.130.130.4>;;tag=4fog9tlb9d – это поле содержит информацию о подписчике, номер 106, зарегистрированный на АТС с IP адресом 10.130.130.4
  • Expires: 0 – это поле указывает, что подписчик отказывается от дальнейшего получения информации о внутреннем номере 136. Т.е. указывается, что время подписки равно 0

Когда сообщение SUBSCRIBE получено и обработано АТС, АТС посылает в сторону подписчика сообщение 200 OK.


Часто встречающиеся ошибки


  • 403 – Forbidden. Сервер не зарегистрировал запрос
  • 423 – Interval to small. Время жизни Expires, указанное в SIP сообщение, очень мало
  • 481 – Подписки не существует
  • 489 – Bad event. Данное событие не поддерживается