HelpDesk в Telegram
Сегодня мы придумаем классную штуку для менеджеров. Сами посудите:
- Клиент пишет боту в Telegram.
- Менеджер получает сообщения в служебный чатик, отвечает ответным сообщением и оно улетает обратно пользователю. Но юзер не знает, кто именно ему ответил.
Интересно? Тогда полетели. Будем считать, что интеграция с Telegram настроена, служебный чатик сделан, бот добавлен администратором. Если что-то не готово, то смотрите соответствующие инструкции.
Важно! Если вы не запретите добавлять бота в группы, то любые пользователи смогут его найти и добавить его себе, а платить за Автопилот будете вы. Как отключить добавление в группу смотрите в конце статьи.
Команда: «Получение ID группы для бота»
Важно! ID группы разный для разных пользователей / ботов. Команда позволяет узнать ID группы для конкретного бота или пользователя, например, для корректного удаления.
Событие:
1) Cобытие: «Написал сообщение в Telegram» с текстом: /id
Важно! Не создавайте одинаковых событий / действий, в этом нет смысла. В другие команды обязательно вставляйте события / действия по номеру
Дополнительно рекомендуется добавить условие:
- переменная
%player.tg_id%совпадает с вашей айдишкой в Telegram. Чтобы ее узнать настройте команду без этого условия и напишите боту.
Действия:
1) В действии «Отправить сообщение в Telegram» отправляем текстом без форматирования со значением:
Chat id = %chat_id%
Тестируем.
После получения ID сотрудника можно сделать дополнительное условие на запуск команды только сотрудниками.
Команда пересылающая сообщения в служебный чат
Важно! В примере мы будем реагировать на любые сообщения, кроме админа. Для этого добавляем условие: переменная %player.tg_id%содержит ID админовСобытие:
1) Cобытие: «Написал сообщение в Telegram» с текстом содержащим ничего, для реакции на любое сообщение.
2) Для реакции только на не админов рекомендуется добавить условие:
- переменная
%player.tg_id%совпадает с вашей айдишкой в Telegram и нажмите «Если не». Чтобы ее узнать настройте команду без этого условия и напишите боту.
3) Для реакции только на сообщения написанные в личку бота добавляем условие:
- числовая переменная
%chat_id%больше0
4) Опционально (если вы хотите реагировать только на текст) добавляете условие: переменная %attach_type% совпадает с none, для реакции только на сообщения с текстом.
Важно! При этом условии, если пользователь отправит изображение, видео, голосовое сообщение, то вы не получите сообщение в служебный чат. Будьте внимательны. Это условие дано для примера.
5) Опционально (если вы не хотите реагировать на служебные слова, запуск бота и т.д.) добавляете условие: переменная %content% содержит start,начать,старт,почати и нажмите «Если не» для реакции только на сообщения с текстом, которые не содержат данные слова.
Действия:
1) Для упрощения мы будем отправлять пользователю сообщение, что сообщение передано, но если вам не нужно, можете не делать. Для этого делаем действие: «Отправить сообщение в Telegram» отправляем текстом с форматированием Markdown и текстом:
[%first_name% %last_name%](tg://user?id=%player.tg_id%), {rand} сообщение было передано|получили информацию, ответим, как сможем{/rand}Здесь через функцию {rand} указываем несколько значений через |
2) Мы будем отправлять пересылать сообщение пользователя в служебный чат с полученным ранее %chat_id% действием «Отправить запрос в Telegram» на метод forwardMessage c параметрами:
chat_id—(int)-465479390from_chat_id—%chat_id%message_id—%object_id%
Здесь рассмотрим подробнее:
Важно! У вас будет свой ID служебного чата, будьте внимательны.
chat_id= ID служебного чата в формате(int)-XXXXXfrom_chat_id= ID пользователя, который написал в ботаmessage_id= ID пересылаемого сообщения
Команда для ответного сообщения администраторами
Событие
1) Cобытие: «Написал сообщение в Telegram» с текстом содержащим ничего, для реакции на любое сообщение.
Важно! Не создавайте одинаковых событий / действий, в этом нет смысла. В другие команды обязательно вставляйте события / действия по номеру.
Обязательно добавляйте условия:
2) Переменная %player.tg_id% содержит ID администраторов, менеджеров, для реакции только на тех, кто общается с пользователями.
3) Переменная %chat_id% совпадает с ID чата, для реакции только в определенные чатах.
4) Для того, чтобы реагировать только на ответные сообщения, достаем из входящего сообщения с помощью JSON PATH и проверяем. Для этого делаем условие: числовая переменная %request.input.message.reply_to_message.forward_from.id%больше 0
Действия:
1) Сохраняем ID текущего чата в переменную %current_chat_id% для того, чтобы использовать в дальнейшем.
%chat_id%
2) Во временную переменную %chat_id% записываем Telegram ID пользователя, чье сообщение было переслано в чат.
%request.input.message.reply_to_message.forward_from.id%
3) Для корректности с помощью регулярного выражения {reg} экранируем все спецсимволы, как работать с функцией смотрите тут. Переменная %content% =
{reg}%content%~~_~~0~~\_{/reg}
4) Для отправки сообщения пользователю действием «Отправить сообщение в Telegram» в чат с ID: %chat_id% отправляем текстом с форматированием Markdown и текстом %content%- т.е. что ответил менеджер.
5) Опционально (по желанию): добавляем блок с отправкой сообщения сотруднику в чат с ID: %current_chat_id% отправляем текстом с форматированием Markdown и текстом %response.ok%- т.е. что ответил Telegram. Если вернет 1, то все отправилось успешно.
Тестируем.
Все отлично работает.
Запрет добавления бота в каналы / группы
Аналогично вы можете запретить добавлять бота в группы / каналы, поскольку в таком случае за расход миль платить будете Вы, т.к. карма-бот подключен к вашему аккаунту Автопилота.
Для того чтобы запретить добавление бота в беседу делаем следующее:
1) Открываем BotFather по ссылке https://t.me/BotFather
2) Пишем команду /mybots и получаем список ботов
3) Находим нашего бота, в примере это @andreyGbot_bot и выбираем его в списке.
4) Открываем настройки выбрав Bot Settings
5) Здесь выбираем Allow Groups
6) Вы увидите примерно такой текст, который гласит, что бота можно добавлять в группы:
Groups are currently enabled for bot andreyGBot @andreyGBot_bot
Disabling groups will forbid users to add andreyGBot to groups.
Нам это не нужно, поэтому кликаем на кнопку Turn Groups Offи выключаем эту возможность. Для включения делаем все аналогичное.
Пробуем добавить бота.
Все отлично работает.
Творческих взлётов и успешного внедрения.
Вернуться к списку инструкций