HelpDesk в Telegram

Сегодня мы придумаем классную штуку для менеджеров. Сами посудите:

  • Клиент пишет боту в Telegram.
  • Менеджер получает сообщения в служебный чатик, отвечает ответным сообщением и оно улетает обратно пользователю. Но юзер не знает, кто именно ему ответил.

Интересно? Тогда полетели. Будем считать, что интеграция с Telegram настроена, служебный чатик сделан, бот добавлен администратором. Если что-то не готово, то смотрите соответствующие инструкции.

Важно! Если вы не запретите добавлять бота в группы, то любые пользователи смогут его найти и добавить его себе, а платить за Автопилот будете вы. Как отключить добавление в группу смотрите в конце статьи.

Команда: «Получение ID группы для бота»

Важно! ID группы разный для разных пользователей / ботов. Команда позволяет узнать ID группы для конкретного бота или пользователя, например, для корректного удаления.

Событие:

1) Cобытие: «Написал сообщение в Telegram» с текстом: /id

Важно! Не создавайте одинаковых событий / действий, в этом нет смысла. В другие команды обязательно вставляйте события / действия по номеру
Пример события
Пример события

Дополнительно рекомендуется добавить условие:

  • переменная %player.tg_id% совпадает с вашей айдишкой в Telegram. Чтобы ее узнать настройте команду без этого условия и напишите боту.
Условие для запуска команды только сотрудником
Условие для запуска команды только сотрудником

Действия:

1) В действии «Отправить сообщение в Telegram» отправляем текстом без форматирования со значением:

Chat id = %chat_id%
Пример действия
Пример действия

Тестируем.

Для начала получаем ID сотрудника
Для начала получаем ID сотрудника

После получения ID сотрудника можно сделать дополнительное условие на запуск команды только сотрудниками.

Получение Chat_id для бота
Получение Chat_id для бота

Команда пересылающая сообщения в служебный чат

Важно! В примере мы будем реагировать на любые сообщения, кроме админа. Для этого добавляем условие: переменная %player.tg_id%содержит ID админов

Событие:

1) Cобытие: «Написал сообщение в Telegram» с текстом содержащим ничего, для реакции на любое сообщение.

Пример события
Пример события

2) Для реакции только на не админов рекомендуется добавить условие:

  • переменная %player.tg_id% совпадает с вашей айдишкой в Telegram и нажмите «Если не». Чтобы ее узнать настройте команду без этого условия и напишите боту.
Пример условия
Пример условия

3) Для реакции только на сообщения написанные в личку бота добавляем условие:

Пример условия для реакции только в личку бота
Пример условия для реакции только в личку бота

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%
Сохраняем ID служебного чата
Сохраняем ID служебного чата

2) Во временную переменную %chat_id% записываем Telegram ID пользователя, чье сообщение было переслано в чат.

%request.input.message.reply_to_message.forward_from.id%
Запоминаем ID пользователя, который написал нам сообщение
Запоминаем 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 значит, все успешно
Ответное сообщение. Результат 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и выключаем эту возможность. Для включения делаем все аналогичное.

Выключаем добавление в группу.
Выключаем добавление в группу.

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

Запрет работает.
Запрет работает.

Все отлично работает.

Творческих взлётов и успешного внедрения.

Вернуться к списку инструкций
897 views·25 shares