Это руководство по созданию простого бота, который будет сообщать вам прогноз погоды на сегодня.
Это пошаговое руководство по созданию погодного бота всего за несколько минут.
Я создаю это с помощью дизайнера 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 — позволяет вам и вашим клиентам добиваться успеха с помощью обмена сообщениями.