Cisco IP PHONE XML сервисы. Part 1. Начало.

Oct 27, 2016 17:09

Cisco телефоны (не все, но многие)  имеют на борту XML броузер. В нем может отображаться текстовая и графическая информация.
На основе этой технологии и реализована корпоративная телефонная книжка, например.  Умельцы умудряются делать кучу красивостей. Например ребята из новосибирской компании Aurus сделали свой продукт PhoneUP.
В сети информации  "Папа, как это делать с нуля!", да ещё и на русском языке, практически нет.  Поэтому я долго не подходил к этому вопросу.  Теперь начал разбираться методом проб и ошибок.
Суть темы - проста как селедка. Web сервер по запросу от телефонов отдает им XML файлы с контентом. Но дъявол кроется в деталях.
Изначально я решил использовать простой web сервер, и на нем выкладывать эти самые XML файлики.
В настройках сервера CUCM я установил корневым файлом index.xml.
По устоявшейся традиции вначале сделал Hello World

CiscoIPPhoneText

Prompt
Hello World!

И чудо свершилось!


Но тут-же всплыл вопрос локализации. Русские надписи (даже написанные в UTF-8)  телефон отображал некорректно.
Умные мануалы посоветовали указывать кодировку.  Ок.

Заголовок

Проверка
Всем привет!



Уже лучше!
Теперь захотелось что-бы страничка обновлялась (например раз в 5 секунд)....   И тут подкралась засада....  Простыми средствами это не делается.  Все мануалы предлагали решение на ASP или PHP.   Так как я не силен ни в одной из этих технологий, то я решил в качестве web-сервера использовать IIS.  С ним всё пошло уже гораздо бодрее.
В нем тоже можно использовать XML файлы. Но мы будем их создавать средствами ASP.
Красивый пример, сделаем  станичку с рандомными предсказаниями, которые будут сменяться раз в 10 секунд.

<%@ Language=JavaScript%>
<%
Response.ContentType = "text/xml";
Response.Write("");
Response.AddHeader("Refresh", "10; url=http://server:8080/magic.asp");
Response.Write("\r\n");
Response.Write("Совет дня!\r\n");
Response.Write("\r");
var choice = Math.random() * 10 + 0.5;
choice = Math.round( choice );
var response;
switch ( choice )
{
case 1 : response = "Подождите  немножко, и следующий день принесет вам неожиданную долгожданную радость."; break;
case 2 : response = "Наслаждайтесь удачей и делитесь ею с окружающими вас людьми."; break;
case 3 : response = "Будьте внимательны к подсказкам судьбы."; break;
case 4 : response = "Если истинно желаешь быть счастливым - научись властвовать своими мыслями."; break;
case 5 : response = "Ваш талант будет признан и должным образом вознагражден."; break;
case 6 : response = "Никто не побежден до тех пор, пока не признает себя побежденным."; break;
case 7 : response = "Чем больше вы охотитесь за большими деньгами, тем дальше они отдаляются от вас. Прекратите часто думать о богатстве, и оно непременно придет к вам само."; break;
case 8 : response = "Если Вы проявите инициативу, успех не заставит себя ждать."; break;
case 9  : response = "Ваши надежды и планы сбудутся сверх всяких ожиданий."; break;
case 10 : response = "Вам пора отдохнуть."; break;
default : response = "Ask Oprah"; break;
}
Response.Write( response );
Response.Write("\r\r\n");
Response.Write("\r\n");
Response.Flush();
Response.End();
Session.Abandon();
%>
Результат.


Ключевые моменты:

<%@ Language=JavaScript%>
<%
Response.ContentType = "text/xml";
Response.Write("");

(текст поскипан)
Response.Flush();
Response.End();
Session.Abandon();
%>
Этот код у нас теперь будет в качестве шаблона для любой страницы. Говорим броузеру что у нас XML документ и кодировка UTF-8

Response.AddHeader("Refresh", "10; url=http://server:8080/magic.asp");

Код для обновления странички. В данном примере через 10 секунд страница http://server:8080/magic.asp будет обновлена.  Понятно что можно указать любую другую страницу, и тогда мы перейдем туда . Это тоже необходимо в некоторых случаях.

И наш главный боевой инструмент Response.Write("<Внутри чего нибудь пишем>\r\n"); , с помощью него мы будем создавать  строки наших XML страничек.
Можно заморочиться и сделать парсер, который будет проходить по XML документу и выдавать код для ASP - но это отдельная тема.

cisco, voip, xml

Previous post Next post
Up