Как настроить работу ботов системы взаимодействия в серверной версии 1С 8.3.23 и запустить сервер взаимодействия 23.0

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

С выходом платформы 1С:Предприятие 8.3.23 и обновлением Сервера взаимодействия (СВ) до версии 23.0 многие разработчики столкнулись с рядом технических сложностей. Основные проблемы касаются невозможности запуска службы 1ce-cs и специфики работы ботов в серверном режиме работы базы данных. В этой статье мы подробно разберем, как преодолеть эти препятствия, правильно настроить окружение и заставить ботов реагировать на сообщения в клиент-серверной архитектуре.

Причины остановки службы 1ce-cs на Сервере взаимодействия 23.0

Если после обновления или первичной установки сервера взаимодействия версии 23.0 служба 1ce-cs (Collaboration System) постоянно останавливается, проанализируем системные требования и конфигурацию. В версии 23.0 произошли существенные изменения в архитектуре взаимодействия с компонентами окружения:

  1. Обновление версии Java: Для стабильной работы СВ 23 крайне рекомендуется использовать Java 17 (OpenJDK или Oracle). Использование устаревших версий (Java 8 или 11) часто приводит к немедленному завершению процесса без явных ошибок в журнале событий, так как новые параметры сборщика мусора (G1GC) не поддерживаются старыми JVM.
  2. Требования к Elasticsearch: Сервер взаимодействия версии 23 требует Elasticsearch версии не ниже 7.17.x или 8.x. Если ваша текущая база данных поиска осталась на версии 6.x, служба не сможет выполнить индексацию и корректно инициализироваться.
  3. Настройка лимитов памяти: В новых версиях изменены стандартные лимиты оперативной памяти. Убедитесь, что в конфигурационных файлах сервера выделено достаточно ресурсов для запуска JVM с учетом возросших аппетитов системы.

Рассмотрим ситуацию, когда установка производится "чисто". Важно использовать дистрибутивы строго из официальных источников 1С и следовать инструкции по порядку развертывания компонентов: PostgreSQL/Microsoft SQL Server -> Hazelcast/Redis -> Elasticsearch -> Сервер взаимодействия.

Особенности работы ботов в серверной версии 1С

Распространенная проблема: бот идеально работает в файловой базе, но полностью игнорирует сообщения в серверной. Это происходит потому, что в файловом варианте обработка сообщений может инициироваться интерактивным сеансом, а в серверном — механизмы доставки сообщений ботам требуют явного запуска процесса прослушивания очереди.

Выясним причину: событие ОбработкаСообщенияСистемыВзаимодействия в модуле бота не срабатывает само по себе на сервере, так как там нет постоянно активного "слушателя", аналогичного клиентскому приложению. Для решения этой задачи необходимо использовать регламентное задание.

Настройка регламентного задания для обработки ботов

Чтобы бот "ожил" в серверной базе, мы должны создать специальное регламентное задание, которое будет регулярно вызывать метод прослушивания очереди сообщений. Разберем по шагам, как это реализовать.

Шаг 1. Создание серверного метода:

В общем модуле (например, РаботаССистемойВзаимодействияСервер) создадим процедуру, которая будет вызываться регламентным заданием. Важно понимать, что метод СистемаВзаимодействия.ВыполнитьОбработкуБотов() блокирует поток выполнения (по умолчанию на 120 секунд), ожидая поступления новых сообщений.


Процедура ВыполнитьОбработкуБотовСитемыВзаимодействия() Экспорт
    
    // Если используется БСП, можно добавить стандартную инициализацию задания
    // ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ОбработкаБотов);
    
    // Основной метод, который заставляет сервер "слушать" сообщения для ботов
    СистемаВзаимодействия.ВыполнитьОбработкуБотов();
    
КонецПроцедуры

Шаг 2. Настройка расписания:

Поскольку метод ожидает сообщения в течение некоторого времени (обычно около 2 минут), регламентное задание следует настроить на запуск каждую минуту или раз в две минуты. Это обеспечит непрерывное "дежурство" хотя бы одного рабочего процесса на прослушивании очереди.

Важный нюанс: Регламентное задание должно выполняться от имени пользователя, у которого есть права на работу с системой взаимодействия и который сопоставлен с областью данных, где зарегистрирован бот.

Программное открытие окна чата (виджета) на сайте

Если вы интегрируете систему взаимодействия со сторонним сайтом через виджет, может возникнуть задача автоматического развертывания окна чата при загрузке страницы. Проанализируем возможности JavaScript API системы взаимодействия.

Простого вызова метода open() в произвольном месте кода может быть недостаточно, так как виджет должен успеть инициализироваться. Правильный подход заключается в использовании обратных вызовов (callbacks):

  1. Используйте событие onInit в параметрах инициализации виджета.
  2. Внутри функции обратного вызова вызывайте метод развертывания окна.

Также в последних версиях платформы (начиная с 8.3.23) в настройках интеграции можно управлять параметром startCollapsed. Если установить его в значение false, чат будет открыт по умолчанию при загрузке скрипта на странице.

Диагностика и логирование

Если после настройки регламентного задания бот все равно не отвечает, проанализируем файл application.log в папке установки сервера взаимодействия. Версия 23 предоставляет более детальную информацию об ошибках доставки. Ищите записи, связанные с routing или delivery failure. Часто проблема кроется в том, что идентификатор бота в базе 1С не совпадает с идентификатором, зарегистрированным на сервере взаимодействия (например, после восстановления базы из копии без перерегистрации бота).

Таким образом, для успешной работы ботов в современных версиях 1С нам требуется связка из актуального системного окружения (Java 17, Elasticsearch 7.17+) и корректно настроенного фонового процесса обработки сообщений на стороне сервера 1С.

← На главную