Управление телефонами Panasonic KX-HDV через XML

KX-HDV130

В свое время заменили старенькую АТС Panasonic TDA на Panasonic KX-HTS824. Рекламные брошюры обещали что это будет коробочный Asterisk с аналоговыми шлюзами на борту, простой установкой, бесшовной совместимостью с аппаратами линейки KX-HDV и все это по цене обычного аналогового шлюза (примерно 20 т.р. на тот момент). По факту часть этого действительно оказалась правдой. Запуск в эксплуатацию занял всего пару часов, телефончики находят без проблема находят станцию и работают, ценник за такое решение действительно гуманный. Но вот сравнивать с * никак нельзя. KX-HTS824 не предоставляет никаких возможностей интеграции со сторонними сервисами и никаких «шаг влево, шаг вправо».

В принципе правильно. Хотите чуть больше чем просто звонилка — берите KX-NS500RU или выше. В общем, нужна интеграция с ERP (1С) с тем что имеем. Из форума стало понятно что добиваться интеграции нужно не с АТС, а с телефонными аппаратами Panasonic KX-HDV130 напрямую. Благо они более или менее smart, и умеют помимо SIP общаться со сторонними сервисами через XML. Пока реализовал минимум — набор номера по запросу. Для работы нужно включить XML app через веб интерфейс телефона (веб интерфейс включается с самого телефона, через меню), знать ip адреса аппаратов. Стандартный логин admin пароль adminpass .

Работает просто:

  • Отправляем запрос откуда угодно нашему Python скрипту (веб серверу). Например из браузера или из 1С, а можно из REST Client.
  • Скрипт отправляет на ip телефона xml с указанием url по которому телефон должен получить команду
  • Телефон идет на сервер, забирает там xml с номером абонента и начинает звонить спустя 1 секунду.
  • Телефон отвечает веб серверу что XML получил и все ок (код 200)
  • Веб сервер отвечает нам в 1С/браузер/REST client что все ок (код 200)

Для теста можно запустить просто командой «Python app.py». Перед этим должен быть установлен python и модули указанные в коде.

Формат запроса к телефону, исходя из запроса телефон пойдет за командой по ссылке

<?xml version="1.0" encoding="utf-8"?>
<ppxml xmlns="http://panasonic/sip_menu" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://panasonic/sip_menu sip_menu.xsd">
	<Trigger version="2.0">
		<Source>http://192.168.20.111/989101234567.xml</Source> 
	</Trigger> 
</ppxml>

Где http://192.168.20.111/989101234567.xml — указание где телефон должен забрать XML с командой. В наименовании XML я передаю номер вызываемого абонента. Дальше телефон забирает XML формата:

<?xml version="1.0" encoding="utf-8"?> 
<ppxml xmlns="http://panasonic/sip_screen" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://panasonic/sip_screen sip_screen.xsd"> 
	<Screen version="2.0">
		<Timer name="Timer1" repeat="false" interval="1">
			<Events>
				<OnExpired>
					<MakeCall number="989101234567" />
				</OnExpired>
			</Events>
		</Timer>
	</Screen>
</ppxml>

Веб сервер ожидает запрос JSON POST на адрес http://server/MakeCallJSON/ . С данными «comment» — ip адрес телефонного аппарата с которого набираем. «MakeCall» — номер вызываемого абонента.

Для теста можно просто пройти по ссылке на http://server/MakeCall=989101234567.xml

В качестве полноценного решения это сложно использовать, т.к. небезопасно. Вдруг злоумышленник начнет звонить через ваши каналы, это может стоить дорого. Нужно добавлять сюда аутентификацию. Сам код сервера разместил на github.

Сделал инициацию набора номера из 1С УТ 10/11 https://www.blog.itdoca.com/kxdhvand1c/

Читайте также:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Bitnami