создание чат-ботов
June 29, 2023

Чат-бот - Ежедневная рассылка Яндекс.Погоды в Крыму

Задачей было не просто создать рассылку прогноза из Яндекса, а связать данные о погоде с воронкой по путешествиям. А также уложиться в бесплатный лимит по запросам к API Яндекс.Погоды.

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

Во-первых, про саму систему:

Мы предусмотрели два формата запросов погоды:

1) В режиме реального времени. 

Пользователь нажимает на кнопку “Прогноз погоды”, запрос отправляется на сервера Яндекса, актуальные данные расшифровываются и поступают в таком виде:

Скрин прогноза погоды в боте

2) Подписка на ежеутреннюю рассылку. 

Подписался - в курсе прогноза на сегодня и завтра остался. Данные пользователя при подписке записываются в систему, где к нему применяются специальные настройки. Теперь подписавшийся каждое утро в 8:00 получает информацию о погоде на ближайшие два дня. Удобно.

Скрин “здесь можно посмотреть погоду”

Во-вторых, что там с лимитом?

При создании бота необходимо было учитывать один нюанс - дороговизну специальных API.

Выглядит это примерно так: ты платишь определенную сумму, чтобы получать данные с метеорологических сайтов, в данном случае - с Яндекс.Погоды., и делиться этими данными, например, в собственном приложении “Твоя погода”. Только стоит такая функция дорого, около 15 тысяч рублей в месяц, и включает в себя лимит до 10 тысяч запросов в сутки. Это огромное количество, которое нам было не нужно, ибо при планируемых масштабах нам понадобилось бы не больше 12 запросов в час. Но промежуточного лимита у Яндекс.Погоды нет.

Поэтому пришлось создать систему, которая позволила бы уложиться в бесплатный тариф - 50 запросов в сутки.

50 запросов в сутки. Как же мы решили проблему с лимитом?

Всё просто: мы сделали так, чтобы бот обращался к API не чаще одного раза в час. Если за последние 60 минут какой-то пользователь запросил прогноз, то в течение этих же 60-ти минут по другим запросам в том же регионе поступят продублированные данные.

Таким образом, мы не обращаемся каждый раз к серверам Яндекса, растрачивая лимит, а используем уже полученную информацию. Самая оптимальная частота обновления данных о погоде - раз в час.

В-третьих, как данные о прогнозе погоды помогали пользователям подобрать интересные локации?

Поскольку Крым изобилует туристическими местами, развлечениями и достопримечательностями, мы пришли к оптимальному решению, а именно - все доступные для посещения локации распределили по 2-м категориям: “под открытым небом” и “под крышей”. А значения погоды условно разделили на “хорошие” и “плохие”, где к “хорошим” относится солнечная/пасмурная и безветренная погода, а к “плохим” - осадки и сильный ветер.

Если в течение дня прогноз обещает дождь, которому, в свою очередь, соответствуют определенные значения в шифровании, то бот распознает эти значения и в советах для желающих выбраться из дома предлагает вторую категорию мест - “под крышей”.

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

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

Построить маршрут или найти подходящую локацию пользователь может прямо внутри нашего бота без перехода в сторонние приложения. С помощью инструментов отправки гео он даёт доступ к своему местоположению, а затем формируется персональная ссылка на Яндекс.карты с уже простроенным маршрутом до пункта назначения: ближайшей интересной локации или до выбранного пользователем места.

Скрин карты

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

В итоге, данный чат-бот сообщает актуальный прогноз погоды в определенной геолокации, выдвигает на основе этих данных наиболее подходящие варианты времяпрепровождения, помогает подобрать способы передвижения, а также дает советы по безопасности и напоминает об особенностях местности, чтобы турист точно ничего не забыл и хорошо отдохнул. Мы разработали целую экосистему, которая дополняется новыми возможностями для путешественников и местных жителей Крыма.