Cisco IP PHONE XML сервисы. Part 3. Картинки. CiscoIPPhoneImageFile

Oct 31, 2016 13:32

Предыдущие части
Начало, вывод текста на экран , текст по русски, обновление странички.  Практика - создаем своего телефонного оракула
Часть вторая, ввод информации пользователем Практика -  давайте представимся.

В третей части пойдет речь о выводе графической информации.
Для этого используется тег CiscoIPPhoneImageFile.
Позволяет выводить на экраны телефонов изображения в формате PNG. Существуют следующие ограничения по размерам.
Cisco Unified IP Phone 7920 128 x 59  Grayscale
Cisco Unified IP Phone 7921G, 7925G, 7926G, 7925G-EX 176 x 140  Color 16bit
Cisco Unified IP Phone 7937G 255x128  Grayscale
Cisco Unified IP Phones 7940G/60G 133 x 65  Grayscale
Cisco Unified IP Phones 7941G, 7941G-GE, 7942G, 7961G, 7961G-GE, 7962G 298 x 144   Grayscale
Cisco Unified IP Phones 7945G, 7965G 298 x 156  Color 16bit
Cisco Unified IP Phone 7970G/7971G 298 x 168  Color 12bit
Cisco Unified IP Phone 7975G 298 x 168  Color 16bit
Cisco IP Communicator 298 x 168  Color 24bit
Cisco Unified IP Phones 6921, 6961 396 x 81  Monochrome
Cisco Unified IP Phones 6941, 6945  396 x 162  Monochrome
Cisco Unified IP Conference Station 8831 396 x 162  Monochrome
Cisco IP Phone 8811 559 x 265  Monochrome
Cisco IP Phone 8841, 8845, 8851, 8851NR, 8861, and 8865  559 x 265 Color 24bit
Cisco Wireless IP Phone 8821  240 x 215
Cisco Unified IP Phones 8941, 8945 498 x 289  Color 24bit
Cisco Unified IP Phones 8961, 9951, 9971 498 x 289 Color 24bit

Сама XML страница в общем виде выглядит следующим образом.

Image Title goes here

Prompt text goes here
Horizontal position of graphic
Vertical position of graphic
Points to the PNG image

Опциональный атрибут WindowMode имеет значения Normal (значение по умолчанию) и Wide (поддерживается аппаратами 7941, 7942, 7945, 7961, 7962, 7965, 7970, 7971 и 7975).  В режиме Wide, на некоторых аппаратах можно типа выводить картинки побольше, но у меня нигде это нормально не заработало (не очень-то и хотелось).http://server:8080:/ttt.png Адрес изображения в  сети.

Пример XML файла

Timur Akhmetov

Личная карточка
-1
-1
http://server:8080/pic.png

Результат


А теперь совместим знания из предыдущей части с этими.
У меня есть система мониторинга. По определенному URL она генерирует PNG-файлы для заданного объекта, с заданными размерами (правда удачно совпало? :) ).    Хочется что-бы была возможность вводить ID  объекта и получать на экране телефона графические результаты мониторинга.
Итак. XML файл для запроса ID объекта.

PRTG Object ID
http://SERVER:8080/PRTG_ID.asp?

Enter ID?
id
2060
N

ASP скрипт.

<%@ Language=JavaScript%>
<%
Response.ContentType = "text/xml";
Response.Write("");
Response.AddHeader("Refresh", "10; url=http://SERVER:8080/PRTG_ID.asp?&id="+Request.QueryString("&id"));
Response.Write("");
Response.Write("
Object ID "+Request.QueryString("&id")+"");
Response.Write("-1");
Response.Write("-1");
Response.Write("http://PRTG:8080/graphimg.png?id="+Request.QueryString("&id")+"&width=298&height=144");
Response.Write("");
Response.Flush();
Response.End();
Session.Abandon();
%>
Ключевые моменты.
Запрашиваем у пользователя значение id,  которое может быть введено только цифрами (N).
Картинка запрашивается с сервера мониторинга по следующему URL http://PRTG:8080/graphimg.png?id=2060&width=298&height=144
Тут id= идентификатор объекта.  width=298&height=144  размеры изображения.   Я поставил именно такие размеры, что-бы работало даже на аппарате 7941.
Нам надо сформировать XML, в котором присутствует знак &. Но он и ещё несколько спец.символов используются XML броузером телефона для спец-нужд.  В таблице они все перечислены. Их надо заменять.

Character
Name
Escape Sequence

&
Ampersand
&

"
Quote
"

'
Apostrophe
'

<
Left angle bracket
<

>
Right angle bracket
>

Получается "страшная" строка скрипта
Response.Write("http://PRTG:8080/graphimg.png?id="+Request.QueryString("&id")+"&width=298&height=144");
Причем в некоторых местах & подменяется на & , а в некоторых нет. Идея в том, что конструкция Request.QueryString("&id") обрабатывается сервером и не требует замены, а конструкция width=298& предназначена для телефона.
Так-же в странице делаем обновление содержимого раз в 10 секунд Response.AddHeader("Refresh", "10; url=http://SERVER:8080/PRTG_ID.asp?&id="+Request.QueryString("&id"));.
А в окне с картинкой делаем подпись с id объекта, что-бы не забыть "а чего вообще смотрим" Response.Write("
Object ID "+Request.QueryString("&id")+""); .
Результат на экране.




С экрана Cisco IP Communicator



График на экране телефона Cisco 7941

При нажатии кнопки "Далее" - принудительное обновление картинки, при нажатии "Выход" - переходим обратно к выбору ID.
Этои кнопки можно переопределить... Но это отдельная тема...

cisco, xml, cucm

Previous post Next post
Up