1с боты что это
В данной статье будет рассмотрена нововведение в конфигурации 1С:Документооборот , а именно – чат-бот по имени Ася. Будет представлена инструкция по особенностям и пользованию данным чат-ботом в 1С:ДО.
Чат-бот в доступен для версий 1С:Документооборот КОРП и ДГУ. Имя Ася может отвечать на вопросы, открывать различную документацию и файлы и исполнять некоторые задания.
На скриншоте ниже представлен общий вид чат-бота Ася в системе 1С:Документооборот.
Рис. 1 Чат-бот Ася в 1С 8 Документооборот
Этот чат-бот является помощником и имеет следующий функционал:
· Помогает обучению работников в программе 1С;Документооборот;
· Обеспечивает навигацию по 1С;Документооборот 3.0;
· Может отвечать на популярные запросы (например, по темам: создание документации во время отсутствия сотрудника, как подать заявление для отпуска и другое);
· Может обрабатывать некоторые администраторские запросы (например, поменять пароль, сообщить сотруднику о проблеме, устанавливать дистрибутивы и многое другое).
Рассмотрим, как активировать чат-бота в 1С:Документооборот. Для этого необходимо написать Асе во вкладке «Обсуждения» нужный вопрос или функцию, или даже просто слово. Примеры:
1. «Кто дома» – функция, которая позволяет узнать, какие сотрудники находятся на удалённой работе;
2. «Пароль» – функция, которая помогает поменять собственный пароль внутри программы;
3. «Отпуск» – по данному запросу можно узнать количество возможных дней для отпуска, либо провести заполнение заявления и так далее.
На демонстративном скриншоте далее приведена реакция Аси на запрос «отпуск»:
Рис. 2 Ответ на запрос чат-бота в 1С 8 Документооборот
Рассмотрим настройки чат-бота. Чтобы подключить Асю и «заставить» работать, необходимо чтобы администратор перешел по следующему пути: «Настройки программы → Общие → Использовать чат-бот → Настройки», после чего будет открыто окно с настройками, но лишь в случае, если для конфигурации была подключена функция «Обсуждения».
На скриншоте ниже демонстрируются настройки вашей версии 1С:Документооборот для подключения чат-бота:
Рис. 3 Настройка в 1С 8 Документооборот для подключения чат-бота
Замечание: если при создании уникального приветствия сделать настройки по более чем одному состоянию, то чат-бот будет здороваться с каждым из пользователей, которые подключаются к программе, по одному разу.
Рис. 4 Состояние чат-бота в 1С 8 Документооборот
Стандартных настроек у состояний нет. После того, как было завершено обновление, нужно провести настройки вручную.
Замечание: менять настройки у чат-бота может только администратор, либо тот сотрудник, который был отмечен как «Администратор чат-бота».
Чтобы провести заполнение карточки с состояниями в программе 1С:Документооборот, нужно следовать нижеуказанной инструкции:
1. Описать слова-ключи, по использованию которых чат-бот начнёт поиск по данному состоянию;
3. Также, по необходимости, можно добавлять документацию, файлы и прочие вложения;
4. После чего нужно проставить «галочку» около «Используется».
Пример одного из состояний чат-бота указан на скриншоте ниже:
Рис. 5 Пример состояний чат-бота в 1С 8 Документооборот
Если стоит «галочка» около пункта «Доступно из любого состояния», текущее состояние будет доступно во время поиска согласно ключевым словам и фразам, даже из других состояний.
Стоит отметить, что есть некоторые правила и рекомендации для наиболее корректной работы с ключевыми словами:
· Использовать только существительные и глаголы;
· Никогда не использовать предлоги;
· Наиболее желательным является именительный падеж;
· Создание уникальных слов, чтобы ответ состоял из одного состояния.
В случае, если от чат-бота требуется выполнение некоторого действия (например, открыть список с отборами, создать новое письмо и так далее), нужно кликнуть на «Расширенные настройки» в 1С 8.3 Документооборот. Чтобы настроить данные функции уже обязательно знать, как программировать в 1С. Но для примера можно воспользоваться скриптами в демобазе, как показано на скриншоте ниже:
Рис. 6 Скрипты в демобазе для чат-бота в 1С 8 Документооборот
В данном поле можно написать любой программный код, к которому есть доступ на клиенте. Параметром у данного действия может быть и ссылка, и число, и дата и так далее. Также можно сделать автоматические подстановки, которыми чат-бот сможет пользоваться, для этого необходимо сделать добавление функции «Вычисляемые параметры». Чтобы проверить корректность работы чат-бота, используйте тестовую кнопку «Проверить».
Замечание: следует взять во внимание, что чат-бот не может работать для веб-клиента.
2. Проведение анализа работы чат-бота в 1С
История бесед демонстрируется на скриншоте ниже:
Рис. 7 История бесед чат-бота в 1С 8 Документооборот
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
В очередном релизе технологической платформы «1С:Предприятие 8.3.18» появится новый объект метаданных, который позволит разработчикам создавать новых улучшенных ботов для системы взаимодействия.
Чем новые боты будут отличаться от старых
На страницах официального технологического блога «Заметки из Зазеркалья» опубликован анонс нового механизма для разработки ботов, который появится в платформе «1С:Предприятие 8.3.18».
Ключевым преимуществом такого подхода должно стать то, что созданные с помощью нового механизма боты смогут реагировать на события в режиме реального времени.
Новый механизм разработки ботов позволит избежать таких задержек во времени, а также использовать клиент-серверную архитектуру для работы с ботами в системе взаимодействия.
Как написать бота, понятно. Остается вопрос – зачем?
Разработчики технологической платформы предлагают рассматривать разработку ботов как один из инструментов автоматизации бизнес-процессов предприятия. В том числе для решения таких задач:
- Сокращение человеческих трудозатрат на рутинные операции.
- Напоминание о важных событиях.
- Организация обучения и технической поддержки.
Существенным фактором здесь является то, что функционирование бота, написанного на 1С, будет тесно связано с объектами корпоративной системы управления и учета: заказами, реализациями, элементами справочников и т.д.
Впрочем, возможности «1С:Предприятия», начиная в релиза 8.3.17, позволяют реализовать интеграцию 1С с внешними мессенджерами тоже. На данный момент доступна совместная работа с Telegram и ВКонтакте, при этом заявляется, что перечень мессенджеров, интегрируемых с 1С, будет расширяться. То есть вовлекать в процесс коммуникации можно не только пользователей «1С:Предприятия», но и внешних клиентов.
Хм. мда-а - а зачем? Впрочем. пусть будет - авось когда-нибудь пригодится - вот только термин "Бот" тут явно сильно сказано. Я бы абстрагировался просто до "Внешнего события" - или ещё глубже абстрагировался - просто до "События" (мол - оно может быть и внутренним) - а уж какие источники могут быть у события -- это уже другой вопрос.
Другое дело что всё это есть в платформе - я имею в виду подписку на события - нет не ту что среди метаданных присутствует ещё с 8.1 (хотя эта сущность тоже вполне бы сгодилась) - а ту что делается исключительно программно в общих модулях процедурой "ПодключитьОбработчикОповещения" - суть абсолютно та же - разве что не отображается в метаданных - обрабатывает возникшее оповещение и взвывает обработчик
Разве что, процедуре ПодключитьОбработчикОповещения всё-таки стоило бы дать два доп параметра - для указания фильтра на имена событий и источники - чтобы не фильтровать их внутри обработчика
Ну а если бы ещё и подписки на события так можно было бы на любые события/оповещения подписывать - так вообще не понятно, зачем нам такие боты в 1С?
Ну если только платформа для обработки таких событий сможет стартовать отдельные сеансы? Хотя - это само по себе не лучшее решение - если только им нельзя будет управлять (т..е. не запускать сеансы, а обрабатывать всё в запущенном(ых).
Ну, а если, говорить о ботах - то они ещё и контекст должны как-то сохранять между событиями. Ну если эта обработка вся будет в рамкам работающего сеанса - то не проблема (проблема тут будет только в обеспечении асинхронности вызовов и распараллеливании обслуживания - но это уже другая тема). А для каждый вызов создаваемых фоновых сеансов - это будет уже проблема - да такая - что толку от этих ботов будет не больше, чем от web-сервисы.
ну а на перспективу - хорошо бы таких ботов иметь под рукой и рамках обычных сеансов пользователей - чтобы боты моли реагировать на события команд пользователей и фоновых мониторов системы (из сеанса пользователя) - но опять-таки - это возвращает нас к проблеме асинхронности и параллельности в рамках одного сеанса! Без параллельности тут делать нечего.
- Предопределенный ‑ указывает, что бот предопределенный. Отличается от обычного бота, только тем, что его нельзя явно создать или удалить. Если бот предопределенный, то при обновлении конфигурации в базе автоматически будет создано бот и пользователь системы взаимодействия. Иначе если бот обычный, то информация о нём удаляется и пользователь системы взаимодействия перестает быть ботом. Далее работа с ботом осуществляется через объект БотСистемыВзаимодействия. Изменение свойств метаданных (Имя, Синоним и Картинка) применяются при вызове метода менеджера системы взаимодействия: СистемаВзаимодействия . ВыполнитьОбработкуБотов () .
- Картинка ‑ устанавливается пользователю системы взаимодействия, ассоциированному с данным ботом.
- Предопределенный ‑ свойство является отражением свойства объекта конфигурации в объектную модель.
- Пользователь ‑ содержит ссылку на пользователя системы взаимодействия, который олицетворяет данного бота. Пользователя можно менять во время работы системы, изменение допустимо как из встроенного языка, так и с помощью соответствующей стандартной функции.
- ИмяПользователяИнформационнойБазыВыполненияОбработки ‑ данное свойство содержит ссылку на пользователя информационной базы. Указанный в данном свойстве пользователь определяет, какие права доступа к объектам базы данных будут предоставлены боту.
- Метаданные ‑ ссылается на объект конфигурации, описывающий бота. Изменение данного свойства приводит к изменению логики работы существующего бота. Не поддерживается изменение данного свойства для предопределенных ботов.
- ДополнительныеПараметры ‑ через это свойство можно передавать боту какие-то дополнительные данные, которые не могут быть переданы через информационную базу. Эти параметры можно применять тогда, когда один объект БотСистемыВзаимодействия используется для разных ботов.
- Вызов метода ВыполнитьОбработкуБотов () менеджера системы взаимодействия (для предопределенных ботов).
- Методом БотСистемыВзаимодействия . Записать () . Объект БотСистемыВзаимодействия можно получить с помощью методов менеджера системы взаимодействия: СоздатьБота () , ПолучитьБота () или ПолучитьБотов () .
Если Ответ . КодСостояния <> 200 Тогда
НашОтвет . Текст = "Код ошибки №" + Ответ . КодСостояния ;
Иначе
Содержимое = Ответ . ПолучитьТЕлоКакСтроку ();
СтрОтвета = "Курс валюты" ;
Если КодВалюты = "840" Тогда
СтрОтвета = СтрОтвета + " доллара: " ;
ИначеЕсли КодВалюты = "978" Тогда
СтрОтвета = СтрОтвета + " евро: " ;
ИначеЕсли КодВалюты = "933" Тогда
СтрОтвета = СтрОтвета + " белорусского рубля: " ;
КонецЕсли;
МН = СтрРазделитель ( Содержимое , Символы . Таб );
КурсВалюты = Число ( МН [ 1 ]) / Число ( МН [ 0 ]);
СтрОтвета = СтрОтвета + КурсВалюты ;
НашОтвет . Текст = СтрОтвета ;
КонецЕсли;
Иначе
НашОтвет . Текст = "Не найдена валюта" ;
КонецЕсли;
Рассмотрим, как включить и настроить чат-бота Асю в «1С:Документооборот». Также нужно учитывать, что действия чат-бота не поддерживаются в веб-клиенте.
Если вас интересует разработка чат-бота для другой конфигурации 1С или под другие задачи, вам сюда.
Чат-бота включает Администратор - Настройки программы – Общие – Использовать чат-бот – Настройки. Настройки отображаются только если в программе включены Обсуждения.
Рисунок 1 - Включение чат-бота в настройках 1С:Документооборот
Для того чтобы настроить чат-бота так, чтобы он отвечал на вопрос и открывал файлы, необходимо перейти по ссылке Настроить - Состояния чат-бота и добавить новое состояние - сценарий работы чат-бота.
Рисунок 2 - Добавление сценариев работы в чат-бот
По умолчанию состояния не настроены. После обновления вам необходимо сделать это самостоятельно под ваши сценарии. Примеры настроек можно взять из демобазы и сделать по аналогии. Право на настройку чат-бота имеет Администратор и Пользователь, в полномочия которого вы включите роль Администратор чат-бота.
Рисунок 3 - Настройка сценария работы чат-бота в 1С:Документооборот
Чтобы настроить новый сценарий необходимо создать новое состояние чат-бот. Нажимаем кнопку Создать.
Карточку состояния заполнить очень просто:
- Добавить ключевые слова, по которым чат-бот будет искать это состояние.
- Добавить фразу, которой ответит чат-бот.
- Если нужно, добавить вложения – файлы или папки.
- Установить флажок Используется.
Рисунок 4 - Карточка состояния чат-бота
Флаг Доступно из любого состояния сделает состоянием доступным при поиске по ключевым словам из любых других состояний. Даже если вы вошли в какое-то состояние с подчиненными элементами.
Если вы хотите, чтобы чат-бот выполнил какое-то действие, например, создал письмо или отсутствие, открыл какой-то список с отборами, нажмите кнопку Расширенные настройки. Для настройки действия уже потребуются навыки программирования на языке 1С.
Здесь можно прописать любой код, доступный на клиенте.
Рисунок 5 - Карточка состояния чат-бота
Параметром этого действия может служить любая ссылка, дата, число, строка. Можно добавить Вычисляемые параметры, по сути это автоподстановки для чат-бота. С их помощью можно, например, вычислить Руководителя, Подразделение сотрудника и пр. Для проверки корректной работы скрипта есть контекстная команда Проверить.
Для начала зарегистрируем бота, получим его id - токен. В Telegram для этого создан специальный бот — @BotFather. Добавляем его в контакт. Получаем получаем список его команд, написав ему /start.
Этого, в принципе, достаточно.
2. Создание обработки в 1С
Создадим внешнюю обработку. Добавим реквизиты обработки строковый переменной длины «Бот», «Токен», «Сервер».
Т.к. обработку не будем привязывать к конкретной конфигурации, то список понимаемых команд будем хранить в табличной части обработки «ТаблицаПонимаемыхКоманд» (а так, в принципе, команды можно хранить в справочнике конфигурации).
Реквизиты ТЧ строковые: «Имя», «ВыполняемоеДействие», «Параметр», «Описание»
Команды пользователя (те, которые он буде писать боту) по той же причине будем хранить в табличной части «КомандыПользователей» (если не делать обработку универсальной, то, конечно, предпочтительно использовать регистр сведений – далее, в листингах кода укажем примеры и для регистра сведений тоже).
Реквизиты ТЧ: числовые «chat_id», «date», булево «Выполнено» и строковый «Команда»
Теперь создадим управляемую форму обработки, назначим ее основной и разместим реквизиты «Бот» и «Токен» (необязательно, но для наглядности):
Также создадим реквизит формы «Дерево» – тип «ДеревоЗначений». В нем будут отображаться чаты. Для наглядности выведем его на форму. Колонки дерева создадим программно (см.далее).
Для события формы ПриСозданииНаСервере добавим процедуру:
Если Вы используете версию 1С 8.3.6 и выше, то в процедура ПрочитатьДвоичныеДанныеОтвета() будем использовать новый объект ЧтениеJSON().
В процедуре ЗаполнитьРС() будем заполнять табличную часть «КомандыПользователей» (или же регистр сведений). (код процедуры далее).
Процедура ЗаполнитьСтруктуруИзОтветаJSON() заполняет дерево чатов:
Если Вы используете версию 1С ниже 8.3.6 то процедура ПрочитатьДвоичныеДанныеОтвета() будет такой:
Как уже было сказано, в процедуре ЗаполнитьРС() будем заполнять табличную часть «КомандыПользователей» (или же регистр сведений). (код процедуры далее).
Процедура ЗаполнитьСтруктуруИзОтветаJSON() – это парсер JSON и рекурсивное заполнение дерева для версии ниже 1С 8.3.6:
Теперь опишем процедуру, заполняющую табличную часть «КомандыПользователей» либо регистр сведений:
Если вы будете использовать регистр сведений (я назвал его «КомандыПользователей»), то закомментируйте/раскомментируйте соответствующие участки кода.
Обратите внимание, что если версия ниже 1С 8.3.6, то в коде переменную Параметр надо преобразовать из Юникода (этот участок обозначен в коде в комментарии):
Для этого используем две функции Юникод – парсер (он нужен только для версии 1С ниже 8.3.6):
В процедуре ЗаполнитьРС() вызывается функция ВыполнитьКомандуБота(ЗаписьРегистра, Параметр), где ЗаписьРегистра – это строка табличной части ТаблицаПонимаемыхКоманд. Параметр – параметр команды (то, что написал боту пользователь).
Вот и все – обработка прилагается.
Отдельное спасибо пользователю Инфостарт igo1 - перекодировка из Юникода (Unicode) в строку.
Основу для построения чата для версии 1С ниже 8.3.6 (парсер JSON) получил отсюда
UPD. В комментариях был задан вопрос " как отправлять файлы ".
Вот текст процедуры, которая выполняет отчет "Продажи" (на СКД), сохраняет результат в Excel и отправляет в Telegram:
? возникает ошибка типа Ошибка при вызове метода контекста (ОбъединитьФайлы)
ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки);
по причине:
Ошибка сборки файла
по причине:
Ошибка совместного доступа к файлу 'C:\Users\Гуру\AppData\Local\Temp\v8_7B5A_12.txt'
(163) А зачем посылать клавиатуру в тот момент когда отсылаем картинку? В момент отправки картинки на сервер Телеграм, он возвращает уникальный номер картинки, поэтому в дальнейшем достаточно покупателю отсылать этот номер, а сервер находит вашу картинку и посылает её. Порядок работы нужно изменить. Сначала отсылаем ВСЕ КАРТИНКИ и получаем их номера из Телеграм и записываем их у себя в базу. А теперь имея номер картинки посылаем file_id и подпись под картинкой и необходимую клавиатуру, то есть манипулируем уже не картинками, а номерами file_id. Об этом же все написано в документации Телеграм Bot API.
Ух, жесть какая-то :)
Все больше на ИС обработок скрещивания1С и прочего и прочего :)
Это замечательно, но напоминает анекдот о том, как британские ученые скрещивали слона и слона, не для пользы, а так просто, "позырить" :)
- я так частенько от наработок других программистов что-то интересное для себя нахожу, поэтому и сам готов поделиться.
Luchik , отличная статья, толково и не затянуто. Надо будет поэкспериментировать с Telegram, а то раньше все руки не доходили разобраться.
Спасибо, "плюс в репу".
(198) Кто за прогресс, за развитие науки и технологий, тот, кто и сам занимается этим развитием в 1С, не может быть резистом.
Телеграм это тема! Жаль что у меня сервер в закрытой сети, так бы тоже нашел применение. Автору респект за труды и статью.
Столкнулся вот с такой ошибкой:
: Ошибка при вызове метода контекста (ПрочитатьДвоичныеДанныеОтвета)
ПрочитатьДвоичныеДанныеОтвета(ДвоичныеДанныеОтвета);
по причине:
Переполнение стека встроенного языка на сервере
по причине:
Обработка.ТелеграммБот.Форма.Форма.Форма : 32 : СформироватьДерево(ДеревоЗн, ДеревоЗн, ЧтениеJSON);
Обработка.ТелеграммБот.Форма.Форма.Форма : 71 : СформироватьДерево(Дерево, НовСтр, ЧтениеJSON);
Обработка.ТелеграммБот.Форма.Форма.Форма : 75 : СформироватьДерево(Дерево, СтрДерево, ЧтениеJSON, ЧтениеJSON.ТекущееЗначение);
Обработка.ТелеграммБот.Форма.Форма.Форма : 83 : СформироватьДерево(Дерево, СтрДерево, ЧтениеJSON);
.
Обработка.ТелеграммБот.Форма.Форма.Форма : 75 : СформироватьДерево(Дерево, СтрДерево, ЧтениеJSON, ЧтениеJSON.ТекущееЗначение);
Обработка.ТелеграммБот.Форма.Форма.Форма : 83 : СформироватьДерево(Дерево, СтрДерево, ЧтениеJSON);
Обработка.ТелеграммБот.Форма.Форма.Форма : 75 : СформироватьДерево(Дерево, СтрДерево, ЧтениеJSON, ЧтениеJSON.ТекущееЗначение);
Обработка.ТелеграммБот.Форма.Форма.Форма : 0
по причине:
Переполнение стека встроенного языка на сервере
(97) Проблему решил следующим образом:
(100) Я давал выше вариант, при котором никаких проблем нет. Уже несколько ботов сделал и они прекрасно работают.
(104). не нашел ваш вариант решения ошибки "Переполнение стека встроенного языка на сервере ", который вы давали выше. Могли бы вы продублировать?
Вторая
Опрашиваем через GetUpdates - пишем в регистр ID, текст, ChatID и статус - отвечено или нет
ну а потом просто сравниваем то что пришло и отвечено - игнорим, то что пришло и не отвечено отвечаем и пишем статус.
(30) iolko, Да, я как раз выбрал первый способ!
Теперь я задумался над авторизацией пользователя, для открытия доступа к командам бота.
Никто не знает, как можно пограммно провести аудентификацию пользователя?
(31) TreeDogNight, Легко. если пользователь отправляет команду, допустим MyId - то отправляешь ему Его ID дальше ручками вносишь ее в спр пользователи.
а потом уже, чтобы отсеить ненужных проверяешь если ChatId есть в спр пользователей - велком , если нет ну не судьба тогда )))
Это первый вариант - при котором можно использовать первый вариант получения обновлений.
2 вариант - придумка для корпоративных систем (с которым нужно использовать второй вариант получения обновлений) - запрос на добавление, запоминаем ID и просим ввести адрес корпоративной почты, отправляем на этот адрес какой то сгенерированый ПИН, и ждем подтверждения.
(31) TreeDogNight, Ну и Вам адресую этот вопрос)
Есть ли варианты кроме перебора дерева с поиском значения message_id?
Теперь у меня встал новый вопрос. Как вывести клавиатуру?
Как я понял, мы должны передать в метод sendMessage сериализованную JSON-структуру, но к сожалению примеров этой структуры нигде не приводится.
Но к сожалению клавиатура не появилась. Либо текст JSON неправильно сформировали, либо его нужно сувать не в заголовки.
Всё, наконец разобрался с этой клавиатурой!
Оказывается текст с параметрами нужно было приклеить к строке с ресурсмом и установить как тело запроса!
Вот код:
Kireno; maksa2005; mevgenym; AlX0id; JohnyDeath; ui69; rayastar; Renegade; Anchoret; madonov; METAL; WanGoff; _also; Luchik; eskor; + 15 – Ответить
Подскажите как вывести фото с кнопками обратной связи?
Фото получается отослать, а вот вывести вместе с клавиатурой вообще никак.
Легко. если пользователь отправляет команду, допустим MyId - то отправляешь ему Его ID дальше ручками вносишь ее в спр пользователи.
а потом уже, чтобы отсеить ненужных проверяешь если ChatId есть в спр пользователей - велком , если нет ну не судьба тогда )))
также обернуть число chat_id в обертку
Теперь можно вызывать процедуру ПрочитатьДвоичныеДанныеОтвета, передавая ей текстовую строку. Зачем? Чтобы не записывать эти двоичные данные в файл и не читать из него назад:
Испытал удивление от потэгового анализа JSON. Есть функция ПрочитатьJSON(), которая в структурированном виде считывает весь пакет:
Читайте также: