Урок 21 Web-запросы — различия между версиями
Строка 35: | Строка 35: | ||
Разберем компоненты сценария поподробнее. | Разберем компоненты сценария поподробнее. | ||
+ | *<u>Компонент "'''CallerID'''" </u>. Определяет телефонный номер абонента и записывает его в переменную '''num'''. В компоненте переменной "'''num(строковая)'''" присваивается значение функции "'''Номер абонента (CallerId)'''". | ||
+ | *<u>Компонент "'''Запрос в Россвязь'''"</u>. Отправляет Web-запрос в сервис Россвязи для определения региона по номеру абонента. | ||
+ | |||
+ | :*В поле "'''Подключение'''" введите адрес сервиса, при необходимости укажите прокси-сервер и базовую авторизацию. | ||
+ | :*В поле "'''Тип контента'''" вводится заголовок contenttype, которая подставляется в запрос. По умолчанию, используется '''application/x-www-form-urlencoded'''. | ||
+ | :*В поле "Метод" вы можете выбрать HTTP-метод передачи запроса. | ||
+ | |||
+ | Метод '''GET''' передает данные серверу используя URL. Все необходимые параметры перечисляются непосредственно в строке подключения через знак вопроса "?". Для разделения переменных используется символ "&". Пример GET-запроса (передача параметров param1 и param2, имеющих значения value1 и value2 соответственно): | ||
+ | http://www.oktell.ru'''?'''param1=value1'''&'''param2=value2 | ||
+ | |||
+ | |||
+ | , когда POST передает данные, используя тело HTTP запроса. | ||
+ | |||
+ | Длина URL'а ограничена 1024 символами, это и будет верхним ограничением для данных, которые можно отослать GET'ом. | ||
+ | |||
+ | POST может отправлять гораздо большие объемы данных. Лимит устанавливается веб-сервером и обычно равен около 2MB. | ||
+ | |||
+ | Передача данных методом POST более безопасна, чем методом GET, так как секретные данные (например пароль) не отображаются напрямую в web-клиенте пользователя (в отличии от URL, который виден почти всегда). | ||
+ | |||
+ | |||
+ | *<u>Компонент "Парсер региона"</u>. | ||
+ | *<u>Компонент "Ошибка"</u>. | ||
+ | *<u>Компонент "Ответ"</u>. | ||
+ | *<u>Компонент "Москва и Московская область?"</u>. | ||
+ | *<u>Компонент "По Москве"</u>. | ||
+ | *<u>Компонент "Татарстан?"</u>. | ||
+ | *<u>Компонент "По Татарстану"</u>. | ||
+ | *<u>Компонент "По остальным регионам"</u>. | ||
Версия 08:48, 22 апреля 2014
Наверх | К предыдущему уроку |
В этом уроке рассказывается про использование компонентов "Web-запрос" и "Парсер".
Введение
Часто при обработке звонка возникает необходимость обращения к внешним сервисам с целью получения дополнительной информации по абоненту. Например, это может быть запросом в Российский план нумерации для того, чтобы узнать из какого региона звонит клиент. Или обращение в CRM-систему для получения имени ответственного менеджера. Описанные задачи решаются с помощью запросов к соответствующим web-системам. Подобным образом решается также интересная задача по распознаванию речи абонента в момент звонка и выполнение, так называемой, голосовой маршрутизации для составления заявок.
Web-запросы могут выполняться не только при звонке абонента. Это может быть каким-либо служебным действием, например один раз в час Oktell может выполнять запрос на получение курса доллара по отношению к рублю или в сервис прогноза погоды для получения информации о температуре на улице в ближайший час.
Внешняя система, получив запрос, выполняет необходимые действия и возвращает обратно сообщение с результатом. Получив такой ответ от внешней системы, возникает потребность в его разборе. Синтаксический анализ полученных сообщений и выделение нужной информации называется парсингом. В Oktell для этого предназначен отдельный компонент "Парсер", который может анализировать XML или JSON структуры, а также использовать язык "Регулярных выражений".
Разберемся подробнее с работой web-запросов на примере.
Использование Web-запросов в сценариях
Задача: При входящем звонке по номеру телефона определить из какого региона звонит абонент и маршрутизировать звонок в соответствиии с полученной информацией.
Сценарий выглядит следующим образом:
Разберем компоненты сценария поподробнее.
- Компонент "CallerID" . Определяет телефонный номер абонента и записывает его в переменную num. В компоненте переменной "num(строковая)" присваивается значение функции "Номер абонента (CallerId)".
- Компонент "Запрос в Россвязь". Отправляет Web-запрос в сервис Россвязи для определения региона по номеру абонента.
- В поле "Подключение" введите адрес сервиса, при необходимости укажите прокси-сервер и базовую авторизацию.
- В поле "Тип контента" вводится заголовок contenttype, которая подставляется в запрос. По умолчанию, используется application/x-www-form-urlencoded.
- В поле "Метод" вы можете выбрать HTTP-метод передачи запроса.
Метод GET передает данные серверу используя URL. Все необходимые параметры перечисляются непосредственно в строке подключения через знак вопроса "?". Для разделения переменных используется символ "&". Пример GET-запроса (передача параметров param1 и param2, имеющих значения value1 и value2 соответственно):
http://www.oktell.ru?param1=value1¶m2=value2
, когда POST передает данные, используя тело HTTP запроса.
Длина URL'а ограничена 1024 символами, это и будет верхним ограничением для данных, которые можно отослать GET'ом.
POST может отправлять гораздо большие объемы данных. Лимит устанавливается веб-сервером и обычно равен около 2MB.
Передача данных методом POST более безопасна, чем методом GET, так как секретные данные (например пароль) не отображаются напрямую в web-клиенте пользователя (в отличии от URL, который виден почти всегда).
- Компонент "Парсер региона".
- Компонент "Ошибка".
- Компонент "Ответ".
- Компонент "Москва и Московская область?".
- Компонент "По Москве".
- Компонент "Татарстан?".
- Компонент "По Татарстану".
- Компонент "По остальным регионам".
Наверх | К предыдущему уроку |