Как настроить интеграцию 1С:Системы взаимодействия с Telegram и решить проблемы с подключением

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

Начиная с версии платформы 1С:Предприятие 8.3.17, разработчикам стал доступен штатный механизм интеграции 1С:Системы взаимодействия (Collaboration System) с популярными мессенджерами, такими как Telegram. Однако на практике системные администраторы и программисты часто сталкиваются с ситуацией, когда после создания бота и настройки интеграции сообщения не приходят, а внешние пользователи не создаются. Рассмотрим подробно, как правильно настроить серверную часть, чтобы обеспечить стабильную работу обмена сообщениями.

Принцип работы штатной интеграции

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

  1. Пользователь мессенджера пишет сообщение вашему боту.
  2. Сервер Telegram отправляет webhook (HTTP-запрос) на указанный вами внешний адрес сервера СВ.
  3. Сервер СВ принимает сообщение, автоматически создает в базе 1С «внешнего пользователя», для которого может быть настроен автоответчик, и инициирует новое обсуждение (если оно не было создано ранее).
  4. Ответные сообщения из 1С уходят от имени бота в Telegram.

Важный момент: для работы этой схемы сервер СВ должен быть доступен из интернета по защищенному протоколу HTTPS, так как Telegram не работает с незащищенными соединениями.

Настройка конфигурационных файлов сервера взаимодействия

Одной из главных причин, по которой интеграция «не взлетает», является отсутствие или неправильная настройка порта интеграции на стороне сервера СВ. В отличие от основного порта WebSockets (обычно 9094), порт интеграции отвечает за прием входящих HTTP-запросов от мессенджеров.

Проверим наличие и содержимое файла конфигурации com._1c.ecs.integration.endpoint.yml. Если этого файла нет в папке config вашего сервера взаимодействия, его необходимо создать вручную. Разберем структуру этого файла на примере рабочего решения:


integration:
  external-url: https://ваш-домен.ru:8443
  network-interfaces:
    public:
  threads:
    acceptor-thread-count: 1
    selector-thread-count: 4
    worker-thread-count: 4
  endpoints:
    - 192.168.0.8:8087

Проанализируем ключевые параметры этого конфига:

Решение проблем с SSL-сертификатами и портами

Многие пользователи сталкиваются с ошибкой NoClassDefFoundError при попытке включить use-ssl: true непосредственно в настройках сервера СВ. Это связано с тем, что Java-окружение сервера требует сложной настройки хранилища сертификатов (keystore). Чтобы избежать этих сложностей, проанализируем более стабильный вариант — использование Reverse Proxy (например, Nginx или Apache).

Рассмотрим схему, при которой SSL-сертификат терминируется на шлюзе или веб-сервере (Nginx/Apache), а внутрь на сервер СВ запрос пробрасывается по обычному HTTP. В этом случае в файле integration.yml мы оставляем use-ssl: false (или просто не указываем его), а внешнюю защиту обеспечиваем средствами прокси-сервера.

Настроим проброс трафика на примере Apache. В конфигурационном файле виртуального хоста необходимо прописать проксирование:


SSLProxyEngine On
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://192.168.1.145:8087/
ProxyPassReverse / http://192.168.1.145:8087/

Где 192.168.1.145:8087 — это внутренний адрес вашего сервера взаимодействия, настроенный в секции endpoints. При такой схеме Telegram отправляет данные на https://ваш-домен.ru, Apache расшифровывает трафик и передает его серверу СВ.

Настройка интеграции в интерфейсе 1С

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

  1. Откроем «Функции для технического специалиста» (или «Все функции»).
  2. Найдем стандартную обработку «Управление системой взаимодействия».
  3. Перейдем на закладку «Интеграции» и нажмем «Создать».
  4. Выберем тип интеграции — Telegram.
  5. В поле «Токен» вставим API-ключ, полученный от @BotFather в Telegram.
  6. Укажем участников обсуждения. Это пользователи 1С, которым будут приходить уведомления о новых сообщениях от внешних клиентов.
  7. Нажмем «ОК» или «Записать».

Если при записи возникает ошибка контекста, убедитесь, что информационная база успешно зарегистрирована в системе взаимодействия и у пользователя достаточно прав. Также выясним причину возможного отказа через диагностику: попробуйте открыть в браузере ваш external-url. Если вы видите ошибку от Java-сервера (например, 404 или сообщение о пустом ресурсе), значит, порт интеграции доступен. Если же страница не открывается вовсе — проблема в сетевых настройках или брандмауэре.

Важные нюансы и диагностика

Проанализируем дополнительные моменты, которые могут влиять на результат:

Рассмотренный метод настройки через Reverse Proxy и ручное создание файла integration.endpoint.yml является наиболее надежным способом «подружить» 1С с внешним миром без необходимости глубокого погружения в администрирование Java-сертификатов. Если требуется организовать обмен сообщениями без развертывания сервера взаимодействия, можно использовать готовую обработку для работы с Telegram-ботом напрямую из 1С.

← На главную