Comment on page
Пересылка сообщений из бота в чат (Telegram)
Задача:
- Пользователь пишет в телеграм-бота
- Администратор видит сообщения пользователей
- И может ответить пользователю, чтобы сообщение ушло от бота
В Малти это можно сделать очень легко.
Мы даже собрали готовую схему, которую вы можете себе установить.

Бот-секретарь v.9.2.Обновленная версия с реакцией на закрытые профили и отправкой ответного сообщения администраторамСсылка на пример готовой схемы для Telegram: 💾 Cкачать схему 🔧 Инструкция по установке схем Всё, что нужно сделать в ней - это получить айди по ключевому слову /id И вставить полученную айди в блок действия «Указать ID служебного чата»
Ниже разберем подробнее каждый пункт.
Первым делом необходимо все подготовить перед сборкой:
- 1.
- 2.Создать группу/чат в Telegram с типом группы «Частная» Сюда будут приходить все сообщения пользователей
- 3.
Для этого создаем простую схему из двух блоков.
- 1.Блок событие с контейнером «Входящее сообщение в чате» и условием «Текст сообщения», где вводим любой текст, который будем отправлять ботуКлючевик для получения ID чата.
- 2.И создаем блок Действие с контейнером «Отправить сообщение»Получение ID чата
- 3.Соединяем два блока стрелкой
- 4.Сохраняем и включаем схему
- 5.Отправляем в чат ключевое слово, которое вы указали в блоке события
- 6.Если всё верно, то в ответ вы получите id чата в формате: -1001878491576 Скопируйте его. Он нам пригодится далее.
Если бот не ответил, пройдитесь еще раз по каждому пункту и всё проверьте.
Частая ошибка, когда добавляют событие «Входящее сообщение», вместо «Входящее сообщение в чате.»
Если предыдущие этапы пройдены, настраиваем пересылку сообщений из бота в админский чат.
- 1.Создаем блок Событие с контейнером «Входящее сообщение» При необходимости, добавьте условия, например, на какие слова не реагировать.Событие будет реагировать на любой текст.
- 2.Создаем блок Действие с контейнером «Задать значение числовой переменной» Задаем на латинице любое название числовой переменной. Например:
chat_id
И вставляем в «Новое значение» — id, которое мы скопировали ранее.ID чата для пересылки. - 3.Далее создаем контейнер действия «Сменить чат для следующих действий» Ставим галочку «Получать значение из переменной» И в переменной прописываем:
{var:chat_id}

Меняем чат на служебный
- 4.Далее создаем контейнер действия «Записать в переменную JSON или массив» с названием: item и значением:
{"message":"сообщение", "edited_message":"исправление"}
- 5.И добавляем контейнер действия «Задать значение текстовой переменной» с названием system_data и значением:
<a href="tg://user?id={var:platform.user.id}">{var:platform.user.first_name} {var:platform.user.last_name}</a> — {var:item.{var:platform.event.type}} №{var:object.id}
#id{var:platform.user.id}
<code>______</code>

Переменная для администратора
- 6.Для проверки типов вложения можно воспользоваться условием: Тип вложения и выбрать все необходимые типы вложений.

Пример условий

Пример ветки вложений
- 7.Готово! Осталось вывести в действие текст или материалы, которые пользователь вам отправил.
Для остальных типов вложений делаете аналогичные условия и действия, на ваш выбор. В схеме добавлена пересылка ответных сообщений в чат администратора. Если необходимо можете добавить сей функционал самостоятельно, либо пользоваться готовой схемой.
- 1.Добавляем контейнер «Отправить вложение в Телеграм» выбираем тип вложения через условную переменную на шаге 6.Тип вложения.
- 2.Выбираем тип файла, который будем пересылать от пользователя:Выбираем нужный тип.
- 3.А в поле «Код вложения» пишем переменную:
{var:object.attachments[0].code}

Выбираем тип вложения, который надо пересылать.
- 4.Добавляем флажок «Добавить описание» с текстом:
{var:system_data}
{var:object.text}

Готово!
Админ в чате нажимает на сообщение с текстом пользователя и нажимает ответить. В примере на вложение с фото.

Ответное сообщение.
После чего вводит текст и отправляет.
Если всё настроено верно, то пользователь от бота получит ваше сообщение.
А вы увидите текст:

Ответное сообщение отправлено успешно.
Есть несколько условий, при которых ответ не сработает: 1. Не будет работать, если вы отвечаете на стикер или файлы! Нужно отвечать именно на текст от бота. 2. Не будет работать, если пользователь в настройках Telegram установил запрет на пересылку своих сообщений.
- 1.Создаем блок Действие с контейнером "Входящее сообщение" При необходимости, добавьте условия, например, на какие слова не реагировать.Пример событияДля того, чтобы не было реакции на переспуску в чате добавляем условие: «Числовая переменная»
{var:object.reply.id}
больше 0, т.е. администратор отвечает на конкретное сообщение пользователя, и не реагировать на переписку в чате.
- 2.Создаем блок Действие с контейнером «Задать значение числовой переменной» Задаем на латинице любое название числовой переменной. Например:
chat_id
И вставляем в «Новое значение» значение ниже
{var:platform.chat.id}

ID служебного чата.
- 3.Для сохранения ID ответа добавляем еще один контейнер «Задать значение числовой переменной» Задаем переменную:
admin_message_id
И вставляем в «Новое значение»
{var:object.id}

Сохраняем ID сообщения.
- 3.Для сохранения текста админа добавляем еще один контейнер «Задать значение текстовой переменной» Задаем переменную:
admin_text
И вставляем в «Новое значение»
{var:object.text}

Текст ответа администратора
Для получения Telegram ID клиента добавляем еще один контейнер «Поиск в тексте по регулярному выражению»
Исходный текст :
{var:object.reply.text}
Регулярное выражение : #id(\d+)
Сохранить результат в переменную : user_tg_id

Сохраняем ID клиента
- 3.Для получения ID ответного сообщения клиента добавляем еще один контейнер «Поиск в тексте по регулярному выражению» Исходный текст :
{var:object.reply.text}
Регулярное выражение :№(\d+)
Сохранить результат в переменную :object_id
Получаем ID ответного сообщения. - 4.Добавляем е ще один контейнер «Сменить чат для следующих действий» Ставим галочку «Получить значение из переменной» В переменную вставляем:
{var:user_tg_id[0]}
Меняем чат на клиентский.
5. Для проверки есть ли ID клиента и ID сообщения добавляем условия:
«числовая переменная»
{var:user_tg_id[0]}
больше 0, и условие «числовая переменная»
{var:object_id[0]}
больше 0.

Условие для проверки ответного сообщения
Готово! Теперь осталось теперь передать сам текст или файл. Аналогично условию выше можно проверять тип вложения.
Создаем блок действия с контейнером «Отправить вложения в Telegram»
- Выбираем тип вложения
- В код вложения вставляем переменную
{var:object.attachments[0].code}
- Ответить на сообщение
{var:object_id[0]}
- Ставим галочку «Добавить описание»
- В описание к вложению вставляем переменную
{var:admin_text}

Пример ответного сообщения
Создаем блок действия и добавляем контейнеры:
- 1.Контейнер «Задать пакет временных переменных»
- переменная
success
и значением:
{case:{var:ok}|0|1}
- переменная
errors
со значением:
{var:error.message}

Проверка отправки
- 2.Ставим галочку «Получить значение из переменной» И в переменную вставляем:
{var:chat_id}
- 3.Контейнер «Сменить чат для следующих действий» Ставим галочку «Получить значение из переменной» И в переменную вставляем:
{var:chat_id}
Переключаем чат на служебный - 4.Для того, чтобы проверитьу спешно ли отправилось сообщение добавляем условие: «числовая переменная»
{var:success}
равно 1, т.е. сообщение было отправлено успешно. Соедняем с портом «да» - 5.Контейнер «Отправить сообщение» Вставляем текст:
Результат отправки: Успех: {case:{var:ok}|0|1}

Сообщение отправлено успешно.
- 6.Из порта «Нет» делаем контейнер «Отправить сообщение» Вставляем текст:
Ошибка: {var:errors}

Сообщение отправлено неуспешно.
- 7.Готово!