1С 8.3 Боты системы взаимодействия - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Боты системы взаимодействия

Данные > Примеры кода 1С > 1С 8.3 Боты системы взаимодействия
Бот системы взаимодействия в 1С 8.3 - это объект конфигурации, который используется для реакции на сообщения в режиме реального времени. Обычно используются для реализации различных сценариев при интеграции с мессенджерами (Telegram), социальными сетями (ВКонтакте), интернет-телефонией. Например: ответы на входящие сообщения во время отсутствия сотрудника на рабочем месте (чат-боты) или различные оповещения: о поступление заказа, о новом этапе бизнес процесса в 1С, при проходе сотрудника через турникет предприятия на проходной, о входящем звонке и т.п..

У бота системы взаимодействия есть серверный модуль с обработчиком события получения сообщения. Функциональность доступна с версии 8.3.18. Для внедрения необходим сервер (клиент-серверный вариант) или компьютер с запущенным сеансом (файловый вариант). Реализация возможна также и на разных конфигурациях (например, если в организации используют несколько конфигураций: ERP, БП, Документооборот, ЗУП и т.д.) для этого необходим общий локальный сервер системы взаимодействия или облачный ресурс WSS.

Код для Бота пишется в обработчике ОбработкаСообщенияСистемыВзаимодействия() модуля объекта бота.

Параметры объекта конфигурации бота:
  • Предопределенный ‑ указывает, что бот предопределенный. Отличается от обычного бота, только тем, что его нельзя явно создать или удалить. Если бот предопределенный, то при обновлении конфигурации в базе автоматически будет создано бот и пользователь системы взаимодействия. Иначе если бот обычный, то информация о нём удаляется и пользователь системы взаимодействия перестает быть ботом. Далее работа с ботом осуществляется через объект БотСистемыВзаимодействия. Изменение свойств метаданных (Имя, Синоним и Картинка) применяются при вызове метода  менеджера системы взаимодействия: СистемаВзаимодействия.ВыполнитьОбработкуБотов().
  • Картинка ‑ устанавливается пользователю системы взаимодействия, ассоциированному с данным ботом.

Свойства объекта встроенного языка бота:
  • Предопределенный ‑ свойство является отражением свойства объекта конфигурации в объектную модель.
  • Пользователь ‑ содержит ссылку на пользователя системы взаимодействия, который олицетворяет данного бота. Пользователя можно менять во время работы системы, изменение допустимо как из встроенного языка, так и с помощью соответствующей стандартной функции.
  • ИмяПользователяИнформационнойБазыВыполненияОбработки ‑ данное свойство содержит ссылку на пользователя информационной базы. Указанный в данном свойстве пользователь определяет, какие права доступа к объектам базы данных будут предоставлены боту.
  • Метаданные ‑ ссылается на объект конфигурации, описывающий бота. Изменение данного свойства приводит к изменению логики работы существующего бота. Не поддерживается изменение данного свойства для предопределенных ботов.
  • ДополнительныеПараметры ‑ через это свойство можно передавать боту какие-то дополнительные данные, которые не могут быть переданы через информационную базу. Эти параметры можно применять тогда, когда один объект БотСистемыВзаимодействия используется для разных ботов.

Методы создания бота:
  • Вызов метода ВыполнитьОбработкуБотов() менеджера системы взаимодействия (для предопределенных ботов).
  • Методом БотСистемыВзаимодействия.Записать(). Объект БотСистемыВзаимодействия можно получить с помощью методов менеджера системы взаимодействия: СоздатьБота(), ПолучитьБота() или ПолучитьБотов().
Обработчик события получения сообщения через Систему взаимодействия в 1С 8.3:
&НаСервере
Процедура ОбработкаСообщенияСистемыВзаимодействия(Сообщение, ДополнительныеПараметры)

   
ТелоВалюты = Нрег(Сообщение.Текст);// Получаем весь текст сообщения
   
Если СтрНайти(ТелоВалюты, "USD") <> 0 ИЛИ СтрНайти(ТелоВалюты, "Доллар") <> 0 Тогда
       
КодВалюты = "840";
    ИначеЕсли
СтрНайти(ТелоВалюты, "EUR") <> 0 ИЛИ СтрНайти(ТелоВалюты, "Евро") <> 0 Тогда
       
КодВалюты = "978";
    ИначеЕсли
СтрНайти(ТелоВалюты, "BYN") <> 0 ИЛИ СтрНайти(ТелоВалюты, "Белорусский рубль") <> 0 Тогда
       
КодВалюты = "933";
    Иначе
       
КодВалюты = "0";
    КонецЕсли;

   
// Выводим наш ответ на экран пользователю (в зависимости от кода валюты - покажем её курс)
   
НашОтвет = СистемаВзаимодействия.СоздатьСообщение(Сообщение.Обсуждение);
    Если
КодВалюты <> "0" Тогда
       
// Параметры: адрес, порт (http:80, https:443), пользователь, пароль, прокси, таймаут в секундах, защищ.соединение (для https)
       
Соединение = Новый HTTPСоединение("cbrates.rbc.ru");
       
// Получение текста страницы через запрос.
       
HTTPЗапрос = Новый HTTPЗапрос("tsv/" + КодВалюты + Формат(ТекущаяДата(), "ДФ=/YYYY/MM/DD") + ".tsv");
       
Ответ = Соединение.Получить(HTTPЗапрос);// Get запрос

       
Если Ответ.КодСостояния <> 200 Тогда
           
НашОтвет.Текст = "Код ошибки №" + Ответ.КодСостояния;
        Иначе
           
Содержимое = Ответ.ПолучитьТЕлоКакСтроку();

           
СтрОтвета = "Курс валюты";
            Если
КодВалюты = "840" Тогда
               
СтрОтвета = СтрОтвета + " доллара: ";
            ИначеЕсли
КодВалюты = "978" Тогда
               
СтрОтвета = СтрОтвета + " евро: ";
            ИначеЕсли
КодВалюты = "933" Тогда
               
СтрОтвета = СтрОтвета + " белорусского рубля: ";
            КонецЕсли;

           
МН = СтрРазделитель(Содержимое, Символы.Таб);
           
КурсВалюты = Число(МН[1]) / Число(МН[0]);
           
СтрОтвета = СтрОтвета + КурсВалюты;
           
НашОтвет.Текст = СтрОтвета;
        КонецЕсли;
    Иначе
       
НашОтвет.Текст = "Не найдена валюта";
    КонецЕсли;

   
НашОтвет.Записать();// Сохранение в системе взаимодействия

КонецПроцедуры
Пример предопределенного бота (эхо бот) в 1С 8.3:
Процедура ОбработкаСообщенияСистемыВзаимодействия(Сообщение, ДополнительныеПараметры) // В модуль объекта для созданного бота
  
  // проверен на клиент-серверном варианте работы 1С 8.3
   ОтветСообщения = СистемаВзаимодействия.СоздатьСообщение(Сообщение.Обсуждение);
   ОтветСообщения.Текст = "echo" + Символы.ПС + ">"+ СтрСоединить(СтрРазделить(Сообщение.Текст, Символы.ПС), Символы.ПС + ">";
   ОтветСообщения.Записать();
   //...эхо-бот...

КонецПроцедуры
Программное формирование обсуждения через систему взаимодействия в 1С 8.3:
Процедура ОбсуждениеВСистемеВзаимодействия(СсылкаНаДокументОбсуждения)

    Ссылка   = ПолучитьНавигационнуюСсылку(СсылкаНаДокументОбсуждения);
    КонтекстОбсуждения     = Новый КонтекстОбсужденияСистемыВзаимодействия(Ссылка);
    МенеджерВзаимодействия = Новый МенеджерСистемыВзаимодействия;

    Отбор = Новый ОтборОбсужденийСистемыВзаимодействия;
    Отбор.КонтекстноеОбсуждение = Истина;
    Отбор.ТекущийПользовательЯвляетсяУчастником = Ложь;
    Отбор.КонтекстОбсуждения = КонтекстОбсуждения;
    ОбсуждениеСВ = МенеджерВзаимодействия.ПолучитьОбсуждения(Отбор);

    Если ОбсуждениеСВ.Количество() = 0 Тогда
        ОбсуждениеСВ = МенеджерВзаимодействия.СоздатьОбсуждение();
        ОбсуждениеСВ.КонтекстОбсуждения = КонтекстОбсуждения;
        ОбсуждениеСВ.Ключ = Строка(СсылкаНаДокументОбсуждения.УникальныйИдентификатор());
        ОбсуждениеСВ.Записать();
    Иначе
        ОбсуждениеСВ = ОбсуждениеСВ[0];
    КонецЕсли;

    АвторСообщения = ПараметрыСеанса.ТекущийПользователь;

    Сообщение = МенеджерВзаимодействия.СоздатьСообщение(ОбсуждениеСВ.Идентификатор);
    Сообщение.Дата  = ТекущаяДата();
    Сообщение.Автор = ПолучитьГУИД(АвторСообщения);
    Сообщение.Получатели.Добавить(ПолучитьГУИД(ПолучательОповещенияВСистемеВзаимодействия));
    Сообщение.Текст = Новый ФорматированнаяСтрока("текст обсуждения");
    Сообщение.Записать();

КонецПроцедуры
📰 Актуальные новости с тегом #БотыСистемыВзаимодействия:
  • В версии 8.3.27 в системе взаимодействия появилась поддержка видеозвонков в тонком клиенте в Linux
  • Во встроенном языке в версии 8.3.26 в объект СообщениеСистемыВзаимодействия добавлено новое свойство ФорматДанныхСтроки (тип: Строка, Неопределено). Если свойство Данные полученного от внешней системы сообщения содержит данные типа Строка, то содержит mime-type данных, иначе – Неопределено.
  • В версии 8.3.26 появилась возможность отправки уведомлений клиентам со стороны сервера без использования Системы взаимодействия. Объект МенеджерУведомленийКлиента, который предоставляет возможность отправки уведомлений с сервера в клиентские сеансы. Его методы: ПодключитьОбработчик(Ключ, Обработчик), ОтключитьОбработчик(Ключ), ОтправитьУведомление(Ключ, Данные, Адресаты).  В глобальный контекст добавлено свойство УведомленияКлиента типа МенеджерУведомленийКлиента. У объекта ФоновоеЗадание добавлено свойство НомерРодительскогоСеанса.
  • В версии 8.3.23 реализована поддержка работы с файлами в интеграциях системы взаимодействия
  • В версии 8.3.22 улучшено юзабилити видеозвонков в системе взаимодействия
5
комментарии
Май юзернэйм
22 сен 2021
На клиенте почему то не срабатывает без ПодключитьОбработчикНовыхСообщенийАсинх
Илья Артемов
22 май 2020
А мне нравиться, что теперь можно ботов писать без костылей. Спасибо 1С!
Александр
22 май 2020
Скорее начало 22
Гарри
20 май 2020
Погодьте, это 18-ый релиз. Когда массово начнем на нем писать, будет конец 21-ого? :)
Евгений
19 май 2020
Опять что то сделали для разработчиков, а нет нам предлагают программировать ботов с помощью СтрНайти
____________________
Copyright©, «Программист 1С в г.Минске», 19.05.2020
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому