Как реализовать отправку СМС-уведомлений из 1С самостоятельно?

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

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

Использование Библиотеки стандартных подсистем (БСП)

Если вы разрабатываете конфигурацию с нуля или используете типовое решение, самым правильным и быстрым способом будет внедрение подсистемы «Рассылка сообщений» из состава БСП. Рассмотрим, почему это выгодно. В БСП уже реализованы механизмы взаимодействия с популярными СМС-агрегаторами, такими как SMS.RU, СМС-Центр, МТС и Билайн.

Проанализируем шаги для реализации через БСП:

  1. Интегрируйте подсистему Взаимодействия или конкретно функции работы с СМС.
  2. Настройте учетную запись в пользовательском режиме, выбрав провайдера и указав логин/пароль (или API-ключ).
  3. Используйте программный интерфейс БСП для отправки.

Разберем пример кода, который может быть использован при наличии БСП в системе:


ПараметрыОтправки = Новый Структура;
ПараметрыОтправки.Вставить("НомераПолучателей", "79991234567");
ПараметрыОтправки.Вставить("ТекстСообщения", "Резервное копирование базы завершено с ошибкой!");

Результат = ОтправкаSMS.ОтправитьSMS(ПараметрыОтправки);
Если Результат.Отправлено Тогда
    Сообщить("СМС успешно отправлено");
КонецЕсли;

Прямая интеграция с СМС-агрегаторами через REST API

Если вы не хотите перегружать свою «самописку» тяжелыми библиотеками, мы можем реализовать отправку напрямую через HTTPСоединение. Большинство современных сервисов предоставляют простой программный интерфейс (API).

Посмотрим на алгоритм реализации такой интеграции:

  1. Выбор провайдера: Найдите сервис с открытым API и зарегистрируйте личный кабинет.
  2. Формирование запроса: Подготовьте параметры (номер телефона, текст, API-ключ) в формате JSON или в строке запроса.
  3. Отправка данных: Используйте объекты 1С для передачи данных на сервер провайдера.

Рассмотрим пример функции для отправки сообщения через гипотетический REST API:


Процедура ОтправитьСМСНаСервер(НомерТелефона, Текст)
    Сервер = "api.sms-service.ru";
    Ресурс = "/send?api_key=ВАШ_КЛЮЧ&to=" + НомерТелефона + "&msg=" + КодироватьСтроку(Текст, СпособКодированияСтроки.URLДанные);
    
    Соединение = Новый HTTPСоединение(Сервер, 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
    Запрос = Новый HTTPЗапрос(Ресурс);
    
    Попытка
        Ответ = Соединение.Получить(Запрос);
        Если Ответ.КодСостояния = 200 Тогда
            // Проанализируем тело ответа, обычно там JSON с ID сообщения
            ТекстОтвета = Ответ.ПолучитьТелоКакСтроку();
        КонецЕсли;
    Исключение
        ЗаписатьЛогОшибки(ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры

Важный нюанс: Выполняйте отправку СМС в фоновом задании. Если API агрегатора будет отвечать долго, основной поток программы «зависнет», что создаст дискомфорт для пользователя. Используйте метод ФоновыеЗадания.Выполнить().

Встроенный сервис «1С-СМС»

Фирма «1С» предлагает штатный сервис «1С-СМС», который уже встроен во многие конфигурации. Его преимущество в том, что он предоставляет унифицированный интерфейс для разных провайдеров. Если ваша конфигурация строится с нуля на платформе 8.3, стоит изучить документацию к этому сервису, так как он минимизирует риски блокировок со стороны операторов благодаря правильному формированию заголовков сообщений.

Аппаратный метод: Использование GSM-модема

Рассмотрим «олдскульный», но иногда оправданный метод — использование старого USB-модема (например, Huawei E1550). Этот способ был популярен несколько лет назад из-за дешевизны пакетов СМС на обычных SIM-картах.

Для реализации можно использовать стороннее ПО, например Gammu. Процесс выглядит так:

  1. Модем подключается к серверу, на котором установлена Gammu.
  2. Программа настраивается на мониторинг определенной папки.
  3. Из 1С мы просто сохраняем текстовый файл в эту папку.
  4. Gammu подхватывает файл и отправляет СМС через модем.

Внимание: Сегодня этот метод считается нестабильным. Операторы связи активно блокируют обычные SIM-карты, если замечают автоматическую рассылку. Для профессиональных решений необходимо использовать M2M-тарифы.

Юридические и технические ограничения

Прежде чем внедрять рассылку, выясним несколько критически важных моментов:

  1. Имя отправителя: Если вы хотите, чтобы сообщение приходило от имени «SERVER1C», а не от случайного номера, вам придется официально зарегистрировать «буквенную подпись» у операторов через агрегатора. Это платная услуга (абонентская плата).
  2. Закон о связи: Любая автоматизированная рассылка должна соответствовать законодательству. Даже если это уведомления для ваших сотрудников, формально они должны дать согласие.
  3. Стоимость: СМС — это дорогой канал. Одно сообщение может стоить от 3 до 6 рублей. Для массовых уведомлений рассмотрите альтернативы.

Альтернативы: Мессенджеры и Push-уведомления

Проанализируем ситуацию: зачем платить за СМС, если можно отправить сообщение в Telegram или через Push-уведомления? Для уведомлений о бэкапах идеально подходят Telegram-боты. Создание бота бесплатно, а отправка сообщений через HTTPСоединение в 1С реализуется за 15 минут. Также можно использовать «Сервис push-уведомлений 1С». Если у вас есть мобильное приложение на платформе 1С, вы можете отправлять бесплатные push-сообщения администратору системы.

Особенности уведомлений о резервном копировании

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

Поэтому логику уведомлений о критических сбоях инфраструктуры лучше выносить наружу:

  1. Скрипт резервного копирования (PowerShell или Bash) выполняет создание архива.
  2. Если код возврата скрипта отличен от нуля (ошибка), скрипт сам обращается к API СМС-агрегатора.
  3. Или же 1С при запуске проверяет дату последнего успешного бэкапа и, если она старая, сигнализирует администратору.

Таким образом, мы рассмотрели полный спектр решений: от простых скриптов до сложных интеграций через БСП. Выбор конкретного метода зависит от вашего бюджета и требований к надежности системы.

← На главную