Лучшие статьи и кейсы стартапов
Включить уведомления
Дадим сигнал, когда появится
что-то суперстоящее.
Спасибо, не надо
Вопросы Проекты Вакансии
text-to-action platform
Рекомендуем
Продвинуть свой проект
Лучшие проекты за неделю
45
Битрикс24

Битрикс24

www.bitrix24.ru

15
GIFTD

GIFTD

giftd.tech

13
Aword

Aword

Приложение для изучения английских слов

12
Логомашина

Логомашина

logomachine.ru

12
Convead

Convead

convead.ru

11
Devicerra

Devicerra

devicerra.com

11
Eczo.bike

Eczo.bike

www.eczo.bike

11
Flowlu

Flowlu

flowlu.ru

10
Отследить-посылку

Отследить-посылку

отследить-посылку.рф

10
KEPLER LEADS

KEPLER LEADS

keplerleads.com

Показать следующие
Рейтинг проектов
Подписывайтесь на Спарк во ВКонтакте

Создаем RSS Feed бота с помощью Leecero

2 092 18 В избранное Сохранено
Авторизуйтесь
Вход с паролем
Привет! Сегодня мы запустили личный кабинет и в честь этого я хочу написать полноценный мануал: как с нуля создать бота для отправки себе информации из RSS.

Шаг первый. Регистрация на www.leecero.com

Самый простой шаг. Идем на сайт и жмем на кнопку Register, после чего заполняем формочку и попадаем в ЛК. Здесь мы сразу можем создать бота, что мы немедленно делаем.

b_55c3437a12b00.jpg

Шаг второй. Создание бота в Telegram

Внутри нас встречает инструкция, как создать бота в телеграм. Последуем ей.

b_55c343db5b8d6.jpg

Идем в Telegram и пишем привет BotFather

b_55c344848894b.jpgТут мы узнаем что все простые названия, типа RssBot или RssFeedBot уже заняты. Неужели и тут появились киберсквоттеры? Ну тогда хотя бы в приветствии написали бы где и как купить бота. Еще можно с помощью Leecero эту покупку автоматизировать ;)

Впрочем, имя RssyBot свободно - его и возьмем.

Мы не будем добавлять боту морфологии, сделаем поддержку простых команд. Подумав немного, мы придумываем список необходимых команд:

  • start - Start Rssy Feed bot
  • list - Show current feeds
  • add - Add new feed
  • remove - Remove old feed, call with params like "/remove 1"
  • cancel - Cancel current operation
  • stop - Stop Rssy Feed bot

И сразу скармливаем их BotFather

b_55c3458abc225.jpg

Еще добавляем описание, картинку - все эти настройки легко сделать в интерактивном режиме. И конечно сохраняем токен - он нам понадобится для подключения бота к Leecero

Шаг третий. Подключаем бота к Leecero и пишем сценарий

Тут все тоже довольно просто. Leecero просит от нас три вещи: токен полученный от BotFather, Username владельца чата для отладки и сценарий, причем заглушку сценария он уже создал

b_55c3466c6c8c8.jpg

Поэтому мы вносим все данные и начинаем писать сценарий. Сначала его стоит спроектировать, чтобы понимать как он должен выглядеть. Для этого я люблю вот этот сервис. Итак, наши предпосылки таковы:

  1. Состояние start обязательно, выход из него по команде /start
  2. Необходимо состояние из которого будут вызываться все команды
  3. Для добавления rss ссылки нужно 2 состояния: для вызова add и для передачи ссылки
  4. Нужно поддерживать команду /cancel
  5. Нужно поддерживать команду /stop для отмены рассылки и /start для повторного запуска

Рисуем!

b_55c3484e59e40.jpg

Таким образом после /start бот уходит в состояние AwaitingCommand. Из этого состояния ему доступны команды list, remove, add, stop. По команде Add будет выполнен переход в состояние AddFeed а выходом из этого состояние будет отправленная ссылка.

b_55c348f98fec5.jpg

Состояние /remove требует цифру (/remove НОМЕР_ФИДА) поэтому добавим ему морфологию типа "num".

Состояние AddFeed - * должно отправить ссылку в web-service для сохранения в БД, поэтому добавим ему морфологию типа "msg".

Напомню список модификаторов морфологии которые поддерживает Leecero

  • msg - сообщение целиком
  • num - цифра или номер. отправляется первая найденная в сообщение цифра.
  • dt - дата и время
  • address - адрес
  • fio - ФИО, необходимо чтобы в сообщение были все части ФИО, иначе система не распознает его целиком

Нажимаем Save и бот готов. Уже можно слать ему сообщения и он будет отвечать. Однако пока он ничего не делает. Следующий раздел будет содержать некоторое количество кода и может быть не интересен многим на этом ресурсе. Однако он очень важен для демонстрации всех возможностей Leecero

Шаг четвертый. Пишем back-end бота на ASP.NET

Писать back-end можно на чем угодно. Я выберу ASP.NET просто потому что я его лучше знаю. В качестве back-end нам понадобиться База Данных с одной таблицей, несколько webhook для обработки команд и сервис по опросу RSS фидов

База данных

В БД нам потребуется хранить какой пользователь какой фид для себя сохранил. Структура базы данных будет максимально простая: одна таблица со следующими полями

  1. ID Чата - чтобы знать куда отправлять
  2. Имя пользователя - просто для информации
  3. Ссылка на feed
  4. Активен ли пользователь - чтобы не присылать ничего тем пользователям, которые находятся в состоянии NoData

b_55c350b37de42.jpg

Это таблица не нормализована, что не очень хорошо, так что выполним приведение к нормальным формам. Пользователей и feeds можно разделить на две таблицы и связать их связью один-ко-много. Это ускорит как опрос feedov так и рассылку данных.

Созданные таблицы выглядят следующим образом:

Webhooks для обработки команд

Вспомним список команд

  • start - Start Rssy Feed bot
  • list - Show current feeds
  • add - Add new feed
  • remove - Remove old feed, call with params like "/remove 1"
  • cancel - Cancel current operation
  • stop - Stop Rssy Feed bot

Для каждой команды нам понадобится свой webhook который будет вызван.

Если в поле action какого-либо перехода (transition) находится верная url ссылка, например http://tjnewsbot.mybluemix.net/paper, то Leecero при выполнение этого перехода выполнит GET-запрос по указанному адресу. В ответ ожидается сообщение с кодом 200 и телом в виде JSON ответа - списка сообщений для отправки пользователю. В запрос будет переданы id чата и параметры указанные в атрибуте morphology.

Не буду утомлять вас кусками кода, скажу только что я потратил ровно один час на написание backend этого бота. Класс который реализует backend выглядит вот так

b_55c35b79b4e78.jpg

Названия методов будут превращены в url адреса действий, например Add будет превращен в ссылку вида www.domain.com/api/rssy/start?id=1 где id будет идентификатором чата. Теперь мы можем опубликовать backend и поправить сценарий. В нашем случае backend будет развернут на Azure, но вы можете использовать что угодно, в т.ч. собственные сервера.

В сценарии в атрибуты action мы записываем ссылки на наши webhook'и которые будут вызваны при переходе из одного состояния в другое по action

b_55c362a01823d.jpg

Бот готов и полностью функционирует. Давайте попробуем добавить пару rss фидов

b_55c371f665e5f.jpg

Успех! Однако, пока бот ничего не присылает. Для отправки сообщения нужен сервис.

Сервис мониторинга RSS feed'ов и рассылки

Сервис мониторинга будет простым консольным приложением подключенным к веб-сервису как AzureWebJob. Он будет раз в час опрашивать все feed пользователя, формировать ему пакет сообщений и отправлять все новое за последний час в чат. Конечно не самый лучший вариант для отслеживания 1000+ источников, но для слежкой за 1-2 сайтами в самый раз.

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

  1. API Token из личного кабинет. Находится в верхней части Dashboard
    1. b_55c36b4f7a7fd.jpg
  2. Bot Token бота. Находится в Details бота
    1. b_55c36bc8d6f04.jpg
  3. Chat Id чата. Эту информацию мы собирали при добавлении пользователем ссылки в базу

После чего необходимо выполнить POST запрос следующего вида

http://leecero.com/api/chat/{API_TOKEN}/{BOT_TOKEN}/{CHAT_ID}

С телом в виде нашего сообщения в JSON.

b_55c36e581df0a.jpg

Шаг последний. Добавляем бота в каталог и радуемся.

Бот готов. Он будет раз в час присылать последние новости из выбранных RSS каналов.

b_55c37201aa285.jpg

Чтобы о нем все узнали, давайте добавим его в каталог. Есть один очень неплохой: http://storebot.me/

Добавим же нашего бота туда.

b_55c37809df95a.jpg

А пока он ждет аппрува, приглашаю всех желающих попробовать бота telegram.me/RssyBot и обсудить что ему не хватает в комментариях.
0
Добавить в избранное Сохранено
Авторизуйтесь
Вход с паролем
Первые Новые Популярные
LanguageBoost
Онлайн сервис для изучающих иностранный язык
Tihiro
Все это выглядит очень муторно и непривлекательно (для непосвященных). Пользоваться кучей сервисов, писать код и делать разные другие телодвижения чтобы только получить то, что уже существует много лет (rss), неее.
Вот сделайте сервис, чтобы все то же самое можно было сделать в 2-3 клика в одном месте, вот тогда поговорим :)))
Ответить
Показать предыдущие комментарии
PushAll
Платформа мгновенных уведомлений.
Олег Карнаухов
Да не в том суть. Пользователи будут добавлять сами ботов все больше и больше. Все перерастет в то, что ухудшится юзерфрендли телеграма из за этого. Бота сделать просто, для них сделали много всего. Ничего вводить не нужно. Нажал кнопочки и все работает.
Как итог: будет по 20 ботов у юзеров, общаться будет сложнее - люди будут использовать скорее другие системы для общения, а телеграм станет просто браузером ботов.
Ответить
Leecero
text-to-action platform
Павел Осадчук
я вижу немного другое развитие ситуации: боты становятся полноценным приложением, как приложение в телефоне.
но ставятся и удаляются намного быстрее.
Вам же не мешает 20 приложений на телефоне? вот и не будет мешать 20 ботов. Все будут настраиваться как положено, их текущее состояние скорее эксперимент. Боты которые мешают - будут удаляться.
Ну в общем все как с приложениями, только проще для всех - разработчиков и пользователей.
Ответить
PushAll
Платформа мгновенных уведомлений.
Олег Карнаухов
Мне как раз мешают 20 приложений. Я делаю свой сервис как раз чтобы через одно приложение получать уведомление от 20 сервисов, а использовать эти сервисы через браузер.
У меня нет приложений к примеру по сериалам - но я получаю увдеолмение о выходе серий в хром и качаю их с компа.
У меня нет приложений для tjournal,ЦП ,спарка или хабра - но я получаю от них уведомления по ключевым словам и использую все это через браузер. Универсальное средство уже есть - и это браузер. Я сам использую не более 5 приложений. Ютуб почта браузер вк и своё приложение для уведомлений. Все :)
Ответить
LanguageBoost
Онлайн сервис для изучающих иностранный язык
Tihiro
Объясните тогда, зачем мне какой-то бот, который ищет картинки или показывает мне погоду, когда я в два клика могу то же самое в браузере получить?
Ответить
Магазин Таобао
Cайт (движок) с товарами Taobao на русском языке
Магазин Таобао
Боты скорее для тех, кто в мобильном сидит больше, чем в компе.
Я в последнее время тоже думаю, что эта тема будет развиваться. В сегодняшнем состоянии оно еще не привлекательно, но вспомните сайты в 90-х годах - они тоже были не очень привлекательны и непонятны, но со временем все встало на свои места.
Я точно уверен, что для сервисов, которые не могут создать полноценное приложение - это будет выходом 100%. И у меня есть мнение, что люди привыкают к одному интерфейсу и к новому сложно привыкнуть, поэтому в том же любимом телеграме или вотсапе включить бота будет для них оптимальным выходом. Я думаю боты не заменят полноценное приложение, но возьмут свою аудиторию и она будет расти со временем и захватит свой сегмент. Через 2-3 года будет более ясная картинка по этому вопросу...
Ответить
Выбрать файл
Читайте далее
Загружаем…
Не пропустите публикацию!
Leecero
text-to-action platform
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать