Организация коммуникаций в Телеграм через proxybot
Всем привет! В этой статье я расскажу о возможности организации коммуникаций в Телеграм при помощи бота proxybot. Он позволяет своему владельцу опубликовать в интернете своего бота и принимать все входящие сообщения и отвечать на них не раскрывая свой личный телеграм аккаунт и не создавая дополнительных аккаунтов в приложении Telegram. Боты легко регистрируются через @BotFather, их можно создавать столько, сколько нужно.
Интересные возможности данный бот раскрывает в комбинации с использованием «супергрупп», в которых можно создавать «топики». Когда бот настроен на приём сообщений в супергруппу (как это сделать будет ниже) он сам создаст в ней топик с именем клиента в качестве имени топика, когда клиент впервые обратится. И в последующем бот будет направлять в этот же топик все сообщение от этого клиента. Таким образом вся коммуникация с клиентом происходит в его личном «топике». Топик можно удалить комадной /del.
На gif’ке в конце продемонстрировано, как выглядит данная коммуникация для пользователя Pasha Flores.
Для командной работы просто пригласите в группу своих коллег или сотрудников и они смогут отвечать на сообщения вместе с вами / вместо вас!
Как создать и настроить супергруппу?
Инструкции по самостоятельному запуску бота есть на домашем сайте проекта, там же есть короткий ролик, как вы можете создать и запустить своего бота прямо со своего телефона. Здесь я привожу инструкции касательно создания и настройки супергруппы.
Что бы настроить proxybot на приём сообщения в супергруппу нужно выполнить следующие шаги:
1. Создать группу
2. Добавить в неё своего бота
3. В настройках группы активировать топики (и группа превращается в супергруппу)
4. Сделать бота админом с правами создания топиков
5. Написать в группу команду /setdefault для получения всех новых сообщений в неё
Использование без группы (бот обратной связи)
В принципе, proxybot может быть полезен и без использования супергруппы. Например, для того чтобы опубликовать его для приема обратной связи (отызвы/предложения/жалобы/…). Бот пересылает все получаемые сообщения владельцу бота и каждое последнее неотвеченное сообщение от клиента отмечает символом ⚡️. После ответа на сообщение бот снимает этот emoji. Таким образом несколько упрощается задача найти в истории неотвеченное сообщение.
Здесь видно, как пользователи 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