В редакцию ЦП поступило письмо от Дмитрия Сонко, руководителя команды разработчиков компании.
Луук , в котором рассказал о процессе создания собственного бота для мессенджера Telegram под названием «Главбургер».
Бот может найти близлежащие закусочные с бургерами и ранжировать их по расстоянию.
Привет, читатели CPU. На фоне растущей популярности ботов для Telegram хочу рассказать вам о своем творении.
«Главбургер» - telegram.me/ГлавбургерБот — бот, который показывает, где поблизости можно попробовать бургеры.
Не так давно у меня возникла идея сделать агрегатор заведений, который знает все о ресторанах, где готовят бургеры.
Я люблю гамбургеры, особенно хорошие.
Потом анонсировали платформу для создания ботов, и я понял — всё, пора действовать.
Изучив документацию по API бота, я создал бота, дал ему имя и описание и понеслось.
Используйте веб-перехватчики или запрашивайте обновления вручную.
Поскольку бот должен взаимодействовать с пользователем интерактивно и быстро реагировать на его запросы, то ответ очевиден — вебхук .
Как уже говорилось, для работы хуков сервер, на котором будет установлен обработчик, должен иметь SSL-сертификат. Пришёл на помощь СтартSSL и статьи с Хабрахабра о его получении, чего вполне достаточно для работы.
Где взять данные для выдачи
На помощь пришла компания Яндекс в лице руководителя проекта Ксении Аникеевой и их замечательного API «Карт».Бот ищет заведения в базе, а если результатов недостаточно, обращается за помощью к Яндексу и дополняет результаты поиска.
Результаты выпуска
Получить одно заведение – это хорошо, но получить несколько с увеличением расстояния – гораздо лучше.После того как человек отправляет боту свою геолокацию, бэкенд делает запрос к базе данных с координатами и ограничивает выбор радиусом в два километра.
Если в результате меньше десяти заведений, он делает поиск на Яндексе, дополняет выборку, сортирует по расстоянию и выводит первое заведение.
Кроме того, бот определяет расстояние до заведения и, учитывая среднюю скорость идущего человека, рассчитывает время ходьбы до него.
Используя другой API Яндекса для генерации статических карт, мы создаем изображения с двумя точками — точкой местоположения пользователя и местоположением заведения.
Используя собственный сокращатель ссылок, мы генерируем ссылку на Яндекс.
Карты с уже выбранным заведением для получения дополнительной информации о ресторане.
Соответственно, пока в результате поиска есть заведения, человек может отправить команду /more и получить следующие позиции.
Некоторые технические подробности
Давно хотел попробовать платформу Jelastic Cloud. На нем размещается бот, удобно оформляются правила вертикального и горизонтального масштабирования системы.В качестве базы данных для удобной работы с геоданными используется PostrgeSQL с расширением PostGIS. Результаты выборки сохраняются в Redis, чтобы не прерывать постоянно базу данных запросами.
Сам сохраняемый результат реализован в виде очереди: делаем запрос на следующее заведение — указатель перемещается на следующее заведение, пока есть что отобразить.
Как только отобразятся все заведения, кэш очищается.
MongoDB используется для хранения «сырых» данных, полученных от Яндекса и Telegram, результатов отправки сообщений.
Помогает быстро построить необходимую аналитику и при необходимости перестроить формат базы данных без необходимости делать новые запросы.
В результате работы произошло написано маленькая обертка (обертка, программа, вызывающая одну или несколько других программ – прим.
редактора) для фреймворка Yii2, который позволяет быстро подключить функционал отправки сообщений.
Эпилог
Разработка бота от первого коммита в репозитории до его презентации публике заняла почти месяц вечеров.Сначала обрабатываем зацепы, потом изучаем аппаратуру для геокодирования, вычисляем длины градусов долготы и широты, переводим их в километры на самолет и обратно.
Парсинг результатов Яндекса, генерация результатов поиска, их сортировка, снова геокодирование.
На мой взгляд, бот оказался достаточно полезным и интересным, по крайней мере для меня, с точки зрения новых технологий и подходов.
Сама платформа для ботов обязательно будет развиваться; у него большой потенциал, но пока это скорее игрушка для гиков, чем новый способ ведения бизнеса.
На ум приходит множество потенциальных решений, от вызов такси и заказ еды на дом перед внедрением каких-то систем техподдержки а-ля Jivosite (у Хабрахабра уже есть статья об этом).
Я обязательно буду следить за его развитием; друзья и знакомые уже постоянно подсказывают идеи для новых ботов.
Буду рад любым отзывам о боте, советам, комментариям, предложениям.
Все будет учтено.
Особая благодарность редакции ЦП.
Моя предыдущая публикация на Бирже труда помогла мне найти интересную работу в крутой компании.
-
Что Следует Знать О Планшетном Пк
19 Oct, 24 -
Как Я Искал Работу В Берлине
19 Oct, 24 -
Resq Ищет Пропавших Туристов С Воздуха
19 Oct, 24 -
Слова На Бумаге
19 Oct, 24