Это руководство по созданию простого бота, который будет сообщать вам прогноз погоды на сегодня.

Это пошаговое руководство по созданию погодного бота всего за несколько минут.

Я создаю это с помощью дизайнера Converse.AI и API погоды @forecast.io, который встроен в наш дизайнер как модуль Chatflow.

Во-первых, API Forecast.IO требует пары широта/долгота, чтобы дать точный прогноз погоды. Я также буду использовать еще один из наших модулей, Google Geocode.

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

Для первого начального состояния мы хотим спросить пользователя о месте, для которого ему нужна погода. Итак, давайте сделаем следующее:

а) Переименуйте ваше начальное состояние в «город»

б) Измените вопрос на «Для какого города вам нужна погода»

c) Поскольку ввод может быть практически любым, мы хотим принять что угодно в качестве ввода в настоящее время, поэтому давайте добавим контекст sys-any (не забудьте нажать клавишу возврата!)

Теперь перетащите модуль под названием «Гео-адрес или широта/долгота» с левой стороны (ищите гео, если вы его не видите) и поместите его под первым состоянием.

Это говорит ему запускаться сразу после получения ответа на вопрос в первом состоянии.

Если вы раньше не использовали модуль геокодирования, он появится и попросит вас зарегистрировать ключ API:

Для этого вам понадобится API-ключ от Google, более подробную информацию о том, как его получить, можно найти здесь.

Получив ключ, введите его в разделе «Ключ API», нажмите «Сохранить» и закройте окно плагина.

Теперь, когда модуль зарегистрирован, нам нужно сообщить ему, как ссылаться на данные, собранные из вопроса «Город».

Вы можете сделать это очень просто, используя рули [ссылка на документы Handlebars здесь], в форме {{states.statename.value}}, поэтому в данном случае {{states.city.value}}.

Это все, что вам нужно сделать, чтобы геокодировать название города, теперь перейдем к модулю погоды.

Перетащите его под модуль геокодирования в дизайнере, и он снова появится и попросит вас зарегистрироваться.

Чтобы зарегистрироваться для модуля погоды, перейдите на https://developer.forecast.io, создайте учетную запись, войдите в систему, и вы увидите свой ключ API внизу веб-сайта, скопируйте его на страницу регистрации плагина, сохраните и закройте.

Теперь макет дизайнера должен выглядеть так:

Теперь нам нужно сослаться на геокодированные данные из модуля геокодирования, чтобы передать их в прогноз.

Поскольку модуль Geocode ссылается на широту и долготу как на отдельные поля, нам нужно ссылаться на них по очереди. К счастью, система руля достаточно умна, чтобы справиться со струнами, таблицами и любыми вариациями, поэтому ее достаточно просто поставить.

{{states.city.geo.geocode.results.0.geometry.location.lat}}, {{states.city.geo.geocode.results.0.geometry.location.lng}}

ПРИМЕЧАНИЕ. Два набора рулей разделены запятой, что делает его классическим форматом ширины и длины.

Итак, теперь у нас есть все необходимое для геокодирования и получения данных о погоде с Forecast.io.

Почти готово, но есть одна небольшая проблема: чтобы сделать это действительно международным, нам нужно показывать погоду в градусах Цельсия/Цельсия, а также в Фаренгейтах, которые мы получаем от Forecast.io. Для этого нам нужно использовать математические функции Converse AI для преобразования одного в другое.

Для тех, кто не знает, стандартный механизм перехода от F к C: (F-32)/1,8 = C

Итак, во-первых, нам нужно удалить 32 из значения по Фаренгейту, для этого перетащите модуль «Вычитание» в нижнюю часть дизайнера и в поле удаления введите 32. (Не -32)

В числовое поле введите ссылку руля на текущую температуру из Forecast.io, которая равна {{states.city.weather.forecast.currently.temperature}}.

Теперь перетащите состояние разделения и в поле «Разделитель» введите 1,8.

В числовое поле введите ссылку на руль вывода из модуля вычитания {{states.city.maths.subtract}}

Теперь перетащите круглый модуль, установите округление на 0 разрядов и введите руль {{states.city.maths.divide}}, чтобы привести его в порядок до удобочитаемого числа.

После всего этого у нас теперь есть текущая температура в градусах Фаренгейта и Цельсия.

Мы также хотим показать прогнозируемые максимальные и минимальные температуры по Цельсию. Чтобы избежать путаницы при двойном запуске одних и тех же модулей в одном и том же состоянии, мы собираемся добавить еще одно состояние для каждого из них, «weathermin» и «weathermax».

Сначала создайте «weathermin», перетащив «новое состояние» с боковой панели.

В вашем новом состоянии добавьте модуль вычитания, установите сумму вычитания на 32 и числовую ссылку с помощью рулей {{states.city.forecast.weather.daily.data.0.apparentTemperatureMax}} (вы заметите, что эта ручная полоса немного отличается, так как мы ищем максимальную температуру для этого дня)

Теперь перетащите модуль разделения с делителем 1,8 и числовой ссылкой {{states.weathermax.maths.subtract}}.

Перетащите круглый модуль с округлением 0 и числовой ссылкой {{states.weathermax.maths.divide}}.

Теперь перетащите новое состояние для Weathermin и выполните те же шаги, что и выше, за исключением использования следующих рулей:

Вычесть: {{states.city.weather.weather.daily.data.0.apparentTemperatureMin}}

Разделить: {{states.weathermin.maths.subtract}}

Раунд: {{states.weathermin.maths.divide}}

Хорошо, теперь у нас есть все части вместе, чтобы получить нужные нам данные, поэтому нам просто нужно отформатировать ответ. Опять же, мы можем сделать это с помощью руля.

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

Текущий прогноз в {{states.city.value}}: {{states.city.weather.forecast.hourly.summary}} Текущая температура: {{states.city.weather.forecast.currently.temperature}}F / {{states.city.maths.round}}C

с максимумом {{states.city.weather.forecast.daily.data.0.apparentTemperatureMax}}F / {{states.weathermax.maths.round}}C

и минимум {{states.city.weather.forecast.daily.data.0.apparentTemperatureMin}}F /

Последнее, что нужно сделать, это добавить триггерную фразу или фразы, в данном случае я собираюсь добавить:

"Погода"

"Прогноз погоды"

"Прогноз"

(Чтобы добавить свою триггерную фразу, щелкните значок в правом верхнем углу с надписью «триггерные фразы»)

Давайте попробуем нашего нового бота:

И это все, что нужно!

Начните сегодня! Перейдите на www.converse.ai и зарегистрируйте учетную запись, чтобы начать работу. Спасибо за чтение, пожалуйста, оставьте комментарий или порекомендуйте нас, если вам нравится то, что мы делаем!

Converse.AI — позволяет вам и вашим клиентам добиваться успеха с помощью обмена сообщениями.