Awakari в Telegram

e34cf769558763177c405ef6750d35c4.png

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

Что такое Awakari

Важнейшая вещь в Авакари — это подписка (subscription). С помощью подписки пользователь задает критерии поиска среди сообщений. Но вместо повтора поиска для новых сообщений, в Авакари новые сообщения инициируют поиск подходящих подписок. После чего система доставляет сообщение по всем подходящим подпискам. Такой подход позволяет избежать polling и доставлять сообщения пользователям немедленно.

e68c68c89a0f86a697251cd09a149a90.png

Для этого используется так называемый Reverse Search Index в дополнение к привычной Publish/Subscribe функциональности.

Источники данных

Допустим, Авакари умеет эффективно фильтровать информацию. Но откуда в Авакари поступают новые сообщения? В теории можно использовать всё, что угодно, СМИ, мессенджеры, социальные сети, сообщения от всевозможных умных устройств. Прямо сейчас уже доступно два способа — ленты новостей в формате RSS/Atom и публичные каналы в телеграм.

RSS

На данный момент в систему поступают обновления из 43-х популярных лент новостей. Здесь есть наука, новости, собственно сам Хабр (куда же без него), финансы, обзоры фильмов, обновления популярных Youtube-каналов на разных языках и многое другое.

Список легко пополняется и предложения по новым источникам охотно принимаются. Так что если вы знаете интересную RSS/Atom ленту, то присылайте автору статьи. Либо можно сразу предложить Pull Request вот сюда: https://github.com/awakari/producer-rss/tree/master/helm/producer-rss/templates (тут же находится актуальный полный список текущих используемых на входе лент новостей).

Публичные Telegram каналы

Интеграция с телеграм для Авакари является очевидной. Поэтому система также получает сообщения из некоторых популярных и публичных телеграм каналов. По аналогии с лентами новостей, здесь также есть наука, вакансии по всему миру, новости, различные товары, анонсы фильмов, криптовалюты, арабский, корейский, хинди… Всего 38 каналов на момент написания статьи. Также приветствуются предложения к добавлению. Актуальный список находится здесь: https://github.com/awakari/producer-telegram/blob/master/helm/producer-telegram/values-demo-0.yaml

Telegram бот

Телеграм-бот @AwakariBot является основным интерфейсом пользователя. Он позволяет управлять своими подписками, публиковать собственные сообщения в систему и самое важное, читать сообщения по подпискам. Доступные функции делятся на две категории:

  1. Приватный чат с ботом — управление подписками и публикация сообщений.

  2. Группа с ботом — выбор подписки (или нескольких) для чтения сообщений в данной группе.

Чтобы начать работу с ботом, начните с приватного чата и просто нажмите кнопку «START».

Приватный чат

Выглядит следующим образом:

a73a585cffa5c26cff87b2a3b889ad63.jpg

Основные функции доступны в виде кнопок внизу.

Кнопка «Subscriptions» — для получения статистики использования подписок. Также присылает список всех подписок пользователя. Каждая подписка в списке также представляет из себя кнопку, нажатие которой выводит детальную информацию о выбранной подписке и предлагает кнопки действий:

7a040fd3b6fd39b929eec515166e4c63.jpg

Кнопка »+ Basic» под «Subscriptions» позволяет быстро создать простейшую подписку с текстовым условием для сообщений. При нажатии бот предлагает ввести имя новой подписки и список ключевых слов (все разделяется пробелами, поэтому имя новой подписки не должно содержать пробелов, как и ключевые слова). Пример:

a9e6e4f7bec1b4ed931118b4a591c025.jpg

Подписка из этого примера будет получать все сообщения, в которых встречается хотя бы одно из слов «news», «новости» или «uutiset». Для английского языка также будет срабатывать в разных падежах, числах и т.п. (стемминг). Для других языков стемминг пока недоступен, но в будущем также возможно.

Кнопка »+ Custom» под «Subscriptions» может быть полезна для создания сложных подписок с группировкой условий и отношениями между ними (And/Or/Xor). Также в этом режиме доступны численные условия. Более подробно об этом здесь: https://awakari.app/help.html

По аналогии с подписками, под кнопкой «Messages Publishing» есть такие кнопки как »▸ Basic» и »▸ Custom». Это кнопки для отправки простого сообщения и сообщения с произвольными атрибутами, соответственно. В режиме отправки простого сообщения также можно отправить изображение/фото, аудио/музыку, видео или документ:

9e8e252583c59f6515200fdb50a48aff.jpg

Группа с ботом

Хорошо, я создал подписку чтобы получать то, что мне интересно, что же дальше?

Дальше нужно создать группу и пригласить в неё AwakariBot. Можно назвать её как-нибудь вроде «Awakari Inbox» (например для всех подписок сразу) или дать имя, соотвествующее какой-то одной подписке. Бот предложит выбрать подписку из списка для чтения. Можно выбрать несколько. Когда в систему поступит сообщение, которое совпадет с данной подпиской, бот пришлет его в эту группу:

6a360e766a20243d9ae5ccf2209a9bc9.jpg

Другой пример полученного сообщения — из RSS-источника. Такие сообщения содержат дополнительнные атрибуты, которые спрятаны под спойлер под «Extra Attributes»:

da2c64ea868398ef8c6afa7a22655fa8.jpg

Планы на будущее

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

Распознавание речи

Наиболее очевидное расширение — это распознование речи. Пользователь отправляет голосовое сообщение через бота, бот используя Speech API превращает это в текст (транскрипт) и сообщение становится легко доступным для сопоставления с текстовыми условиями.

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

Курсы валют и криптовалют

Мониторинг курсов (крипто)валют и уведомление на основе произвольных условий вроде «доллар больше 100» также можеть быть интересным определенным категориям пользователей.

Пока что это всё на сегодня. В случае возникновения любых вопросов вы можете использовать команду бота /support или задать вопрос в community-группе в телеграме.

© Habrahabr.ru