(!) Использование сервиса Яндекс.Карты в X8004

Возможно ли использование сервиса Яндекс.Карты в X8004? Для операторов, принимающих заказы в Call-центре (например, в компании по доставке товаров или в такси), нужно создать программный модуль, который бы рассчитывал примерное время движения автомобиля по заданному маршруту с учетом загруженности дорог.

Да, использование сервиса Яндекс.Карты в IP PBX X8004 возможно.
Сервис Яндекс.Карты позволяет прогнозировать с высокой долей вероятности время, за которое автомобиль сможет добраться из точки А в точку В с учетом или без учета пробок. Это значительно облегчает работу диспетчера в крупных городах, где пробки привычное дело.

Сервис Яндекс.Карты будет полезен не только в службах такси, но и в других сферах деятельности, где важно знать хотя бы примерное время проезда транспорта из «А» в «B» с учетом пробок или разводных мостов.

Рассмотрим пример диалогового сценария, отрабатывающего поставленную задачу:

Для работы сервиса необходимы координаты начальной (А) и конечной (В) точек маршрута.

Адреса точек можно ввести с помощью стартовой формы, доступной через компонент «Диалоговая форма». В форме предусмотрены поля, необходимые для формирования адреса начала и конца маршрута.

Сценарий создан в рамках задачи контакт-центра, форма открывается на экране оператора автоматически, при поступлении звонка. Оператор заполняет нужные поля формы, после чего, используя API Яндекса и компонент web-запрос, в сценарии отправляется GET-запрос вида:

http://geocode-maps.yandex.ru/1.x/?geocode='+[A]

где переменная А - это адрес точки «А», который формируется в объекте присваивания (Формирование запроса о координатах) из данных, введенных в стартовую форму. На запрос придет ответ в виде xml, в котором тег <pos> имеет значение, отвечающее за координаты адреса точки «А».

Такой же запрос отправляется и для определения координаты точки «В».

Извлечь нужную часть информации из полученного ответа можно с помощью парсера либо с помощью строковых функций. В обоих случаях извлекаем из полученных в виде xml данных значение тега <pos>. Пример извлечения координаты с помощью строковых функций:

SubStr( [AText], IndexOf( [AText], '<pos>' )+5, IndexOf( [AText], '</pos>' )-IndexOf( [AText], '<pos>' )-5 )

где AText – это переменная, в которую возвращает ответ get-запрос к Яндекс.Пробки.

Теперь в сценарии есть все необходимые данные для того, чтобы определить среднее время пути автомобиля из «А» в «В» с учетом пробок. Далее необходимо еще раз сформировать соответствующий запрос и найти нужное значение. Запрос выглядит так: 

'http://api-maps.yandex.ru/services/route/1.0/route.xml?callback=id_1&rll='+[Apos]+'~'+[Bpos]+'&lang=ru-RU'

где Apos и Bpos – координаты полученные ранее. В итоге получаем определенный текст, из которого можно извлечь, например, примерное время, как за весь путь, так и за каждый его участок (нас интересует общее).

Дальше с помощью компонента «Присвоение значения переменной» извлекаем нужную информацию, например:

Примерное расстояние, км

Str(Ceil(Num(SubStr( Remove( [text], 0, IndexOf( [text], '"Length":{"value":' ) +18),0 , IndexOf( Remove( [text], 0, IndexOf( [text], '"Length":{"value":' ) +18), ',' ) ) )/1000))

Примерное время, мин

Str(Ceil(Num(SubStr( Remove( [text], 0, IndexOf( [text], '"Time":{"value":' ) +16),0 , IndexOf( Remove( [text], 0, IndexOf( [text], '"Time":{"value":' ) +16), ',' ) ) )/60))

Примерное время с учетом пробок, мин

Str(Ceil(Num(SubStr( Remove( [text], 0, IndexOf( [text], '"JamsTime":{"value":' ) +20),0 , IndexOf( Remove( [text], 0, IndexOf( [text], '"JamsTime":{"value":' ) +20), ',' ) ) )/60))


В качестве примера в час пик введем в форму маршрут от ул.Островитянова 37А до станции метро ВДНХ:

В результате работы сценария получим:

KB-3446

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 0 из 0