Отправка СМС по протоколу SMPP через МЕГАФОН или через веб-сервис МТС (8.3 обычное приложение) Добавлено: отправка СМС мегафон по http


Конфигурация предназначена для отправки СМС по протоколу SMPP, напрямую, через МЕГАФОН.
Также в конфигурации есть отправка СМС через веб-сервис МТС.
Добавлено: отправка СМС мегафон по http

Инструкция по настройке:

  • МТС
  1. В справочнике «СервисыSMSрассылки» заполняем пользователя и пароль (пароль должен быть в формате MD5) полученные от оператора.
  2. Далее заполняем документ «SMSРассылка»
  3. Настраиваем регламентное задание «ОбработкаSMSСообщений»

Вот в принципе и все. С мегафоном сложнее… т.к. используется протокол SMPP, единственное, что я нашел для работы с 1С, это компонента WinSock.

  • МЕГАФОН
  1. В справочнике «СервисыSMSрассылки» заполняем пользователя, пароль, ip, и порт.
  2. Регистрируем компоненту WinSock. 
  3. В обработке «РассылкаSMSМегафон» необходимо поправить имя отправителя в функции сбора пакета Submit_sm.
  4. Заполняем документ «SMSРассылка»
  5. Настраиваем регламентное задание «ОбработкаSMSСообщений»
  • Регистрация компоненты WinSock:
  • Если регистрируем локально, тогда кидаем ее

C:WindowsSysWOW64 и в «Выполнить» прописываем regsvr32 “путь к файлу”, если на сервере, то см. ниже.

  • Регистрация на сервере. Компонента старая x32, поэтому, чтобы она работала на сервере x64, необходимо проделать следующее:
  1. Запускаем консоль «Службы компонентов» (Пуск ->Администрирование->Службы компонентов)
  2. В ветке «Приложения COM+» добавлем новое приложение. Правой кнопкой Создать -> Приложение
  3. Выбираем «Создать новое приложение»
  4. Имя задаем MSWinsockWinsock1, способ активации «серверное приложение»
  5. Учетную запись выбираем, под которой стартует сервер 1С
  6. В ветке созданного приложения переходим на ветку «Роли» открываем роль «CreatorOwner» и далее в разделе «Пользователи» создаем пользователя — учетную запись под которой работает сервер 1С.
  7. В ветке созданного приложения переходим на ветку «Компоненты» и создаем компонент.
  8. Выбираем «Установка новых компонентов», и в диалоге выбираем нужную компоненту (тип файла «все файлы»)
  9. Открываем свойства только что созданного компонента, идем на вкладку «Безопасность», проверяем в списке «Явно установленные для выделенных объектов роли» стоит ли галка напротив роль CreatorOwner — если нет, тогда устанавливаем ее.

При написании конфигурации очень помогли статьи //infostart.ru/public/319296/ и //infostart.ru/public/297040/ за что автору огромное спасибо.

Основное отличие  данный конфигурации это возможность отправки длинных сообщений с использованием UDH  и использование регламентного задания.

В архиве конфигурация, описание протокола SMPP и компонента WinSock.

Пишите вопросы в комментариях, рад буду помочь.

UPD 01.06.2026: Улучшена стабильность обработки(добавлена обработка некоторых ошибок — если номер кривой), добавлена обработка отчетов о доставке, переделана запись id сообщения.

UPD 10.08.2026: У мегафона появилась возможность отправки СМС по протоколу HTTP, для работы с HTTP необходимо запросить у мегафона Логин и пароль и чтобы ваш внешний ip они добавили в

разрешенные.

Для получения отчетов о доставке необходимо создать свой http сервис с методом POST.

Код получения отчета:

Функция ЗаписатьОповещениеСМС(Запрос)
Тело = Запрос.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);

ЗаписьЖурналаРегистрации("Отчет о доставке",УровеньЖурналаРегистрации.Информация,Метаданные.HTTPСервисы.API,,Тело);

Ответ = Новый HTTPСервисОтвет(200);
Возврат Ответ;
КонецФункции

Формат отчета о доставке JSON:

{«status»:»delivered»,»short_message»:»id:250046790892422 sub:001 dlvrd:001 submit date:1708100950 done date:1708100950 stat:DELIVRD err:0 text:»,»receipted_message_id»:»250046790892422″,»msg_id»:»571ehnhuvq4l960v»}

49 Comments

  1. BaHgaJI

    Всего одно скачивание, ну не серьезно ребят) Я так старался, так старался)

    Reply ↓
  2. BaHgaJI

    Если кому надо могу выложить с обработкой отчетов о доставке мегафоновских смс,

    Reply ↓
  3. php5

    Классная вещь, спасибо, пригодилось мне в работе!

    Reply ↓
  4. BaHgaJI

    (4) php5, Пожалуйста, это моя работа, кто-то должен!

    Reply ↓
  5. Prooa

    Здравствуйте, ни как не могу зарегистрировать на Windows7x64. Создаю приложение потом компоненту, выбираю файл, винда пишет что есть такая и не ставит компоненту, а при мWinSocketActiveX = Новый COMОбъект(«MSWinsock.Winsock.1»); выдает исключение, что и пропустил не подскажите? Очень нужно

    Reply ↓
  6. Prooa

    (6) Prooa, зарегистрировал, но смс не отправляет, в режиме отладки видно что срабатывает только «//пришел пакет ENQUIRE_LINK» и все, что не так

    Reply ↓
  7. BaHgaJI

    п(7) Prooa, проверьте пользователя и пароль

    Reply ↓
  8. BaHgaJI

    (7) Prooa, ENQUIRE_LINK_RESP отправляете?

    Reply ↓
  9. BaHgaJI

    (7) Prooa, или скачайте http://infostart.ru/public/393308/ там более наглядно, что приходит, что уходит

    Reply ↓
  10. Prooa

    Скачал обработку все работает, а с вашей конфы не хочет

    Reply ↓
  11. BaHgaJI

    (11) Prooa, походу только у вас не работает.

    скорее всего не правильное значение МатрицаДанных.SetValue(7, 4); //command_id 4=submit_sm submit_multi=21

    Reply ↓
  12. BaHgaJI

    (11) Prooa, и еще с этими данными надо поиграть, они тоже часто разные у всех бывают

    МатрицаДанных.SetValue(17, 5); //source_addr_ton

    МатрицаДанных.SetValue(18, 0); //source_addr_npi

    Reply ↓
  13. BaHgaJI

    (11) Prooa, нашел в чем могла быть проблема.

    в submit_sm_resp иногда приходит пакет с ошибкой если оператор по какой то причине не может отправить смс.

    Добавьте в процедуру ОбработатьПакет_submit_sm_resp

    КодОшибки = ВходящийПакет.GetValue(11);

    Если КодОшибки <> 0 Тогда

    ЗаписатьНовыйСтатусСМС(«ошибка отправки»);

    Возврат;

    КонецЕсли;

    Reply ↓
  14. nikolayvg

    Здравствуйте. При установке компоненты на сервер 2008 R2 Standart возникла проблема в пункте

    8. Выбираем «Установка новых компонентов», и в диалоге выбираем нужную компоненту (тип файла «все файлы»).

    все выбираю, но компонента в списке не появляется. Что может быть не так?

    Reply ↓
  15. BaHgaJI

    (15) nikolayvg, точно выбираете тип файла «Все файлы(*.*)» т.к. если файл в папке то он по-любому будет виден. Или в службе компонентов не появляется? Если в службе компонентов, то попробуйте любую другую компоненту добавить, а потом компоненту винсок, должна появиться.

    Reply ↓
  16. nikolayvg

    (15) nikolayvg, На всякий случай для остальных:

    Воспользовался советом из http://infostart.ru/public/319296/ и установил Visual Basic

    Reply ↓
  17. BaHgaJI

    Если приходит ошибка 88 (0x65) надо добавить задерку при отправке смс, примерно 5 смс в секунду

    Reply ↓
  18. Bayker

    Добрый день, заключили договор с мегафоном, прислал вот это:

    1. IP-адрес крипто-сервера

    2. IP-адрес SMPP ESME

    3. IP-адрес крипто-сервера УФ ОАО «МегаФон»

    4. IP-адрес SMS-центра УФ ОАО «МегаФон»

    5. Ключ isakmp

    6. transform-set:

    7. PFS:

    8. Isakmp policy

    От дальнейшей помощи категорически отказывается, будет ли Ваша разработка работать с Тюменским мегафоном (если там вообще есть различия)?

    Reply ↓
  19. BaHgaJI

    (19) Bayker, не могу сказать, по идее если по протоколу SMPP то отличий никаких не должно быть

    Reply ↓
  20. SGordon1

    Обновление лежит отдельно , не в архиве?

    Reply ↓
  21. BaHgaJI

    (21) SGordon1, да

    Reply ↓
  22. flord

    Никто не сталкивался с такой ситуацией. После отправки команды Bind_transceiver компонента переходит в состояние State = 8 (клиент закрыл подключение)?

    Reply ↓
  23. BaHgaJI

    (23) flord, значит ошибка в этом пакете, проверьте логин и пароль, он чувствителен к реестру. Лучше конечно узнать у оператора, что к ним приходит и в чем ошибка.

    Reply ↓
  24. flord
    Reply ↓
  25. BaHgaJI

    (25) flord, упоминания нет, потому что скорее всего Bind_transceiver кривой, скиньте как вы его переделали…

    Reply ↓
  26. flord
    Reply ↓
  27. BaHgaJI

    (27) flord, ну мой совет поставить после пароля

    Матрица.SetValue(29,0);

    Матрица.SetValue(30,0);

    Матрица.SetValue(31,0);

    Матрица.SetValue(32,0);

    Матрица.SetValue(33,52);

    Матрица.SetValue(34,1);

    Матрица.SetValue(35,1);

    Матрица.SetValue(36,0);

    Там где циферки слева соотвественно ваш индекс.

    Просто эти значения четко подобраны и менять их не стоит.

    Reply ↓
  28. BaHgaJI

    (27) flord, так же у вас не верно Матрица.SetValue(Индекс, КодСимвола(interface_version));//interface_version = 4 (версия 4 = 3.4)

    Должно быть так interface_version 0x34 = 52

    Reply ↓
  29. BaHgaJI

    (27) flord, и вот эти должны быть = 1

    addr_ton = 0;

    addr_npi = 0;

    Reply ↓
  30. flord

    Если оставить так – то «съедаются» последние несколько символов пароля.

    Если смотреть описание pdu из описания протокола

    Матрица.SetValue(32,0); это system_тип

    Матрица.SetValue(33,52); это interface_version

    Матрица.SetValue(34,1); это addr_ton

    Матрица.SetValue(35,1); это addr_npi

    Матрица.SetValue(36,0); это address_range

    Я прав?

    А за что отвечают эти значения, не подскажете?:

    Матрица.SetValue(29,0);

    Матрица.SetValue(30,0);

    Матрица.SetValue(31,0);

    Reply ↓
  31. BaHgaJI
    Reply ↓
  32. flord

    (32) Выяснилось, что по нашему заключенному договору с Мегафоном в этой системе Bind_transceiver не поддерживается

    (Либо у Мегафона в принципе не поддерживается Bind_transceiver).

    Работает Bind_transmitter.

    A PDU на запрос BIND был правильным – изменил команду и заработало.

    Спасибо за помощь!

    Reply ↓
  33. BaHgaJI

    (33) flord, Вот оно че, у нас мегафон на Bind_transceiver работает

    Reply ↓
  34. Revolver_61

    Подскажите, что означает ошибка «Код Ошибки Постоянного Приложения Приемника ESME (ESME Receiver Permanent App Error Code)» ?

    Приходит в пакете submit_sm_resp

    Reply ↓
  35. BaHgaJI

    (35) Revolver_61,

    1. неверные параметры в отправленном submit_sm.

    2. от smsc других регионов и операторов пришел ответ о невозможности принять смс по разным причинам.

    3. закончились деньги на лицевом счету, необходимо обратиться к своему менеджеру для выяснения вопроса.

    Reply ↓
  36. BaHgaJI

    (35) Revolver_61, часто эта ошибка приходит если отправляется смс на городской номер

    Reply ↓
  37. Tanis

    Доброго времени!

    Подскажите как именно работает с МТС? Обработку пока не скачивал.

    В описании сказано. что вводится логин и пароль (МД5). Эти «учетки» просто пользователя (своего личного) или после договора компании с МТС о доставке смс?

    По какому шлюзу обмен идет?

    Спасибо!

    Reply ↓
  38. BaHgaJI

    Добрый день! Договор с МТС нужен, у них есть апи по SOAP. (веб сервис). В моей конфигурации пример этого веб-сервиса, в принципе самому там не сложно настроить.

    Reply ↓
  39. real_alexasha

    Здравствуйте!

    Без создания регламентных заданий, обработка РассылкаSMSМегафон отправляет сообщения?

    Reply ↓
  40. BaHgaJI

    (40) Добрый день!

    Конечно

    Reply ↓
  41. cyborg55

    Добрый день. Пытаюсь отправить через мтс. Не получается. Как мне получить пароль в формате MD5? Это мне мтс должен в таком формате предоставить?

    Reply ↓
  42. BaHgaJI

    (42) нет, мтс предоставляет в обычном формате, в мд5 на любом сайте конквертните, например http://decodeit.ru/md5

    Reply ↓
  43. Spakus

    Здравствуйте.

    Скачал конфигурацию, пытаюсь отправить СМС через МТС.

    При запуске регламентного задания вываливается ошибка (см. скриншот) в функции «ПолучитьСтатистику» при вызове метода «GetStatistics».

    В чем ошибка?

    Reply ↓
  44. BaHgaJI

    (44) В конфигураторе удалите ws ссылку и добавьте заново такую же.

    Reply ↓
  45. ooki

    Здравствуйте, BaHgaJI. Спасибо за обработку. Пытаюсь настроить. Пакет bind_transceiver уходит, bind_transceiver_resp прилетает, тут все ок. Дальше отправляем submit_sm. В итоге submit_sm_resp возвращается с кодом ошибки 1 — Invalid Message Length (sm_length parameter). Хотя параметр sm_length не менялся при настройке submit_sm.

    МассивКодовРусскихБукв  = ЗакодироватьРусскийТекст(СообщениеТекст);
    ДлинаСообщения         = МассивКодовРусскихБукв.Количество();
    
    ……………………….. (часть кода заполнения первой части матрицы)
    
    Индекс = 28;
    Для  НомерСтроки = 1 По ДлинаНомераТелефона Цикл
    МатрицаДанных.SetValue(Индекс,КодСимвола(НомерТелефона,НомерСтроки));
    Индекс = Индекс+1;
    КонецЦикла;
    
    МатрицаДанных.SetValue(39, 0);
    МатрицаДанных.SetValue(40, 0); //esm_class
    
    МатрицаДанных.SetValue(41, 0); //protocol_id
    МатрицаДанных.SetValue(42, 0); //priority_flag
    
    МатрицаДанных.SetValue(43, 0);  //schedule_delivery_time
    
    МатрицаДанных.SetValue(44, 0);  //validity_period
    
    
    МатрицаДанных.SetValue(45, 0);   //registered_delivery //sa! 1
    МатрицаДанных.SetValue(46, 0);   //replace_if_present_flag
    МатрицаДанных.SetValue(47, DataCod);//data coding
    МатрицаДанных.SetValue(48, 0); //sm_default_msg_id
    
    МатрицаДанных.SetValue(49, ДлинаСообщения);   //sm_length
    
    Индекс = 50;          //short_message
    
    Для  НомерСтроки = 0 По ДлинаСообщения-1 Цикл
    СимВ = МассивКодовРусскихБукв[НомерСтроки];
    МатрицаДанных.SetValue(Индекс,СимВ);
    Индекс = Индекс+1;
    КонецЦикла;

    Показать

    Помогите, пожалуйста, разобраться, в чем может быть ошибка?

    Reply ↓
  46. doctorov_s

    Добрый день! А подскажите пожалуйста в обработке отправка через мегафон там сделана сразу с отчетом о доставке??

    Reply ↓
  47. doctorov_s

    интересует отправка через HHTP

    Reply ↓
  48. doctorov_s

    (2)Да если можно, выложи плиз!

    Reply ↓
  49. amatisol

    Ни у кого нет такой же обработки под УФ, интересует только как организовать отправку через smpp, вообще реально прикрутить это дело, если у кого есть буду благодарен если пришлете, спасибо

    Reply ↓

Leave a Comment

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