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 - но это отдельная тема.