В этом материале описан процесс создания новостного бота для telegram (@kiosk_rubot) и результаты нескольких месяцев работы бота.
Что делает telegram бот?
Бот агрегирует новости из выбранных пользователем сайтов новостей. Присылает новости от сайтов, которые пользователь выбрал.
Главный вопрос, захочет ли пользователь читать ленту из нескольких сайтов новостей в Телеграм? И как эффективно организовать чтение лент новостей от разных сайтов?
Для первой версии бота выбрали 60 топовых сайтов новостей.
Интерфейс бота
При разработке учитывали ограничения интерфейса. У нас есть 60 сайтов (а если 500?). Как сделать процесс выбора сайтов наиболее удобным?
Работа с ботами задумывалась через текстовые команды. Но мы решили, что выбор даже 3-5 сайтов с помощью текста будет неудобен.
Второй вариант - сделать вложенное меню, чтобы пользователь переходил в нужную категорию. Например, спорт, и выбирал сайты, которые хочет читать. Сделали такой вариант, но нам он показался неудобным. Остановились на варианте, когда пользователю после запуска бота предлагается перейти на веб-страницу и выбрать подходящие сайты.
Веб-страница это более наглядное решение. Вы видите весь список сайтов, видите их логотипы, по клику выбираете сайты и нажимаете "готово".
Переход на экран выбора сайтов сделали ссылкой. Если сделать кнопкой, то на Android устройствах телефон требует дополнительного разрешения после нажатия. Хотя кнопкой красивее и подумываем ее все-таки оставить.
После выбора сайтов, бот будет присылать от них новости.
Периодичность обновления новостей
Новости приходят с определенной периодичностью или по кнопке обновления (называется "Последние новости"). В новой версии добавлен ночной режим. Бот определяет тайм-зону пользователя и не присылает ему новости ночью.
Формат новости
Долго экспериментировали с форматом новостей. У Telegram есть ряд особенностей в создании блоков. Например, вы можете выслать картинку и подпись к ней только до 200 знаков. Отдельно вы можете выслать сообщение до 4096 символов, но в ней нельзя поставить картинку.
Сначала мы высылали картинку с заголовком новости, а после нее отдельным сообщением присылали краткое описание новости и ссылку для перехода на новость. Из-за блокировки частых сообщений со стороны Telegram, пользователь получал картинку с заголовком, а блок с превью новости (и ссылкой) мог получить через 3 сообщения или вообще не получить.
Получалось, что часть новостей приходит без ссылки, т.е. без возможности перейти и прочесть полную версию статьи. Это также приводило к дублированию новостей.
Потом отключили все картинки и стали присылать только текстовые блоки. Лента стала казаться серой и скучной.
Методом проб и ошибок стало понятно, что оптимальный вариант:
- присылать новости с картинкой, заголовком и ссылкой на новость;
- если нет картинки, краткое описание новости и ссылка на новость.
Из ленты новостей пользователь выбирает, какая новость ему интересна и переходит по ссылке. Telegram использует Chrome Tabs, поэтому веб-страница загружается без перехода на сторонний браузер. После закрытия страницы, пользователь остается на боте.
Программирование
Для работы с ботом используются методы, которые описаны в официальной документации. Формирование ленты новостей происходит у нас сервере. С заданной периодичностью парсер проходит RSS сайтов и выбирает новости. После чего отправляет их пользователям. Под каждого пользователя формируется лента новостей исходя из выбранных сайтов.
Телеграм блокировал частую отправку сообщений пользователям. В случае когда одному пользователю надо было присылать 50 новостей сразу, часть из них не доходила. Если присылать новости с задержкой, то происходило очень долго.
Частично мы решили эту проблему группировкой новостей. Если у новости нет картинки, мы группируем новости от одного издания в одно сообщение.
Сокращение ссылок. У некоторых сайтов длинные и не презентабельные ссылки, поэтому решение сокращать их с помощью одного их сервисов. Выглядит красивее:
Улучшение бота
После запуска увидели, что часть пользователей не выбирают сайты. Решили добавить функцию получения новостей без выбора сайтов. Исходили из гипотезы, что части пользователям неважны сайты, они хотят получать новости.
Выбрали ТОП-5 сайтов, и добавили кнопку "Получить новости" при старте бота. Если пользователь при первом запуске не хочет выбирать сайты, он нажимает "Получить новости" и бот присылает ему новости от ТОП-5 сайтов.
В дальнейшем пользователь может поменять эти сайты.
Если пользователь ничего не сделал, но не удалил бота, бот через время присылает уведомление и подписывает пользователя на ТОП-5 сайтов.
Статистика бота за сентябрь 2016 года
Запустили бота – 2470 пользователей
Получают новости - 1350 (54% от установивших бота. Данные на начало октября. В этой цифре смешиваются те, кто установил в начале месяце и кто в конце сентября, поэтому статистика размыта)
Выбрали сайты руками - 866 (35% от установивших бота; 64% от тех, кто получает новости)
Из тех, кто пользуется ботом 64% выбрали сайты сами, 36% нажали "Получить новости" или бот подписал на новости сам.
Другие данные по боту:
- присылать новости с картинкой, заголовком и ссылкой на новость;
- если нет картинки, краткое описание новости и ссылка на новость.
Это была бы хорошая статистика, но есть одно но. Мы пока не знаем, какой процент пользователей реально просматривает новости и нажимает на ссылки. Знаем только что этот человек получает от нас новости.
Если вы создаете бота или планируете создать бота, надеемся эта информация может быть вам полезна.
Обратная связь
Очень удивила обратная связь от пользователей. При администрировании мобильных приложений такого нет. Много предложений, вопросов. Удобно, что ты можешь вступить в переписку с пользователям, узнать интересующие вопросы.
Один из пользователь провел эксперимент, сколько бот сжирает батареи. Такое представить, например, для пользователей Android приложения очень сложно. Спасибо ему огромное!
Если у вас есть комментарии или замечания по статье, присылайте на почту [email protected]