Развитие отправки СМС через 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 не будет опубликован. Обязательные поля помечены *