Многие компании сталкиваются с ситуацией, когда стоимость СМС-рассылок через официальных агрегаторов (таких как websms, sms.ru и др.) становится экономически нецелесообразной. Особенно это актуально для малого бизнеса, где объем сообщений невелик (до 500 в месяц), но операторы требуют фиксированную абонентскую плату за "имя отправителя" и устанавливают высокие тарифы за каждое сообщение. В данной статье мы разберем, как реализовать схему отправки СМС из 1С, используя обычный Android-телефон или USB-модем с SIM-картой.
Рассмотрим классический способ, который долгое время был стандартом в автоматизации. Для этого нам понадобится обычный 3G/4G USB-модем. Суть метода заключается в прямом взаимодействии с COM-портом устройства.
Проанализируем алгоритм работы. При подключении модема к компьютеру в системе создается виртуальный последовательный порт. Мы можем подключиться к нему из 1С с помощью объекта COMОбъект. Основные команды, которые мы будем использовать, называются AT-командами.
Посмотрим на пример кода для инициализации и отправки сообщения:
// Пример инициализации порта и отправки текста
Порт = Новый COMОбъект("MsSerial.MSComm");
Порт.CommPort = 3; // Номер порта модема
Порт.Settings = "9600,N,8,1";
Порт.PortOpen = Истина;
// Перевод модема в текстовый режим
Порт.Output = "AT+CMGF=1" + Символы.ВК;
// Указание номера получателя
Порт.Output = "AT+CMSS=""89001112233""" + Символы.ВК;
// Текст сообщения
Порт.Output = "Напоминаем о вашей записи сегодня в 15:00" + Символы.ПС + Символы.ВК;
Разберем этот метод подробнее. Главный плюс здесь — полная независимость от интернета и сторонних сервисов. Однако стоит учитывать, что современные модемы часто работают в режиме эмуляции сетевой карты (HiLink), и для работы с AT-командами их нужно переводить в режим "только модем".
Если под рукой есть обычный телефон на базе Android, мы можем использовать его как шлюз. Выясним причину, почему это удобно: не нужно покупать дополнительное оборудование, достаточно кабеля USB. Для управления телефоном с компьютера используется утилита ADB (Android Debug Bridge).
Проанализируем шаги реализации:
ЗапуститьПриложение().Рассмотрим, как выглядит команда отправки в коде 1С:
КомандаADB = "adb shell am start -a android.intent.action.SENDTO -d sms:+79001112233 --es sms_body ""Ваш текст сообщения"" --ez exit_on_sent true";
ЗапуститьПриложение(КомандаADB, , Истина);
// Дополнительно можно имитировать нажатие кнопки "Отправить"
ЗапуститьПриложение("adb shell input keyevent 22", , Истина); // Переход на кнопку
ЗапуститьПриложение("adb shell input keyevent 66", , Истина); // Нажатие Enter
Этот метод позволяет использовать ваш текущий тариф сотового оператора с пакетом бесплатных СМС. Но будьте внимательны: при массовой рассылке одинаковых текстов оператор может заблокировать SIM-карту за спам.
Современные роутеры Keenetic поддерживают работу с USB-модемами и имеют собственный API. Это очень надежное решение для офиса. Вы можете отправлять HTTP-запросы из 1С на роутер, а он будет пересылать их через вставленный модем.
Выясним, как это работает технически. Мы используем объект HTTPЗапрос для обращения к локальному адресу роутера. В теле запроса передаются параметры авторизации и текст сообщения.
Посмотрим на структуру такого решения:
Соединение = Новый HTTPСоединение("192.168.1.1", , "admin", "password");
Запрос = Новый HTTPЗапрос("/rci/sms/send?to=79001112233&message=Text");
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
ЗаписьЖурналаРегистрации("СМС отправлено успешно", УровеньЖурналаРегистрации.Информация);
КонецЕсли;
Преимущество метода заключается в том, что 1С не нужно напрямую взаимодействовать с "железом" или портами. Роутер выступает стабильным посредником, через который можно настроить HTTP API сервис.
Разберем ситуацию, когда вам нужно отправлять сообщения прямо из мобильного клиента 1С. Мобильная платформа имеет встроенные средства для работы с СМС. Мы можем использовать объект СредстваТелефонии.
Рассмотрим пример кода для мобильного приложения:
// Проверяем возможность отправки СМС на устройстве
Если СредстваТелефонии.ПоддерживаетсяОтправкаSMS() Тогда
СредстваТелефонии.ПослатьSMS("79001112233", "Текст вашего сообщения");
КонецЕсли;
Важный нюанс: при использовании этого метода на Android версии 8 и выше система может запросить подтверждение пользователя на отправку каждого сообщения. Обойти это можно только созданием специализированного Android-приложения (не на 1С), которое будет работать в режиме "SMS Gateway".
Проанализируем ситуацию с блокировками (антифрод-системы). Операторы связи внимательно следят за трафиком с обычных SIM-карт физлиц и ИП. Чтобы вашу карту не заблокировали после первых 50 сообщений, соблюдайте следующие правила:
"Здравствуйте, Иван! Запись на 12:00 подтверждена (код 5543)".Если ваша задача — отправлять 10-20 напоминаний в день, самым простым и дешевым решением будет связка 1С + USB-модем или 1С + роутер Keenetic. Это позволит вам полностью уйти от абонентской платы агрегаторам. Однако, если бизнес растет и количество сообщений превышает 1000 в месяц, мы рекомендуем рассмотреть переход на официальные шлюзы, так как риски блокировки номера и потери связи с клиентами станут слишком высокими.
Также не забывайте про альтернативные каналы связи, такие как Telegram-боты или WhatsApp API. Они позволяют отправлять уведомления бесплатно или по фиксированной цене, что может быть еще более выгодным, чем использование традиционных СМС.