Как настроить интеграцию 1С с WhatsApp для автоматической отправки сообщений без постоянно включенного телефона?

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

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

В этой статье мы подробно разберем, как реализовать стабильную отправку сообщений из 1С в WhatsApp, исключив необходимость постоянной работы мобильного телефона, какие технологии актуальны сегодня и как написать отказоустойчивый код для работы с API.

Официальный и «серый» подходы к интеграции

Перед тем как перейти к программной реализации, проанализируем два принципиально разных подхода к интеграции 1С и WhatsApp. Выбор технологии напрямую влияет на стабильность работы, бюджет и риски блокировки вашего бизнес-аккаунта.

1. Официальный метод: WhatsApp Business API (WABA)

Это легальный и самый надежный способ интеграции, предоставляемый самой платформой Meta. При использовании WABA ваш номер регистрируется как официальный бизнес-аккаунт.

Преимущества WABA:

  1. Нулевой риск блокировки номера при соблюдении правил рассылки.
  2. Возможность получения зеленой галочки (верифицированного аккаунта) рядом с именем компании.
  3. Прямая интеграция с современной платформой 1С:Предприятие (начиная с версии 8.3.23 встроенная поддержка WABA реализована в «Системе взаимодействия»).

Основной недостаток — необходимость предварительного согласования шаблонов сообщений с Meta и тарификация за 24-часовые сессии диалогов, что может быть невыгодно для микробизнеса с небольшим объемом транзакционных уведомлений.

2. Альтернативный метод: Использование шлюзов-посредников (серый API)

Этот метод основан на эмуляции работы веб-версии WhatsApp (WhatsApp Web). Специализированные сервисы (такие как Green API, Wazzup, ChatApp) берут на себя всю техническую часть. Они подключаются к вашему обычному или бизнес-номеру через QR-код, имитируя работу веб-браузера.

Главным технологическим прорывом последних лет стало внедрение WhatsApp многоустройственного режима (Multi-Device). Ранее для работы веб-эмуляции требовалось, чтобы телефон-источник был постоянно включен и соединен с интернетом. Теперь это требование полностью снято. Вы можете один раз привязать устройство через QR-код, после чего выключить мобильный телефон или извлечь из него SIM-карту — отправка сообщений через API-шлюз продолжит работать в режиме 24/7.

Реализация отправки сообщений из 1С через HTTP API шлюза

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

Для интеграции нам понадобятся параметры, которые предоставляет личный кабинет выбранного сервиса-посредника (в нашем примере мы используем абстрактные параметры подключения к стабильному API-шлюзу):

  1. Хост (адрес сервера API).
  2. Идентификатор инстанса (уникальный номер вашего подключенного аккаунта).
  3. Токен доступа (ключ безопасности для авторизации запросов).

Разберем по шагам создание процедуры отправки текстового сообщения на указанный номер телефона.

Напишем процедуру, которая будет формировать JSON-структуру с параметрами сообщения и отправлять ее на сервер-посредник методом POST:


&НаСервере
Процедура ОтправитьСообщениеВWhatsApp(Знач НомерТелефона, Знач ТекстСообщения) Экспорт

    // Шаг 1. Подготовка и нормализация номера телефона.
    // Номер должен содержать только цифры и начинаться с кода страны (например, 7 для РФ).
    НомерТелефона = ОчиститьНомерТелефона(НомерТелефона);
    
    Если ПустаяСтрока(НомерТелефона) Тогда
        ВызватьИсключение "Некорректный номер телефона для отправки сообщения WhatsApp.";
    КонецЕсли;

    // Шаг 2. Задание параметров подключения к API-сервису
    АдресПодключения = "api.green-api.com"; // Хост провайдера
    IDИнстанса       = "1101850001";        // Индивидуальный ID вашего инстанса
    ТокенДоступа     = "d787f87f87f87f87";  // Ваш API Token
    
    // Формируем путь к методу sendMessage в соответствии с документацией API
    ПутьКМетоду = "/waInstance" + IDИнстанса + "/sendMessage/" + ТокенДоступа;
    
    // Шаг 3. Формирование тела запроса в формате JSON
    // Большинство шлюзов требуют отправки chatId (номер телефона с суффиксом @c.us) и текста сообщения.
    ДанныеЗапроса = Новый Структура;
    ДанныеЗапроса.Вставить("chatId", НомерТелефона + "@c.us");
    ДанныеЗапроса.Вставить("message", ТекстСообщения);
    
    // Сериализуем структуру в строку JSON
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, ДанныеЗапроса);
    ТелоЗапросаСтрокой = ЗаписьJSON.Закрыть();
    
    // Шаг 4. Настройка HTTP-соединения с использованием защищенного протокола SSL
    ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
    HTTPСоединение = Новый HTTPСоединение(АдресПодключения, 443,,,,, ЗащищенноеСоединение);
    
    // Шаг 5. Подготовка HTTP-запроса
    HTTPЗапрос = Новый HTTPЗапрос(ПутьКМетоду);
    HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
    HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрокой, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
    
    // Шаг 6. Отправка запроса и обработка ответа сервера
    Попытка
        HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
        КодСостояния = HTTPОтвет.КодСостояния;
        ТекстОтвета  = HTTPОтвет.ПолучитьТелоКакСтроку();
        
        Если КодСостояния = 200 Тогда
            // Сообщение успешно передано на отправку в очередь шлюза
            ЗаписьЖурналаРегистрации("ИнтеграцияWhatsApp", 
                УровеньЖурналаРегистрации.Информация, , , 
                "Сообщение успешно отправлено на номер " + НомерТелефона + ". Ответ сервера: " + ТекстОтвета);
        Иначе
            // Сервер шлюза вернул ошибку выполнения
            ЗаписьЖурналаРегистрации("ИнтеграцияWhatsApp", 
                УровеньЖурналаРегистрации.Предупреждение, , , 
                "Ошибка отправки сообщения. Код ответа сервера: " + КодСостояния + ". Текст ответа: " + ТекстОтвета);
        КонецЕсли;
        
    Исключение
        // Ошибка сетевого доступа, падение канала связи или неверный адрес хоста
        ЗаписьЖурналаРегистрации("ИнтеграцияWhatsApp", 
            УровеньЖурналаРегистрации.Ошибка, , , 
            "Критическая ошибка при обращении к HTTP-сервису: " + ОписаниеОшибки());
    КонецПопытки;

КонецПроцедуры

&НаСервере
Функция ОчиститьНомерТелефона(Знач ИсходныйНомер)
    
    // Функция удаляет из номера телефона все символы, кроме цифр.
    // На входе может быть: "+7 (999) 123-45-67", на выходе должно получиться: "79991234567"
    Результат = "";
    Для Индекс = 1 По СтрДлина(ИсходныйНомер) Цикл
        Символ = Сред(ИсходныйНомер, Индекс, 1);
        Если Найти("0123456789", Символ) > 0 Тогда
            Результат = Результат + Символ;
        КонецЕсли;
    КонецЦикла;
    
    // Корректируем первую цифру для России, если пользователь ввел номер через "8"
    Если СтрДлина(Результат) = 11 И Лев(Результат, 1) = "8" Тогда
        Результат = "7" + Сред(Результат, 2);
    КонецЕсли;
    
    Возврат Результат;
    
КонецФункции

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

Как защитить аккаунт от блокировок при работе через неофициальные API

Поскольку альтернативные ("серые") шлюзы работают по протоколу WhatsApp Web, алгоритмы безопасности Meta постоянно анализируют поведение такого аккаунта. Если система заподозрит массовую спам-рассылку, ваш номер будет безвозвратно заблокирован. Выясним основные правила безопасной работы при интеграции через неофициальные шлюзы:

  1. Отправляйте сообщения только тем клиентам, которые ждут от вас информацию. Это могут быть автоматические уведомления о статусе заказа, счета на оплату, акты сверок или подтверждения записи. Если получатели будут массово нажимать кнопку «Это спам» на вашем сообщении, алгоритм заблокирует номер в течение нескольких часов.
  2. Избегайте «холодных» рекламных рассылок. Для маркетинговых кампаний по базам клиентов используйте исключительно официальный канал WhatsApp Business API.
  3. Имитируйте паузы между сообщениями. Если ваша база 1С генерирует пакет из 100 сообщений одновременно, не отправляйте их моментально в один поток. Настройте регламентное задание, которое будет выбирать сообщения из регистра сведений и отправлять их порциями (например, по 3-5 сообщений в минуту) с небольшими случайными задержками.
  4. Прогревайте новые номера. Не подключайте только что купленную SIM-карту к интеграции для отправки сотен сообщений в день. Номер должен "прогреться": ведите с него обычную переписку с мобильного телефона в течение 2-3 недель, получайте входящие сообщения от коллег, прежде чем переводить его на автоматическую отправку из 1С.

Таким образом, организовать стабильную отправку сообщений в WhatsApp без постоянно включенного телефона можно как официальным путем (WABA), так и с использованием современных шлюзов (Multi-Device). Выбор зависит от ваших бизнес-задач, объема рассылок и бюджета проекта.

← На главную