Pull to refresh

Создание телефонного справочника для ip-телефонов Cisco

Reading time3 min
Views24K
image

IP-телефоны от Cisco, например, популярный 7911G (на анигифе именно он) и более старшие модели, поддерживают возможность выполнения http-запросов для создания сервисов, в частности, телефонного справочника организации.

Как всё это работает. Мы настраиваем скрипт на веб-сервере, которых в ответ на GET-запрос от телефона возвращает строго определённый XML, отображаемый телефоном. Для телефонной книги сначала отображается список отделов:
<CiscoIPPhoneMenu>
<MenuItem>
  <Name>Administration</Name>
  <URL>http://webserver/phone/telbook.asp?depid=10</URL>
</MenuItem>
</CiscoIPPhoneMenu>


При выборе отдела телефон делает второй запрос по адресу из URL и отображает уже список сотрудников и их телефонов.
Вот картинка и пример структуры для списка из официального хелпа:

<CiscoIPPhoneDirectory>
  <Title>Заголовок</Title>
  <Prompt>Подсказка/подзаголовок</Prompt>
  <DirectoryEntry>
    <Name>Имя</Name>
    <Telephone>Телефон</Telephone>
  </DirectoryEntry>
</CiscoIPPhoneDirectory>



Со стороны администратора телефонов требуется прописать вызов нашего скрипта при нажатии какой-то из клавиш или выборе пункта меню, конкретно с 7911G мы используем Application->Help. В настройках телефона вызов задается как <InformationURL> webserver/phone/directory.asp </InformationURL>. А вот модель 7965G имеет отдельную клавишу для телефонного справочника, и её нажатие вызывает уже адрес из <DirectoryURL>. Поэтому у нас у всех телефонов все возможные *URL просто указывают на один и тот же скрипт.

Доступны мелкие удобства, такие как кнопка «Назад» и выбор отдела или телефона по индексу. Важным удобством является то, что телефон сам преобразует запись вида 8(495)555-11-22 в номер для набора 84955551122, это позволяет показывать людям удобно читаемый номер.

Как именно скрипт генерирует нужные нам XML, каждый может выбрать сам. У нас этот же скрипт используется для отображения телефонной книжки в браузере, через XSL. Для этого мы добавляем в генерируемый XML одну строчку
<?xml-stylesheet type="text/xsl" href="http://<%=servernamepath%>/telbook.xsl"?>
и дополнительно выводим элементом RusName с русским написанием ФИО. Поскольку RusName телефоном воспринимается как ошибка в структуре, а скрипт один, банальным способом определяем, кто вызвал скрипт:
if InStr(1,Request.ServerVariables(«http_user_agent»),«allegro»,1)>0 then isphone=1

А еще телефон умеет воспринимать данные от пользователя, мы пробно делали поиск телефонов контрагентов по их внутреннему коду, фича работала, но не прижилась:

<CiscoIPPhoneInput>
  <Title>Vuz search</Title>
  <Prompt>Enter vuz kod: </Prompt>
  <URL>http://webserver/phone/search.asp?type=vuz</URL>
  <InputItem>
   <DisplayName>KOD</DisplayName>
   <QueryStringParam>kod</QueryStringParam>
   <InputFlags>T</InputFlags>
  </InputItem>
</CiscoIPPhoneInput>


Вызов самого CiscoIPPhoneInput это еще одна строчка в главном CiscoIPPhoneMenu, а после ввода пользователем числа телефон передаёт параметр KOD скрипту и тот отображает найденный список телефонов через CiscoIPPhoneDirectory.

Кроме того, в теории телефон может делать запросы к скриптам в режиме idle, а также можно использовать refresh header и периодически автоматом запрашивать свежие данные. Это может быть курс доллара, хотя мы хотели сделать мониторинг нагрузки серверов, хотя бы в числовом виде – бросишь взгляд на телефон и сразу видно, что все ядра кто-то занял.
Tags:
Hubs:
+20
Comments24

Articles