Телефоны Yealink могут получать и обрабатывать запросы HTTP GET. Функция обработки запросов получила название Action URI. Action URI можно использовать в заголовках сообщений SIP NOTIFY (Event: ACTION‑URI) или в прямых запросах HTTP GET. При получении URI IP‑телефон выполнит указанное действие и ответит сообщением 200OK. Запрос HTTP GET может содержать переменную с именем «key» и значение переменной, разделенные символом «=». Этот функционал открывает широкие возможности для интеграции корпоративных систем управления и мониторинга с телефонами Yealink, а также используется для управления телефоном с помощью функции CTI.
Настройка Action URI
Откройте веб-интерфейс телефона.
Веб-интерфейс: Функции –> Контроль подключений
Автопровижининг: features.action_uri_limit_ip = значение,
где значение — список IP-адресов.
В поле IP-адреса для отправки Action URI необходимо ввести IP-адрес (или адреса, разделив их запятой), запросы с которых будет разрешено обрабатывать телефону. Также в этом поле можно указать значение Any, и тогда телефон будет принимать все GET-запросы с любых IP-адресов. Если же оставить это поле пустым, телефону будет запрещено принимать запросы HTTP GET.
Примечание: значение Any параметра IP-адреса для отправки Action URI может негативно сказаться на безопасности телефонных аппаратов, поэтому мы не можем рекомендовать использовать его в иных целях, кроме как при тестировании.
После того, как IP-адрес устройства, с которого планируется отправлять HTTP GET, будет добавлен в список разрешенных IP-адресов, с этого устройства можно будет отправлять запросы.
Также можно полностью отключить функцию Action URI — это может быть полезно в том случае, если пользователи имеют доступ в веб-интерфейс и требуется оградить их от данного функционала. В случае полного отключения функции Action URI даже указание IP-адресов в поле IP-адреса для отправки Action URI не позволит устройству обрабатывать запросы.
Автопровижининг: features.action_uri.enable = значение,
где значение — цифра 0 (отключено) или 1 (включено).
Запросы Action URI могут генерироваться сервером или отправляться пользователем из браузера. В этой статье мы подробнее рассмотрим второй вариант.
Для отправки команды через браузер необходимо ввести ее в адресной строке браузера.
Формат команды: http(s)://IP-адрес телефона/команда
После ввода команды и нажатия клавиши Enter отобразится окно, запрашивающее данные для авторизации. Для авторизации необходимо использовать логин и пароль администратора (по умолчанию admin/admin).
Важно: при первом запросе с любого уникального разрешенного IP-адреса на экране телефона появится сообщение "Разрешить удаленный контроль?". Необходимо предоставить разрешение, нажав клавишу ОК.
В дальнейшем при запросах c этого же адреса сообщения появляться не будут, а запросы будут выполняться моментально. С помощью редактирования конфигурации устройства можно отключить появление этого всплывающего уведомления.
Автопровижининг: features.show_action_uri_option = значение,
где значение — цифра 0 (отключено) или 1 (включено).
Примечание: поскольку отключение уведомлений может негативно сказаться на безопасности телефонных аппаратов, рекомендуем применять данную настройку с осторожностью.
Также можно отправить авторизационные данные прямо в запросе:
http(s)://логин:пароль@/команда
Пример:
http://admin:admin@192.168.5.150/servlet?key=reboot
Это удобно в рамках экономии времени или при отправке запросов, сгенерированных сервером.
Формат запроса и наиболее полезные команды
Введите команду в адресную строку браузера:
http://IP-адрес телефона/screencapture
Выполните захват трафика с помощью Wireshark.
Как понятно из скриншота ниже, телефон обрабатывает запросы так же, как и обычный http-сервер (которым он, собственно, и является в данном примере):
На скриншоте первый запрос GET от браузера не содержит авторизационных данных. Ответ телефона на этот запрос: Unauthorized (требуется авторизация). Пользователь предоставляет нужные данные, вводя их вручную в окне браузера. Браузер посылает второй запрос GET, но уже с авторизационными данными. Ответ сервера: 200OK (запрос обработан успешно).
Примеры полезных команд и сценарии их применения
Команда: http://192.168.5.150/servlet?key=Reboot
Действие: перезагрузка устройства. С помощью сервера можно настроить перезагрузку по расписанию.
Команда: http://192.168.5.150/screencapture
Действие: снимок экрана. Позволяет администратору просматривать состояние экрана телефона сотрудника.
Команда: http://192.168.5.150/servlet?key=DNDOff
Действие: отключение функции "Не беспокоить".
Команда: http://192.168.5.150/servlet?key=number=1006
Действие: совершение исходящего вызова с телефона. Аналогично вызову из веб-интерфейса телефона.
Команда: http://192.168.5.150/servlet?key=AutoP
Действие: форсированный запуск процедуры автопровижининга.
Команда: http://192.168.5.150/servlet?phonecfg=set[&features.usb_call_recording.enable=1][& features.auto_recording.enable=1]
Действие: внесение изменений в конфигурацию телефона. Позволяет администратору менять параметры настройки телефона.
Команда: http://192.168.5.150/servlet?key=AlwaysFwdOn=79123456789
Действие: установка переадресации по неответу на указанный номер.
Дополнительно: таблица команд
Команда |
Значение |
Действие |
key= |
OK |
Нажатие клавиши "ОК" |
ENTER |
Нажатие softkey-клавиши "Enter/Вход" |
|
SPEAKER |
Переключиться на громкую связь |
|
F_TRANSFER |
Трансфер вызова |
|
VOLUME_UP |
Увеличить громкость |
|
VOLUME_DOWN |
Уменьшить громкость |
|
MUTE |
Отключить микрофон |
|
F_HOLD |
Удержание вызова |
|
HOLD |
Удержание вызова |
|
F_CONFERENCE |
Конференц-вызов |
|
Cancel/CANCEL |
Отменить действие, завершить вызов |
|
X |
Отменить действие, завершить вызов |
|
0-9/*/# |
Нажатие клавиши номеронабирателя |
|
L1-LX |
Активация DSS-клавиши X |
|
LX_LONGPRESS |
Длительное нажатие DSS-клавиши X |
|
F1-F4 |
Нажатие softkey-клавиши 1-4 |
|
MSG |
Вызов меню электронной почты |
|
HEADSET |
Переключиться на гарнитуру |
|
RD |
Повторный набор |
|
UP/DOWN/LEFT/RIGHT |
Клавиши навигации "Вверх/Вниз/Влево/Вправо" |
|
BACK_IDLE |
Возврат на экран ожидания |
|
Reboot |
Перезагрузка устройства |
|
AutoP |
Запуск автопровижининга |
|
DNDOn |
Активация DND |
|
DNDOff |
Отключение DND |
|
number=xxx&outgoing_uri=y |
Набор номера xxx |
|
OFFHOOK |
Поднять трубку |
|
ONHOOK |
Положить трубку |
|
ANSWER/ASW/Asw |
Ответить на вызов |
|
Reset |
Сбросить настройки телефона |
|
ATrans=xxx |
Сопроводительный трансфер на номер xxx |
|
BTrans=xxx |
Слепой трансфер на номер xxx |
|
ATrans=callid_A@callid_B |
Соединить 2 активных вызова и покинуть оба разговора |
|
CallWaitingOn |
Включить функцию ожидания вызова |
|
CallWaitingOff |
Отключить функцию ожидания вызова |
|
CALLEND/CallEnd |
Завершить вызов |
|
SPLIT |
Разбить конференц-вызов на отдельные вызовы |
|
SWAP |
Переключить активный вызов (предыдущий активный вызов будет поставлен на удержание) |
|
ASW/CANCEL/HOLD/UNHOLD:xxx |
Ответить/Завершить/Удержать/Вернуть вызов (xxx - Call ID вызова) |
|
AlwaysFwdOn/BusyFwdOn/NoAnswFwdOn=xxx=n |
Активация переадресации на номер xxx |
|
AlwaysFwdOff/BusyFwdOff/NoAnswFwdOff |
Деактивация переадресации на номер xxx |
|
n/a |
screencapture |
Сделать скриншот экрана |
screencapture/download |
Сделать скриншот экрана и скачать его |
|
phonecfg=get[&accounts=x][&dnd=x][&fw=x] |
Получить информацию об аккаунтах, статусе DND, получить конфиг, где x - цифра 0 (не получать) или цифра 1 (получить) |
|
phonecfg=set[&параметр конфигурации=значение] |
Установить параметр конфигурации (можно указать несколько параметров) |
|
phonecfg=get[&параметр конфигурации] |
Получить значение параметра конфигурации (можно указать несколько параметров) |
eskimomuffin
Добрый день! Спасибо, очень полезная статья.
Подскажите, а можно ли настраивать кнопки через веб запросы на модуле расширения EXP43, подключенные к T46U?
Catherine_Romanova Автор
Добрый день!
Можно, через phonecfg=set
Пример: http://servlet?phonecfg=set[&expansion_module.1.key.1.type=16][&expansion_module.1.key.1.value=108][&expansion_module.1.key.1.label=Василий]
Выполнение этого запроса добавит клавишу 1 на модуле расширения 1. Тип клавиши: BLF, значение клавиши: 108, отображаемое имя: Василий.