Организация коммуникаций в Телеграм через proxybot

Всем привет! В этой статье я расскажу о возможности организации коммуникаций в Телеграм при помощи бота proxybot. Он позволяет своему владельцу опубликовать в интернете своего бота и принимать все входящие сообщения и отвечать на них не раскрывая свой личный телеграм аккаунт и не создавая дополнительных аккаунтов в приложении Telegram. Боты легко регистрируются через @BotFather, их можно создавать столько, сколько нужно.

bc0b0ffaf71e7a0621278e8178c7f78f.gif

Интересные возможности данный бот раскрывает в комбинации с использованием «супергрупп», в которых можно создавать «топики». Когда бот настроен на приём сообщений в супергруппу (как это сделать будет ниже) он сам создаст в ней топик с именем клиента в качестве имени топика, когда клиент впервые обратится. И в последующем бот будет направлять в этот же топик все сообщение от этого клиента. Таким образом вся коммуникация с клиентом происходит в его личном «топике». Топик можно удалить комадной /del.

На gif’ке в конце продемонстрировано, как выглядит данная коммуникация для пользователя Pasha Flores.

Для командной работы просто пригласите в группу своих коллег или сотрудников и они смогут отвечать на сообщения вместе с вами / вместо вас!

Как создать и настроить супергруппу?

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

Что бы настроить proxybot на приём сообщения в супергруппу нужно выполнить следующие шаги:
1. Создать группу
2. Добавить в неё своего бота
3. В настройках группы активировать топики (и группа превращается в супергруппу)
4. Сделать бота админом с правами создания топиков
5. Написать в группу команду /setdefault для получения всех новых сообщений в неё

Использование без группы (бот обратной связи)

В принципе, proxybot может быть полезен и без использования супергруппы. Например, для того чтобы опубликовать его для приема обратной связи (отызвы/предложения/жалобы/…). Бот пересылает все получаемые сообщения владельцу бота и каждое последнее неотвеченное сообщение от клиента отмечает символом ⚡️. После ответа на сообщение бот снимает этот emoji. Таким образом несколько упрощается задача найти в истории неотвеченное сообщение.

03e7d30fd42e2ea362d0375f46e7c216.gif

Здесь видно, как пользователи Sasha Li и затем Pasha Flores присылают сообщения проксиботу. Каждый из них получает ответ в свой черёд. Последнее сообщение в чате всегда отправляется последнему контакту. И можно выбрать конкретное сообщение и нажать «Reply».

Технические подробности реализации бота

Исходный код бота написан на python и выложен в публичный доступ. Бот заточен под работу в качестве Google Clound Function (другие платформы на подходе), или же его можно запустить как обычное Flask приложение.

Бот использует БД Mongo для хранения своих настроек и таблицы tracking. Таблица tracking работает аналогично conntrack в linux для реализации SNAT & DNAT функционала. В ней сохраняются ID и имена пользователей и некоторая другая служебная информация: u_id, u_chat, u_name, u_thread, u_last_id, p_chat, p_thread, timestamp.

Когда бот получает сообщения, он ищет отправителя в этой таблице по u_id, затем по u_chat. Да, это позовляет даже вашим клиентам создать свою группу и добавить туда вашего бота, и в группе сообща общаться, скажем, с вашей командой! Получается своебразный коммуникационный мост между разными командами. Только для того, чтобы ваш бот в чужой группе получал сообщения без назначения ему админских прав, ему нужно задать настройку Group Privacy = off. Это делается через того же @BotFather .

Резюме и обратная связь

Использование бота Proxybot позволяет удобно и безопасно организовать публичную коммуникации в Телеграм. Клиенты могут обращаться к нам напрямую из своих месенджеров, и мы также не покидаем привычное и удобное приложение Телеграм. Общение по разным проектам можно организовать через разных ботов. Каждый бот в отдельной группе, в каждой группе своя команда для работы с сообщениями. Все поддерживаемые форматы сообщений (аудио, видео и прочие) пересылаются так же как и текстовые сообщения.

Если вам данный проект окажется полезен, прошу отмечать его звездочками на гитхабе. Обратная связь по поводу данного проекта принимается (с использованием этого же бота) на @devproxybot

© Habrahabr.ru