Telegram Multi-User Bot
Last updated
Last updated
Рассмотрим пример робота, который демонстрирует работу Telegram-бота с несколькими пользователями. Каждый из пользователей может общаться с Chat GPT (при этом используется индивидуальная история чата). В переменной $NameSession указывается имя сессии, после чего необходимо авторизоваться в клиенте.
Важно! Данные о подключении к Телеграм можно найти по пути: c:\Users\User\AppData\Roaming\Sherpa RPA Data\Telegram\
Проект робота состоит из двух диаграмм.
Основная диаграмма проекта выглядит так (для удобства блоки диаграммы пронумерованы):
Блок “Старт” (с этого блока начинается любая диаграмма).
Блок “Процесс” позволяет создавать сценарии, состоящие из нескольких диаграмм. Выполнение сценария продолжится с блока “Старт” указанной диаграммы проекта. Выполнение сценария вернётся к текущему блоку и продолжится в текущей диаграмме как только будет достигнут блок “Конец” во внешней диаграмме. Для блока “Процесс” указано свойство “Имя диаграммы” (имя файла диаграммы, в которой продолжится выполнение сценария).
Блок “Бот. Создать подключение” позволяет создать подключения для бота Telegram. Для данного блока указаны следующие свойства:
Токен бота (токен бота, который можно получить от BotFather в клиенте Telegram);
Время ожидания (время ожидания ответа от сервера Telegram в секундах).
На выходе получено “Подключение” – переменная с объектом текущего подключения к Телеграм. В остальных блоках необходимо указывать именно эту переменную.
Блок “Бот. Получить сообщение” позволяет получить сообщение или обратный вызов из очереди. Если сообщений в очереди нет, то генерируется ошибка. Для данного блока указано свойство “Подключение” (объект подключения к боту. Название переменной в данном свойстве должно совпадать с названием переменной в свойстве "Подключение", блока "Бот. Создать подключение" из группы Telegram, который ранее использовался для подключения к боту Telegram).
Блок “Присвоить значение переменной” устанавливает новые значения для одной или нескольких переменных. В данном случае, в свойствах указано одно значение, которое необходимо присвоить одной переменной, соответственно.
Блок “Получить путь” позволяет узнать полный путь к файлу/директории. Для данного блока указаны следующие свойства:
Путь к папке (путь к папке, в которой располагается необходимый файл);
Имя файла (имя файла).
Блок “Контейнер” позволяет сворачивать содержимое. Под содержимым понимаются блоки, исходящие от текущего через нижний коннектор. Для правильной работы блоки этого контейнера должны заканчиваться блоком “Конец”. По окончании работы внутренних блоков будет произведен переход по коннектору “Выход”. В данном случае, в контейнере "Загружаем данные клиента" Вы можете переключить "Промты" (или задать свои) и этим указать поведение чат бота.Содержимое блока “Контейнер” для данной диаграммы выглядит так:
7.1 Блок “Загрузить из CSV” позволяет загрузить таблицу данных из CSV-документа. Для данного блока указаны следующие свойства:
Путь к файлу (путь к документу, из которого необходимо загрузить информацию в Таблицу Данных);
Разделитель (символ разделителя, по умолчанию используется точка с запятой);
Кодировка (кодировка файла).
7.2 Блок “Выполнить выражение” запускает выполнение одного или нескольких выражений на языке, совместимом с PowerShell. В данном случае используются два выражения.
7.3 Блок “ToDo” используется как заглушка или напоминание для планируемых к реализации функций. В отличие от блока “Комментарий” данный блок является элементом сценария, но не выполняет никаких действий.
7.4 – 7.11 Блоки “Добавить строку” позволяют добавить строку в таблицу данных. Для данных блока указаны следующие свойства:
Таблица (таблица данных, в которую добавляется строка);
Значения (список значений новой строки).
7.12 – 7.13 Блок “Конец” (этим блоком завершается работа сценария или возврат диаграммы подпроцесса в основной процесс).
Блок “Добавить строку” позволяет добавить строку в таблицу данных. Для данного блока указаны следующие свойства:
Table/Таблица (таблица данных, в которую добавляется строка);
Values/Значения (список значений новой строки).
Блок “Лог” позволяет выводить в лог произвольные сообщения и/или значения переменных в процессе работы сценария робота. Для данного блока указано свойство “Значение”. В кавычках указана текстовая константа, а имя переменной начинается с символа $. Т.е., данный блок записывает в лог робота ID клиента и его текстовое сообщение. В Оркестраторе данное сообщение робота будет помечено как “Info”.
Блок “Запрос к ChatGPT” позволяет отправлять запросы к новым генеративным моделям от Open AI начиная с ChatGPT. С его помощью вы можете создавать новые тексты по запросу, выполнять разнообразные задачи классификации, суммаризации, перевода и рерайтинга текстов, написание прототипов кода на разных языках программирования, парсить полуструктурированные и неструктурированные данные, извлекать и обрабатывать факты, поддерживать диалог на разнообразные темы, и многое другое. Оплата за использование данного функционала списывается с лицевого счета клиента на платформе. Для тестовых целей каждому новому пользователю дается возможность протестировать данный функционал без оплаты. При использовании данного функционала после окончания разработки робота необходима оплата. Для данного блока указаны следующие свойства:
История чата (историю чата, на основе контекста которого нейросеть должна сгенерировать ответ);
Модель (модель для генерации ответа);
Температура (десятичное дробное число от 0 до 1, показывающее степень "случайности" или "креативности" результата, где 0 - наименее креативный результат, а 1 - максимально случайный.);
Максимальная длина (максимальная длина результата, выраженная в условных токенах);
Автоограничение длины (установленный флаг включает автокоррекцию максимальной длины результата);
Таймаут (максимальное время ожидания ответа в секундах).
Блок “Добавить строку” позволяет добавить строку в таблицу данных. Для данного блока указаны следующие свойства:
Table/Таблица (таблица данных, в которую добавляется строка);
Values/Значения (список значений новой строки).
Блок “Лог” позволяет выводить в лог произвольные сообщения и/или значения переменных в процессе работы сценария робота. Для данного блока указано свойство “Значение”. В кавычках указана текстовая константа, а имя переменной начинается с символа $. Т.е., данный блок записывает в лог робота ID клиента и ответ на его запрос. В Оркестраторе данное сообщение робота будет помечено как “Info”.
Блок “Бот. Отправить сообщение” позволяет отправить текстовое сообщение в чат. Для данного блока указаны следующие свойства:
Подключение (объект подключения к боту. Название переменной в данном свойстве должно совпадать с названием переменной в свойстве "Подключение", блока "Бот. Создать подключение" из группы Telegram, который ранее использовался для подключения к боту Telegram);
ID чата (Id чата. Данное значение получено из блока "Бот. Получить сообщение" в свойстве "Сообщение");
ID сообщения (ID сообщения, на которое требуется ответить. Данное значение можно получить из блока "Бот. Получить сообщение" в свойстве "Сообщение");
Текст (текст сообщения).
Блок “Сохранить в CSV” позволяет сохранить таблицу данных в CSV-документ. Для данного блока указаны следующие свойства:
Таблица Данных (таблица данных, которую необходимо сохранить в документе);
Путь к файлу (путь к документу, в который необходимо сохранить Таблицу Данных);
Разделитель (символ разделителя, по умолчанию используется точка с запятой);
Кодировка (кодировка файла);
Записать заголовки (установленный флаг включает запись заголовков таблицы).
Блок “Пауза” приостанавливает выполнение работы сценария на заданное время. Для данного блока указаны следующие свойства:
Единица измерения (единица измерения, в которой задана длительность паузы);
Длительность (значение промежутка времени в заданных единицах измерения).
Блок “Требуется остановка” проверяет необходимость остановки сценария.
Для данного блока на выходе, в строке “Результат” указана переменная $NeedStop.
Блок “Конец” (этим блоком завершается работа сценария или возврат диаграммы подпроцесса в основной процесс).
Диаграмма “Настройки”
Блок “Старт” (с этого блока начинается любая диаграмма).
Блок “Объединить путь” объединяет строки в путь. Для данного блока указано свойство “Начальный путь”.
Блок “Создать папку” позволяет создать новую папку. Для данного блока указано свойство “Имя папки” (полное имя новой папки).
Блок “Конец” (этим блоком завершается работа сценария или возврат диаграммы подпроцесса в основной процесс).