Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Ниже рассмотрим, каким образом бот может взаимодействовать с API Яндекса на примере получения информации о ближайшем городе в определенной точке. Точка определяется географическими координатами широты и долготы согласно всемирной системе геодезических параметров Земли (WGS84).

Выполните следующие действия:

  1. При помощи бокового меню перейдите на страницу Сценарии.

       2. Создайте новый сценарий с именем Определение ближайшего города по географическим координатам.

      2. Нажмите кнопку в строке созданного сценария

     3. Разместите в сценарии блок Вопрос. В поле Вопрос (произносится роботом) введите следующий текст: Назовите значение северной широты.

       4. Разместите в сценарии еще один блок Вопрос. В поле Вопрос (произносится роботом) введите следующий текст: Задайте значение восточной долготы.

       5. Выберите соединительную стрелку между блоками Вопрос и в параметрах стрелки задайте следующие настройки:

  • Установите флажок напротив параметра Сохранить ответ.
  • В поле Название переменной введите значение lat. Эта переменная будет хранить значение северной широты.
  • В поле Тип выходных данных выберите значение Ветка по умолчанию.

       6. Повторите указанные выше действия чтобы разместить еще один блок Вопрос с текстом, как указано на рисунке ниже.

      7. Выберите соединительную стрелку между блоками Вопрос и в параметрах стрелки задайте следующие настройки:

  • Установите флажок напротив параметра Сохранить ответ.
  • В поле Название переменной введите значение lng. Эта переменная будет хранить значение восточной долготы.
  • В поле Тип выходных данных выберите значение Ветка по умолчанию.

      8. После последнего блока Вопрос добавьте блок Запрос к серверу.

      9. Выделите блок Запрос к серверу и в параметрах блока задайте следующие настройки:

  • В поле Тип авторизации выберите значение Отсутствует.
  • В поле Выберите тип запроса выберите значениеGET.
  • В полеURL введите следующее значение:https://api.rasp.yandex.net/v3.0/nearest_settlement/?apikey={ключ API}format=json&lat={lat}&lng={lng}&distance={distance}, где:
    • apikey имя переменной, которая хранит ключ API
Предупреждение

Для выполнения запроса необходимо зарегистрировать вашу организацию в Яндексе и получить ключ API.

    • format формат возвращаемых данных
    • lat имя переменной, которая хранит значение северной широты
    • lng – имя переменной, которая хранит значение восточной долготы
    • distance радиус,в пределах которого будет выполнен поиск самого близкого города

       10. Выберите соединительную стрелку между блоками Вопрос и Запрос к серверу и в параметрах стрелки задайте следующие настройки:

  • Установите флажок напротив параметра Сохранить ответ.
  • В поле Название переменной введите значение distance. Эта переменная будет хранить значение радиуса, в пределах которого будет выполнен поиск самого близкого города.
  • В поле Тип выходных данных выберите значение Ветка по умолчанию.

      11. После блока Запрос к серверу разместите блок Информация со следующим текстом: В радиусе 50 км для указанной точки ближайшим городом будет {city}, где {city} – имя переменной, которая будет возвращать название ближайшего города.

       12. Выберите соединительную стрелку между блоками Запрос к серверу и Информация и в параметрах стрелки задайте следующие настройки:

  • В поле Тип выберите значение Результат.
  • В поле Успешность запроса выберите значение Успешно.
  • В поле Код ответа выберите значение 200.
  • В поле Присвоить переменные при выборе ветки введите название переменной city и значение title. Эта переменная будет хранить значение города, который содержится в поле title возвращаемого JSON-объекта.
Информация

При необходимости создайте вторую ветку с блоком Информация для ситуации, когда город не будет найден (код ответа 404). 

      13. Нажмите кнопку Сохранить в верхней части редактора сценариев.

Сценарий будет сохранен. Начните диалог с ботом и проверьте, что сценарий работает корректно.