Рассылка SMS через GSM-шлюзы


Программа предназначена для организации массовой рассылки SMS произвольному списку получателей.

Представляет собой внешнюю обработку для конфигураций «1С: Розница» в редакции 2 и «1C: Управление торговлей» в редакции 11. Платформа — «1С Предприятие» версии 8.2. Поддерживается толстый, тонкий и веб-клиенты.

Рассылка осуществляется через GSM-шлюзы gatesms.ru и smsc.ru.

Управление обработкой распределено по трём вкладкам. На вкладке «Сообщение» вводится текст SMS, на вкладке «Получатели» формируется список получателей этого сообщения. Вкладка «Настройка» используется для выбора шлюза отправки сообщений и настройки дополнительных параметров рассылки.
 

Настройка обработки


Основные параметры обработки находятся на вкладке «Настройка».

  • Шлюз. GSM-шлюз, через который будет осуществляться рассылка.
  • Логин. Имя пользователя GSM-шлюза. Если у вас его нет, зарегистрируйтесь на сайте выбранного шлюза.
  • Пароль. Пароль пользователя GSM-шлюза.

После заполнения свойств провайдера вы можете воспользоваться командой «Проверить баланс», которая выводит текущее состояние счета указанной учетной записи.

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

  • Отправитель. Определяет имя автора SMS, которое отображается на экране мобильного телефона получателя. Следует понимать, что значение этой настройки, скорее всего, потребует первоначального одобрения администрацией шлюза на сайте сервиса.
  • Отправлять срочные сообщения (flash SMS) вместо обычных? Позволяет вместо обычных SMS посылать так называемые «Flash SMS» — сообщения, которые сразу появляются на экране телефона и, в большинстве случаев, не сохраняются в памяти устройства.

Все данные вкладки «Настройка» автоматически сохраняются и восстанавливаются при открытии обработки. Вместе с тем, вы можете пользоваться стандартным функционалом сохранения и восстановления значений настроек, который доступен в меню «Все действия» формы.


Список получателей

На вкладке «Получатели» заполняется список адресатов, которым будет направлены сообщения. Ими могут выступать контрагенты и физические лица, занесенные в информационную базу, либо просто произвольно сформированный список телефонов.

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

Кроме форм подбора, в выпадающем списке «Заполнить» доступны команды «Выгрузить в файл» и «Загрузить из файла», которые соответственно позволяют сохранять сформированный список получателей в виде текстового файла с разделителями и загружать список получателей из сформированного файла.

При заполнении списка вручную заполнять колонку «Получатель» необязательно: она носит исключительно информативный характер и никак не влияет на процесс формирования сообщений.

Отправка сообщения


После ввода списка получателей следует перейти на вкладку «Сообщение», ввести его текст и выполнить команду «Отправить сообщение».

Состояние отправки выводится стандартными сообщениями. При возникновении какой-либо ошибки (например, недостатке средств на счету для отправки очередного сообщения) процесс остановится и программа сообщит о возникшей проблеме.

Программный интерфейс


Все основные механизмы, обеспечивающие взаимодействие обработки с GSM-шлюзами, вынесены в модуль объекта обработки и могут вызываться программистом извне для снижения затрат времени на самостоятельную разработку подобного решения.

Точки входа для отправки сообщений:

  • ОтправитьРассылкуЧерезGateSMS( Рассылка )
  • ОтправитьРассылкуЧерезSMSC( Рассылка )

В качестве параметра в обоих случаях выступает структура со следующими элементами:

  • ЛогинШлюза (строка; имя пользователя GSM-шлюза)
  • ПарольШлюза (строка; пароль пользователя GSM-шлюза)
  • ИмяОтправителя (строка; имя автора SMS)
  • ТелефонПолучателя (строка; один или несколько телефонов через запятую)
  • ТекстСообщения (строка; содержимое SMS)
  • Срочное (булево; определяет необходимость посылать Flash-SMS вместо обычных SMS)
  • ЗапросСтоимости (булево; определяет, нужно ли запросить стоимость рассылки вместо собственно рассылки)

В качестве результата в обеих случаях возвращается структура. Обязательные элементы:

  • Успешно (булево; индикатор успешного завершения операции)
  • Сообщение (строка; текст ошибки, если она возникла)

Если операция успешна, структура ответа дополняется. В случаяе запроса стоимости появляются элементы:

  • КоличествоСообщений (строка; количество SMS, которые будут посланы в ходе этой рассылки)
  • СтоимостьРассылки (строка; стоимость рассылки в валюте сервиса)

Если запроса стоимости не было (то есть, была выполнена обычная рассылка) к структуре ответа добавляется параметр БалансШлюза (строка), который содержит баланс GSM-шлюза на момент завершения рассылки.

Пример рассылки:

    Рассылка = Новый Структура;
    
    Рассылка.Вставить( "ЛогинШлюза"         , "МойЛогин" );
    Рассылка.Вставить( "ПарольШлюза"        , "МойПароль" );
    Рассылка.Вставить( "ИмяОтправителя"     , "МойПсевдоним" );
    Рассылка.Вставить( "ТелефонПолучателя"  , "79133100000" );
    Рассылка.Вставить( "ТекстСообщения"     , "Привет, мир!" );
    Рассылка.Вставить( "Срочное"            , Ложь );
    Рассылка.Вставить( "ЗапросСтоимости"    , Ложь );

    Результат = Обработки.РассылкаSMS.Создать().ОтправитьРассылкуЧерезSMSC( Запрос );
    
    Если Результат.Успешно Тогда
        Сообщить( "Баланс: " + Результат.БалансШлюза );
    Иначе
        Сообщить( Результат.Сообщение );
    КонецЕсли;

Пример оценки стоимости:

    Рассылка = Новый Структура;
    
    Рассылка.Вставить( "ЛогинШлюза"         , "МойЛогин" );
    Рассылка.Вставить( "ПарольШлюза"        , "МойПароль" );
    Рассылка.Вставить( "ИмяОтправителя"     , "МойПсевдоним" );
    Рассылка.Вставить( "ТелефонПолучателя"  , "79133100000" );
    Рассылка.Вставить( "ТекстСообщения"     , "Привет, мир!" );
    Рассылка.Вставить( "Срочное"            , Ложь );
    Рассылка.Вставить( "ЗапросСтоимости"    , Истина);

    Результат = Обработки.РассылкаSMS.Создать().ОтправитьРассылкуЧерезSMSC( Запрос );
    
    Если Результат.Успешно Тогда
        Сообщить( "Количество сообщений: " + Результат.КоличествоСообщений );
        Сообщить( "Стоимость отправки: " + Результат.СтоимостьРассылки );
    Иначе
        Сообщить( Результат.Сообщение );<
    КонецЕсли;

Точки входа для определения баланса на GSM-шлюзах:

  • ОпределитьБалансНаGateSMS( Запрос )
  • ОпределитьБалансНаSMSC( Запрос )

В качестве параметра в обеих случаях выступает структура со следующими элементами:

  • ЛогинШлюза (строка; имя пользователя GSM-шлюза)
  • ПарольШлюза (строка; пароль пользователя GSM-шлюза)

В качестве результата в обеих случаях возвращается структура. Обязательные элементы:

  • Успешно (булево; индикатор успешного завершения операции)
  • Сообщение (строка; текст ошибки, если она возникла)

Если операция успешна, к структуре добавляется элемент БалансШлюза (строка), который содержит текущий баланс GSM-шлюза.

Пример определения баланса:

    Рассылка = Новый Структура;
    
    Рассылка.Вставить( "ЛогинШлюза"         , "МойЛогин" );
    Рассылка.Вставить( "ПарольШлюза"        , "МойПароль" );

    Результат = Обработки.РассылкаSMS.Создать().ОпределитьБалансНаGateSMS( Запрос );
    
    Если Результат.Успешно Тогда
        Сообщить( "Баланс: " + Результат.БалансШлюза );
    Иначе
        Сообщить( Результат.Сообщение );
    КонецЕсли;

Файлы обработки:

-