Автоматизация уведомлений — одна из важнейших задач при поддержке информационных систем. Своевременное сообщение о критической ошибке, например, о сбое при создании резервной копии, может спасти данные компании. В этой статье мы разберем основные способы реализации отправки СМС из системы 1С:Предприятие, начиная от простых штатных механизмов и заканчивая интеграцией с внешними сервисами через API.
Если вы разрабатываете конфигурацию с нуля или используете типовое решение, самым правильным и быстрым способом будет внедрение подсистемы «Рассылка сообщений» из состава БСП. Рассмотрим, почему это выгодно. В БСП уже реализованы механизмы взаимодействия с популярными СМС-агрегаторами, такими как SMS.RU, СМС-Центр, МТС и Билайн.
Проанализируем шаги для реализации через БСП:
Взаимодействия или конкретно функции работы с СМС.Разберем пример кода, который может быть использован при наличии БСП в системе:
ПараметрыОтправки = Новый Структура;
ПараметрыОтправки.Вставить("НомераПолучателей", "79991234567");
ПараметрыОтправки.Вставить("ТекстСообщения", "Резервное копирование базы завершено с ошибкой!");
Результат = ОтправкаSMS.ОтправитьSMS(ПараметрыОтправки);
Если Результат.Отправлено Тогда
Сообщить("СМС успешно отправлено");
КонецЕсли;
Если вы не хотите перегружать свою «самописку» тяжелыми библиотеками, мы можем реализовать отправку напрямую через HTTPСоединение. Большинство современных сервисов предоставляют простой программный интерфейс (API).
Посмотрим на алгоритм реализации такой интеграции:
Рассмотрим пример функции для отправки сообщения через гипотетический REST API:
Процедура ОтправитьСМСНаСервер(НомерТелефона, Текст)
Сервер = "api.sms-service.ru";
Ресурс = "/send?api_key=ВАШ_КЛЮЧ&to=" + НомерТелефона + "&msg=" + КодироватьСтроку(Текст, СпособКодированияСтроки.URLДанные);
Соединение = Новый HTTPСоединение(Сервер, 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос(Ресурс);
Попытка
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
// Проанализируем тело ответа, обычно там JSON с ID сообщения
ТекстОтвета = Ответ.ПолучитьТелоКакСтроку();
КонецЕсли;
Исключение
ЗаписатьЛогОшибки(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Важный нюанс: Выполняйте отправку СМС в фоновом задании. Если API агрегатора будет отвечать долго, основной поток программы «зависнет», что создаст дискомфорт для пользователя. Используйте метод ФоновыеЗадания.Выполнить().
Фирма «1С» предлагает штатный сервис «1С-СМС», который уже встроен во многие конфигурации. Его преимущество в том, что он предоставляет унифицированный интерфейс для разных провайдеров. Если ваша конфигурация строится с нуля на платформе 8.3, стоит изучить документацию к этому сервису, так как он минимизирует риски блокировок со стороны операторов благодаря правильному формированию заголовков сообщений.
Рассмотрим «олдскульный», но иногда оправданный метод — использование старого USB-модема (например, Huawei E1550). Этот способ был популярен несколько лет назад из-за дешевизны пакетов СМС на обычных SIM-картах.
Для реализации можно использовать стороннее ПО, например Gammu. Процесс выглядит так:
Внимание: Сегодня этот метод считается нестабильным. Операторы связи активно блокируют обычные SIM-карты, если замечают автоматическую рассылку. Для профессиональных решений необходимо использовать M2M-тарифы.
Прежде чем внедрять рассылку, выясним несколько критически важных моментов:
Проанализируем ситуацию: зачем платить за СМС, если можно отправить сообщение в Telegram или через Push-уведомления?
Для уведомлений о бэкапах идеально подходят Telegram-боты. Создание бота бесплатно, а отправка сообщений через HTTPСоединение в 1С реализуется за 15 минут.
Также можно использовать «Сервис push-уведомлений 1С». Если у вас есть мобильное приложение на платформе 1С, вы можете отправлять бесплатные push-сообщения администратору системы.
Выясним важную деталь, упомянутую опытными разработчиками: если 1С не запустилась или база данных повреждена, сама 1С не сможет отправить СМС о том, что бэкап не сделан. Она просто не дойдет до этого участка кода.
Поэтому логику уведомлений о критических сбоях инфраструктуры лучше выносить наружу:
Таким образом, мы рассмотрели полный спектр решений: от простых скриптов до сложных интеграций через БСП. Выбор конкретного метода зависит от вашего бюджета и требований к надежности системы.