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)-465479390
from_chat_id
—%chat_id%
message_id
—%object_id%
Здесь рассмотрим подробнее:
Важно! У вас будет свой ID служебного чата, будьте внимательны.
chat_id
= ID служебного чата в формате(int)-XXXXX
from_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
и выключаем эту возможность. Для включения делаем все аналогичное.

Пробуем добавить бота.

Все отлично работает.
Творческих взлётов и успешного внедрения.
Вернуться к списку инструкций