Как реализовать отправку SMS и сообщений в мессенджеры (WhatsApp, Telegram, Viber) из 1С 7.7

Программист 1С v7.7 Управленческий учет Сфера услуг, туризм и социальный сектор
← На главную

Платформа 1С:Предприятие 7.7 («семёрка»), несмотря на свой возраст, остается рабочей лошадкой во многих сервисных центрах и ремонтных мастерских. Однако перед современным бизнесом встает задача оперативного уведомления клиентов о готовности заказов. Сегодня обычного SMS часто недостаточно — клиенты предпочитают Telegram, WhatsApp или Viber. Рассмотрим, как преодолеть технологический разрыв между «клюшками» и современными API мессенджеров.

Проблематика интеграции в 1С 7.7

Главная сложность заключается в том, что встроенный язык 1С 7.7 не обладает нативными средствами для работы с современными веб-протоколами. Разберем основные препятствия, которые нам предстоит обойти:

  1. Отсутствие поддержки HTTPS/TLS: Большинство современных API требуют протокол TLS 1.2 или выше, который 1С 7.7 не поддерживает напрямую.
  2. Работа с JSON: Формат обмена данными в мессенджерах — JSON, тогда как в 1С 7.7 основным инструментом являются текстовые файлы или XML (через внешние компоненты).
  3. Кодировки: 1С 7.7 работает в Windows-1251, а мессенджеры принимают только UTF-8.

Проанализируем пошагово три основных способа решения задачи, от простых к более продвинутым.

Решение 1: Использование внешних утилит командной строки

Это самый быстрый способ «подружить» 1С 7.7 с внешним миром без написания сложных обработчиков. Мы будем использовать принцип передачи параметров через командную строку Windows. Рассмотрим пример с отправкой SMS через сервис sms.ru или работу с почтовым шлюзом.

Для реализации можно использовать утилиту sendEmail.exe или cURL. Разберем логику работы:

1. Формируем строку запуска внешней программы.
2. Вызываем команду через КомандаСистемы().

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


Процедура ОтправитьУведомление(ТекстСообщения, НомерТелефона)
    ПутьКПрограмме = "C:\Tools\curl.exe";
    // API ключ сервиса
    ApiKey = "ВАШ-API-KEY";
    
    // Формируем строку запроса для SMS-шлюза
    ПараметрыЗапуска = "-k https://sms.ru/sms/send?api_id=" + ApiKey + "&to=" + НомерТелефона + "&msg=" + ТекстСообщения;
    
    // Выполняем команду
    КомандаСистемы(ПутьКПрограмме + " " + ПараметрыЗапуска);
КонецПроцедуры

Важный нюанс: Текст сообщения должен быть предварительно перекодирован в URL-формат, особенно если в нем есть пробелы или кириллица.

Решение 2: Прослойка на C# или PowerShell (EXE-оболочка)

Как справедливо отмечают эксперты, наиболее стабильный вариант для 1С 7.7 — это создание небольшого исполняемого файла (EXE) на языке C#, который будет выступать посредником (bridge). Этот файл принимает данные из 1С, выполняет всю «грязную» работу по шифрованию и упаковке в JSON, а затем отправляет запрос в API мессенджера.

Проанализируем преимущества этого подхода:

Если разработка на C# кажется сложной, можно использовать PowerShell, который встроен во все современные версии Windows. Посмотрим, как может выглядеть вызов PowerShell скрипта из 1С для отправки сообщения в Telegram:


ТекстСкрипта = "$token = 'BOT_TOKEN'; $chatid = 'CHAT_ID'; $text = 'Ваш заказ готов!'; 
                [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;
                Invoke-RestMethod -Uri ""https://api.telegram.org/bot$token/sendMessage?chat_id=$chatid&text=$text""";

// Сохраняем текст в .ps1 файл и запускаем
КомандаСистемы("powershell.exe -ExecutionPolicy Bypass -File C:\Scripts\SendTelegram.ps1");

Решение 3: Работа через WinHttp и агрегаторы (Омниканальность)

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

Для работы напрямую из 1С 7.7 без внешних EXE-файлов можно использовать объект WinHttp.WinHttpRequest.5.1. Выясним, как это реализовать:

1. Инициализируем COM-объект.
2. Устанавливаем параметры соединения.
3. Отправляем POST-запрос с JSON-телом.

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


Функция ОтправитьЧерезAPI(Метод, Данные)
    Попытка
        Http = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
        Http.Open("POST", "https://api.provider.com/v1/" + Метод, 0);
        Http.SetRequestHeader("Content-Type", "application/json");
        Http.SetRequestHeader("Authorization", "Bearer YOUR_TOKEN");
        
        // В 1С 7.7 данные нужно предварительно перевести в UTF-8
        // Используем ADODB.Stream для конвертации кодировки
        ТелоЗапроса = ПреобразоватьВUtf8(Данные); 
        
        Http.Send(ТелоЗапроса);
        Статус = Http.Status;
        Возврат Статус;
    Исключение
        Сообщить("Ошибка связи: " + ОписаниеОшибки());
        Возврат 0;
    КонецПопытки;
КонецФункции

Решение проблемы кодировки (Windows-1251 в UTF-8)

Это критически важный момент. Без перекодировки клиент получит «кракозябры» вместо текста. Рассмотрим стандартный метод конвертации через ADODB.Stream, который доступен в большинстве систем:


Функция ПреобразоватьВUtf8(ТекстВ1251)
    Stream = СоздатьОбъект("ADODB.Stream");
    Stream.Type = 2; // adTypeText
    Stream.Charset = "windows-1251";
    Stream.Open();
    Stream.WriteText(ТекстВ1251);
    Stream.Position = 0;
    Stream.Charset = "utf-8";
    Результат = Stream.ReadText();
    Возврат Результат;
КонецФункции

Каскадные рассылки: эффективная стратегия

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

  1. Система сначала пытается отправить сообщение в Telegram (самый дешевый канал).
  2. Если через 10 минут статус сообщения «не прочитано» или «не доставлено», отправляем в WhatsApp.
  3. Если и там неудача — шлем обычное SMS как гарантированный способ доставки.

Такая логика настраивается на стороне провайдера API, а из 1С 7.7 вы просто отправляете один запрос с текстом и номером телефона. Это избавляет от необходимости писать сложную логику проверки статусов внутри «семёрки».

Заключение

Мы проанализировали основные способы внедрения современных коммуникаций в 1С 7.7. Несмотря на технологические ограничения платформы, использование внешних компонент, PowerShell-скриптов или COM-объектов WinHttp позволяет успешно интегрировать систему с Telegram, WhatsApp и Viber. Выбор конкретного метода зависит от ваших навыков программирования: от простого вызова curl.exe до создания полноценной микросервисной прослойки на C#.

← На главную