Развитие отправки СМС через SMPP

Обработка поможет разобраться в настройке отправки СМС через протокол SMPP.
В основе взята обработка этой публикации: http://infostart.ru/public/380146/

Обработка адаптировалась к собственной конфигурации и не привязана к объектам конкретной конфигурации (хотя оставлен код для примера).

1) Сделан вывод всех входящих и исходящих пакетов

2) Возможность вручную отправить СМС или несколько СМС и увидеть статус доставки

3) Макет соответствия кодов для кодификации русского текста заменен на расчет

 

Порядок использования для автоматической отправки СМС выполнен следующим образом:

1) СМС-ки на отправку хранятся в отдельном документе.

2) В регламентное задание добавлено задание, которое раз в 3 минуты смотрит дату последнего пакета ящика коротких сообщений. Если эта дата старше 5 минут, процедура принудительно запускает приложение 1С с параметром запуска SMS_SMPP (это происходит на сервере).

Если ВыбЯщик.ПоследнийПакет < ТекущаяДата() - 300 Тогда
СтруктураПараметровБазы = Новый Структура("Srvr, Ref");
СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
ПараметрыСоединения = РаботаСоСтроками.СтрРазбитьПоРазделителю2(СтрокаСоединения, ";");
Для Каждого ТекПараметр Из ПараметрыСоединения Цикл
Если НЕ ЗначениеЗаполнено(ТекПараметр.Значение) Тогда
Продолжить;
КонецЕсли;
ПозицияРавно = Найти(ТекПараметр.Значение, "=");
СтруктураПараметровБазы.Вставить(Лев(ТекПараметр.Значение, ПозицияРавно-1), СтрЗаменить(Сред(ТекПараметр.Значение, ПозицияРавно+1), """", ""));
КонецЦикла;
СтрокаСоединения = """"+СтруктураПараметровБазы.Srvr+""+СтруктураПараметровБазы.Ref+"""";
СтрокаЗапуска = КаталогПрограммы()+"1cv8s.exe ENTERPRISE /S" + СтрокаСоединения + " /N"""+Константы.АдминистраторЛогин.Получить()+""" /P"""+Константы.АдминистраторПароль.Получить()+""" /CSMS_SMPP";
СтрокаЗапуска = СтрЗаменить(СтрокаЗапуска, "Program Files", "Program Files (x86)");
//ВызватьИсключение СтрокаЗапуска;
ЗапуститьПриложение(СтрокаЗапуска);
КонецЕсли;

3) В модуль обычного приложения в обработчик ПриНачалеРаботыСистемы добавлена обработка специфического параметра запуска. Если получен параметр запуска SMS_SMPP, то открывается указанная обработка, заполняется ящик коротких сообщений и запускается отправка смс в автоматическом режиме. Обмен пакетами обновляет реквизит «дата последнего пакета» для ящика коротких сообщений.

Пример: 

НовОбр.Значение = Обработки.ОтправкаКороткихСообщенийSMPP.Создать();
НовОбр.Значение.Ящик = ВыбЯщик.Ссылка;
НовОбр.Значение.ПодключитьSMPPP();
 

upd: Обновлена обработка: добавлена функция разрезания полученных «склеенных» пакетов

6 Comments

  1. Prooa

    А можно код процедуры СобратьПакет_Query_SM, очень нужно

    Reply
  2. deminded
    Reply
  3. flesh611

    Очень нужная вещь. А где можно узнать какие коды ошибок каким ошибкам соответствуют при обработке пакета submit_sm_resp? Возникают 2 ошибки с кодом 10 и 100, не пойму в чем дело

    Reply
  4. deminded

    (3) flesh611, все коды ошибок есть в спецификации (Спецификация Протокола SMPP v.3.4 )

    Например, https://alphasms.ua/storage/files/SMPP-v3.4.rus.pdf

    Reply
  5. Tanis

    Доброго времени суток!

    В публикации не указано, или не увидел. Чей логин и пароль используются? эти смс уходят через какие шлюзы или какие компании по доставке смсок?

    Спасибо!

    Reply
  6. deminded

    (5) Добрый день. Мы использовали обработку для общения со шлюза tele2. Никакие промежуточные компании доставки смс-ок не используются, это их собственный, «родной» smpp-интерфейс http://bsms.tele2.ru/

    Логин, пароль и адрес были выданы нам провайдером.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *