В предыдущей статье я рассказывал об Авакари - системе обратного поиска в потоке сообщений. С тех пор прошло некоторое время на обкатку системы и добавление новых функций. Наконец, дошла очередь до интеграции с телеграмом, что позволяет легко использовать Авакари обычным людям для своих нужд.
Что такое Awakari
Важнейшая вещь в Авакари - это подписка (subscription). С помощью подписки пользователь задает критерии поиска среди сообщений. Но вместо повтора поиска для новых сообщений, в Авакари новые сообщения инициируют поиск подходящих подписок. После чего система доставляет сообщение по всем подходящим подпискам. Такой подход позволяет избежать polling и доставлять сообщения пользователям немедленно.
Для этого используется так называемый 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 является основным интерфейсом пользователя. Он позволяет управлять своими подписками, публиковать собственные сообщения в систему и самое важное, читать сообщения по подпискам. Доступные функции делятся на две категории:
Приватный чат с ботом - управление подписками и публикация сообщений.
Группа с ботом - выбор подписки (или нескольких) для чтения сообщений в данной группе.
Чтобы начать работу с ботом, начните с приватного чата и просто нажмите кнопку "START".
Приватный чат
Выглядит следующим образом:
Основные функции доступны в виде кнопок внизу.
Кнопка "Subscriptions" - для получения статистики использования подписок. Также присылает список всех подписок пользователя. Каждая подписка в списке также представляет из себя кнопку, нажатие которой выводит детальную информацию о выбранной подписке и предлагает кнопки действий:
Кнопка "+ Basic" под "Subscriptions" позволяет быстро создать простейшую подписку с текстовым условием для сообщений. При нажатии бот предлагает ввести имя новой подписки и список ключевых слов (все разделяется пробелами, поэтому имя новой подписки не должно содержать пробелов, как и ключевые слова). Пример:
Подписка из этого примера будет получать все сообщения, в которых встречается хотя бы одно из слов "news", "новости" или "uutiset". Для английского языка также будет срабатывать в разных падежах, числах и т.п. (стемминг). Для других языков стемминг пока недоступен, но в будущем также возможно.
Кнопка "+ Custom" под "Subscriptions" может быть полезна для создания сложных подписок с группировкой условий и отношениями между ними (And/Or/Xor). Также в этом режиме доступны численные условия. Более подробно об этом здесь: https://awakari.app/help.html
По аналогии с подписками, под кнопкой "Messages Publishing" есть такие кнопки как "▸ Basic" и "▸ Custom". Это кнопки для отправки простого сообщения и сообщения с произвольными атрибутами, соответственно. В режиме отправки простого сообщения также можно отправить изображение/фото, аудио/музыку, видео или документ:
Группа с ботом
Хорошо, я создал подписку чтобы получать то, что мне интересно, что же дальше?
Дальше нужно создать группу и пригласить в неё AwakariBot. Можно назвать её как-нибудь вроде "Awakari Inbox" (например для всех подписок сразу) или дать имя, соотвествующее какой-то одной подписке. Бот предложит выбрать подписку из списка для чтения. Можно выбрать несколько. Когда в систему поступит сообщение, которое совпадет с данной подпиской, бот пришлет его в эту группу:
Другой пример полученного сообщения - из RSS-источника. Такие сообщения содержат дополнительнные атрибуты, которые спрятаны под спойлер под "Extra Attributes":
Планы на будущее
Всё это сейчас уже активно используется для персональных нужд. Также доступно для всех остальных в рамках разумного и в режиме демо. Если это окажется полезным кому-то ещё, то можно будет перевести все это в режим реального использования aka production.
Распознавание речи
Наиболее очевидное расширение - это распознование речи. Пользователь отправляет голосовое сообщение через бота, бот используя Speech API превращает это в текст (транскрипт) и сообщение становится легко доступным для сопоставления с текстовыми условиями.
Также можно пропускать сообщения с изображениями или видео через классификатор, чтобы те пользователи, которые хотят получать именно фото рыжих котиков могли всегда получать их.
Курсы валют и криптовалют
Мониторинг курсов (крипто)валют и уведомление на основе произвольных условий вроде "доллар больше 100" также можеть быть интересным определенным категориям пользователей.
Пока что это всё на сегодня. В случае возникновения любых вопросов вы можете использовать команду бота /support
или задать вопрос в community-группе в телеграме.