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]);
СтрОтвета = СтрОтвета + КурсВалюты;
НашОтвет.Текст = СтрОтвета;
КонецЕсли;
Иначе
НашОтвет.Текст = "Не найдена валюта";
КонецЕсли;
НашОтвет.Записать();// Сохранение в системе взаимодействия
КонецПроцедуры
Процедура ОбработкаСообщенияСистемыВзаимодействия(Сообщение, ДополнительныеПараметры)
ТелоВалюты = Нрег(Сообщение.Текст);// Получаем весь текст сообщения
Если СтрНайти(ТелоВалюты, "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]);
СтрОтвета = СтрОтвета + КурсВалюты;
НашОтвет.Текст = СтрОтвета;
КонецЕсли;
Иначе
НашОтвет.Текст = "Не найдена валюта";
КонецЕсли;
НашОтвет.Записать();// Сохранение в системе взаимодействия
КонецПроцедуры
Поиск кода
4
комментарии
Илья Артемов
22 май 2020
А мне нравиться, что теперь можно ботов писать без костылей. Спасибо 1С!
Александр
22 май 2020
Скорее начало 22
Гарри
20 май 2020
Погодьте, это 18-ый релиз. Когда массово начнем на нем писать, будет конец 21-ого? :)
Евгений
19 май 2020
Опять что то сделали для разработчиков, а нет нам предлагают программировать ботов с помощью СтрНайти
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник