Как настроить интеграцию 1С с WhatsApp для автоматической рассылки уведомлений?

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

В современной торговле оперативное информирование клиента о статусе его заказа — это стандарт качества. Часто компании сталкиваются с избыточными схемами интеграции, например, когда данные из 1С:Управление торговлей сначала попадают в Битрикс24, а уже оттуда — в WhatsApp. Рассмотрим, как упростить эту цепочку и настроить взаимодействие напрямую между 1С и мессенджером, используя наиболее надежные технические подходы.

Выбор стратегии: Официальный API или альтернативные сервисы

Прежде чем приступать к написанию кода, разберем два принципиально разных пути реализации задачи. Проанализируем ситуацию на рынке API-шлюзов:

  1. WhatsApp Business API (WABA): Это официальное решение от Meta. Оно требует верификации компании и использования утвержденных шаблонов сообщений (HSM). Плюс этого подхода — максимальная надежность и отсутствие риска блокировки номера за рассылки.
  2. Сервисы-агрегаторы (Wazzup, Green-API): Эти системы предоставляют удобный HTTP API. Некоторые из них работают через эмуляцию WhatsApp Web. Это проще в настройке, не требует сложной модерации шаблонов, но несет в себе риски «серой» интеграции (возможные баны при чрезмерной активности).

Для реализации задачи рассылки статусов заказов оптимальным будет использование надежного агрегатора с поддержкой HTTP-запросов.

Использование Системы взаимодействия 1С

Разберем встроенный инструмент платформы. Начиная с последних версий 1С (8.3.23+), СистемаВзаимодействия позволяет интегрироваться с внешними мессенджерами напрямую через панель администрирования. Это позволяет принимать сообщения от клиентов прямо в интерфейс программы и отвечать на них. Однако для массовых автоматических рассылок по событиям системы нам все равно потребуется работа с HTTPСоединение.

Техническая реализация: Отправка сообщения через HTTP API

Выясним причину, почему прямой запрос из 1С удобнее. Это позволяет контролировать каждый этап формирования сообщения и моментально реагировать на ошибки доставки. Рассмотрим пример кода для отправки уведомления клиенту через типичный API-шлюз. Нам понадобится объект HTTPСоединение и структура данных в формате JSON.

Проанализируем пример функции для отправки текста:


Функция ОтправитьУведомлениеВWhatsApp(НомерТелефона, ТекстСообщения) Экспорт
    
    Сервер = "api.provider.com"; // Адрес выбранного агрегатора
    Токен = "ВАШ_УНИКАЛЬНЫЙ_КЛЮЧ_API";
    
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-Type", "application/json");
    Заголовки.Вставить("Authorization", "Bearer " + Токен);
    
    ПараметрыСообщения = Новый Структура;
    ПараметрыСообщения.Вставить("chatId", НомерТелефона + "@c.us");
    ПараметрыСообщения.Вставить("message", ТекстСообщения);
    
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, ПараметрыСообщения);
    СтрокаJSON = ЗаписьJSON.Закрыть();
    
    HTTPСоединение = Новый HTTPСоединение(Сервер, 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
    HTTPЗапрос = Новый HTTPЗапрос("/waInstance/sendMessage", Заголовки);
    HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8);
    
    Попытка
        Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
        Если Ответ.КодСостояния = 200 Тогда
            Возврат Истина;
        Иначе
            ЗаписатьЛогОшибки(Ответ.ПолучитьТелоКакСтроку());
            Возврат Ложь;
        КонецЕсли;
    Исключение
        Возврат Ложь;
    КонецПопытки;
    
КонецФункции

Интеграция с бизнес-процессом заказа

Теперь разберем, как заставить систему автоматически вызывать эту функцию. В конфигурации Управление торговлей наиболее правильным местом будет использование ПодпискиНаСобытия. Создадим подписку на событие ПередЗаписью или ПриЗаписи для документа ЗаказКлиента.

Посмотрим на логику проверки изменения статуса:

  1. В процедуре обработки события проверяем, изменился ли реквизит Статус.
  2. Если статус изменился (например, на "Готов к отгрузке"), формируем текст сообщения по шаблону.
  3. Получаем номер телефона из контактной информации партнера.
  4. Вызываем нашу функцию отправки.

Важно помнить: чтобы не замедлять работу пользователя при проведении документа, отправку сообщений лучше выносить в ФоновыеЗадания. Это обеспечит бесперебойную работу интерфейса, даже если API мессенджера ответит с задержкой.

Обработка входящих сообщений (Webhooks)

Если ваша бизнес-модель предполагает, что клиент может ответить на сообщение, нам нужно развернуть HTTP-сервис внутри 1С. Рассмотрим этот процесс по шагам:

Шаг 1. Создаем в дереве конфигурации новый объект HTTP-сервис.

Шаг 2. Определяем шаблон URL (например, /webhook) и метод POST.

Шаг 3. В обработчике метода считываем входящий поток данных. Агрегатор будет присылать JSON с текстом ответа клиента и его номером.

Шаг 4. Используя МенеджерИсторииСообщений или просто создавая задачу/событие в 1С, уведомляем ответственного менеджера о входящем сообщении.

Особенности работы с шаблонами (HSM)

Если вы выбрали официальный путь через WABA, помните о правилах Meta. Вы не можете отправить произвольный текст первым. Сообщение должно соответствовать заранее одобренному шаблону. Например:

"Здравствуйте, {{1}}! Ваш заказ №{{2}} сменил статус на {{3}}."

В коде 1С при формировании JSON вместо текста сообщения вы будете передавать идентификатор шаблона и массив параметров {{1}}, {{2}}, {{3}}. Это гарантирует доставку и минимизирует риски пометки вашего номера как спам.

Резюме и рекомендации

Подведем итог нашему анализу. Прямая интеграция 1С и WhatsApp без лишних «прокладок» — это надежное и масштабируемое решение. Для быстрой реализации лучше использовать готовые модули-расширения от крупных агрегаторов (таких как Wazzup), которые встраиваются в УТ без изменения типовой конфигурации. Для кастомных задач используйте HTTPСоединение и выносите отправку в фоновые процессы, чтобы сохранить высокую производительность системы.

← На главную