Функция Action URI в IP-телефонах Yealink
Телефоны 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[&параметр конфигурации] | Получить значение параметра конфигурации (можно указать несколько параметров) |