Как интегрировать чат Jivosite с 1С:Управление торговлей напрямую, без 1С:CRM?

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

Возникает задача получить данные из популярного онлайн-чата Jivosite напрямую в конфигурацию 1С, например, в "Управление торговлей". Основное желание — избежать установки промежуточных систем вроде 1С:CRM и настроить прямую связку, чтобы фиксировать обращения клиентов, создавать лиды или события. Разберем, как это можно реализовать, основываясь на опыте пользователей и технических возможностях платформы 1С.

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

Решение 1: Простой способ через чтение электронной почты

Этот вариант подходит, если ваша основная цель — получать содержание переписки уже после ее завершения, чтобы, например, создать документ "Событие" в 1С и зафиксировать факт обращения. Этот метод не требует публикации базы 1С на веб-сервере и сложных настроек.

Суть метода: Jivosite умеет отправлять транскрипты (полную историю) завершенных диалогов на указанный адрес электронной почты. Мы можем настроить 1С так, чтобы она подключалась к этому почтовому ящику, читала письма и на их основе создавала нужные объекты в базе.

Разберем по шагам, как это организовать:

  1. Настройка в Jivosite. В личном кабинете Jivosite найдите настройки уведомлений и укажите специальный E-mail адрес, на который будут приходить письма с завершенными диалогами. Рекомендуется завести для этого отдельный ящик.
  2. Настройка в 1С. В 1С необходимо настроить подключение к этому почтовому ящику. Это делается стандартными средствами платформы через объект ИнтернетПочта. Потребуются данные для подключения: адрес POP3/IMAP сервера, порт, логин и пароль.
  3. Создание регламентного задания. Чтобы 1С проверяла почту автоматически, создайте регламентное задание, которое будет запускаться с определенной периодичностью (например, каждые 10-15 минут).
  4. Написание кода для обработки писем. В процедуре, вызываемой регламентным заданием, нужно написать алгоритм, который будет:
    • Подключаться к почтовому ящику.
    • Получать список новых писем.
    • Для каждого письма — извлекать его содержимое (тело письма).
    • Разбирать (парсить) текст письма, чтобы выделить из него ключевую информацию: данные клиента (имя, email, телефон, если есть), текст переписки, имя оператора.
    • На основе полученных данных создавать в 1С нужные объекты. Например, найти контрагента по email или телефону, и если он найден, создать для него документ Событие с темой "Обращение из чата" и текстом переписки. Если контрагент не найден, можно создать нового с пометкой "Лид".

Преимущества: Простота реализации, не нужен веб-сервер и публикация базы.

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

Решение 2: Полноценная интеграция через HTTP-сервисы и Webhooks

Это более профессиональный и гибкий способ, который позволяет получать данные от Jivosite в реальном времени при наступлении различных событий. Он идеально подходит для автоматизации создания лидов, задач и глубокой интеграции с бизнес-процессами компании.

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

Рассмотрим процесс настройки по шагам.

Шаг 1. Создание HTTP-сервиса в 1С

В конфигураторе 1С необходимо создать новый объект метаданных — HTTP-сервис. Назовем его, например, JivoIntegration.

  1. Внутри сервиса создайте шаблон URL, по которому 1С будет "слушать" запросы. Например, /jivohook/*.
  2. Для этого шаблона добавьте метод, который будет обрабатывать входящие запросы. Jivosite отправляет данные методом POST, поэтому создадим метод с именем, например, HandleWebhook и типом POST.
  3. В модуле HTTP-сервиса, в процедуре созданного метода, мы и будем писать основной код обработки.

Шаг 2. Публикация HTTP-сервиса на веб-сервере

Чтобы Jivosite мог отправить запрос в вашу 1С, база должна быть опубликована на веб-сервере (Apache или IIS), и ее адрес должен быть доступен из интернета. При публикации не забудьте поставить флажок "Публиковать HTTP-сервисы по умолчанию" или опубликовать созданный сервис явно.

В результате вы получите публичный URL, например: https://your-domain.ru/base_name/hs/JivoIntegration/jivohook. Именно этот адрес нужно будет указать в настройках Jivosite.

Шаг 3. Настройка Webhooks в Jivosite

В личном кабинете Jivosite перейдите в раздел настроек для разработчиков (API/Webhooks) и вставьте полученный на предыдущем шаге URL. Теперь Jivosite будет отправлять на него POST-запросы в формате JSON при наступлении событий.

Основные события, которые можно отслеживать:

Шаг 4. Написание кода обработчика в 1С

Теперь самое главное — написать код в модуле нашего HTTP-сервиса, который будет принимать и обрабатывать данные.

Входящие данные приходят в теле POST-запроса в виде JSON-строки. Наша задача — получить эту строку, преобразовать ее в объекты 1С и выполнить нужные действия.

Посмотрим на примерный код обработчика:


// Процедура-обработчик POST-запроса в модуле HTTP-сервиса
&НаСервере
Процедура HandleWebhook(Запрос)
    
    // Получаем тело запроса, которое содержит JSON от Jivosite
    ТелоЗапросаJSON = Запрос.ПолучитьТелоКакСтроку("UTF-8");
    
    // Если тело пустое, выходим
    Если СтрДлина(ТелоЗапросаJSON) = 0 Тогда
        // Возвращаем ответ, что запрос некорректен
        Ответ = Новый HTTPСервисОтвет(400); 
        Возврат Ответ;
    КонецЕсли;
    
    // Преобразуем JSON в структуру или соответствие 1С
    ПараметрыЧтенияJSON = Новый ПараметрыЧтенияJSON(ПереносСтрокJSON.Разрешить);
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(ТелоЗапросаJSON);
    
    ДанныеВебхука = ПрочитатьJSON(ЧтениеJSON, Ложь);
    ЧтениеJSON.Закрыть();
    
    // Далее анализируем полученные данные.
    // Поле с именем события в Jivosite называется event_name
    ТипСобытия = ДанныеВебхука.event_name;
    
    // В зависимости от типа события выполняем разные действия
    Если ТипСобытия = "chat_finished" Тогда
        
        // Обрабатываем завершенный чат
        ОбработатьЗавершенныйЧат(ДанныеВебхука);
        
    ИначеЕсли ТипСобытия = "offline_message" Тогда
        
        // Обрабатываем офлайн-сообщение
        ОбработатьОфлайнСообщение(ДанныеВебхука);
        
    КонецЕсли;
    
    // Формируем успешный ответ для Jivosite. 
    // Код 200 OK означает, что мы успешно приняли и обработали вебхук.
    Ответ = Новый HTTPСервисОтвет(200);
    Возврат Ответ;
    
КонецПроцедуры

Вспомогательные процедуры ОбработатьЗавершенныйЧат и ОбработатьОфлайнСообщение уже будут содержать конкретную бизнес-логику: поиск или создание контрагента, создание документа Событие, постановку задачи ответственному менеджеру и т.д.

Практические сценарии: что делать с полученными данными?

Часто возникает вопрос: "А зачем вообще эти данные в 1С, если вся история и так хранится в Jivosite?". Ответ кроется в создании единого информационного пространства и автоматизации. Вот несколько полезных сценариев:

В итоге, хотя в типовых конфигурациях "Управления торговлей" нет готового функционала для работы с чатами, платформа 1С предоставляет все необходимые инструменты (HTTP-сервисы, работа с JSON) для создания такой интеграции. Это позволяет превратить 1С из учетной системы в полноценный инструмент для управления взаимоотношениями с клиентами.

← На главную