gifts2017

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

Опубликовал Артем Замолодчиков (BaHgaJI) в раздел Обмен - SMS рассылки

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

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

  • МТС
  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:\Windows\SysWOW64 и в «Выполнить» прописываем regsvr32 “путь к файлу”, если на сервере, то см. ниже.

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

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

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

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

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

 

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

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
ОтправкаСМСчереМегафон+МТС
.7z 1,06Mb
17.07.15
89
.7z 1.0 1,06Mb 89 Скачать
ОтправкаСМСчереМегафон
.epf 14,91Kb
01.06.16
17
.epf 1.1 14,91Kb 17 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Артем Замолодчиков (BaHgaJI) 21.07.15 09:46
Всего одно скачивание, ну не серьезно ребят) Я так старался, так старался)
2. Артем Замолодчиков (BaHgaJI) 14.08.15 16:03
Если кому надо могу выложить с обработкой отчетов о доставке мегафоновских смс,
4. Александр Плюшкин (php5) 11.09.15 10:50
Классная вещь, спасибо, пригодилось мне в работе!
5. Артем Замолодчиков (BaHgaJI) 02.10.15 08:12
(4) php5, Пожалуйста, это моя работа, кто-то должен!
6. Алексей Мальцев (Prooa) 02.11.15 12:02
Здравствуйте, ни как не могу зарегистрировать на Windows7x64. Создаю приложение потом компоненту, выбираю файл, винда пишет что есть такая и не ставит компоненту, а при мWinSocketActiveX = Новый COMОбъект("MSWinsock.Winsock.1"); выдает исключение, что и пропустил не подскажите? Очень нужно
7. Алексей Мальцев (Prooa) 03.11.15 06:36
(6) Prooa, зарегистрировал, но смс не отправляет, в режиме отладки видно что срабатывает только "//пришел пакет ENQUIRE_LINK" и все, что не так
8. Артем Замолодчиков (BaHgaJI) 03.11.15 14:33
п(7) Prooa, проверьте пользователя и пароль
9. Артем Замолодчиков (BaHgaJI) 03.11.15 14:33
(7) Prooa, ENQUIRE_LINK_RESP отправляете?
10. Артем Замолодчиков (BaHgaJI) 03.11.15 14:35
(7) Prooa, или скачайте http://infostart.ru/public/393308/ там более наглядно, что приходит, что уходит
11. Алексей Мальцев (Prooa) 05.11.15 05:36
Скачал обработку все работает, а с вашей конфы не хочет
12. Артем Замолодчиков (BaHgaJI) 19.11.15 12:52
(11) Prooa, походу только у вас не работает.
скорее всего не правильное значение МатрицаДанных.SetValue(7, 4); //command_id 4=submit_sm submit_multi=21
13. Артем Замолодчиков (BaHgaJI) 19.11.15 12:54
(11) Prooa, и еще с этими данными надо поиграть, они тоже часто разные у всех бывают

МатрицаДанных.SetValue(17, 5); //source_addr_ton
МатрицаДанных.SetValue(18, 0); //source_addr_npi
14. Артем Замолодчиков (BaHgaJI) 04.12.15 12:12
(11) Prooa, нашел в чем могла быть проблема.
в submit_sm_resp иногда приходит пакет с ошибкой если оператор по какой то причине не может отправить смс.

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

КодОшибки = ВходящийПакет.GetValue(11);
Если КодОшибки <> 0 Тогда
ЗаписатьНовыйСтатусСМС("ошибка отправки");
Возврат;
КонецЕсли;


15. Nikolay Nikolay1 (nikolayvg) 10.01.16 22:29
Здравствуйте. При установке компоненты на сервер 2008 R2 Standart возникла проблема в пункте
8. Выбираем "Установка новых компонентов", и в диалоге выбираем нужную компоненту (тип файла «все файлы»).
все выбираю, но компонента в списке не появляется. Что может быть не так?
16. Артем Замолодчиков (BaHgaJI) 11.01.16 09:07
(15) nikolayvg, точно выбираете тип файла "Все файлы(*.*)" т.к. если файл в папке то он по-любому будет виден. Или в службе компонентов не появляется? Если в службе компонентов, то попробуйте любую другую компоненту добавить, а потом компоненту винсок, должна появиться.
17. Nikolay Nikolay1 (nikolayvg) 14.01.16 05:51
(15) nikolayvg, На всякий случай для остальных:
Воспользовался советом из http://infostart.ru/public/319296/ и установил Visual Basic
18. Артем Замолодчиков (BaHgaJI) 10.02.16 12:27
Если приходит ошибка 88 (0x65) надо добавить задерку при отправке смс, примерно 5 смс в секунду
19. Дамир Ахметов (Bayker) 24.05.16 14:50
Добрый день, заключили договор с мегафоном, прислал вот это:
1. IP-адрес крипто-сервера
2. IP-адрес SMPP ESME
3. IP-адрес крипто-сервера УФ ОАО "МегаФон"
4. IP-адрес SMS-центра УФ ОАО "МегаФон"
5. Ключ isakmp
6. transform-set:
7. PFS:
8. Isakmp policy

От дальнейшей помощи категорически отказывается, будет ли Ваша разработка работать с Тюменским мегафоном (если там вообще есть различия)?
20. Артем Замолодчиков (BaHgaJI) 24.05.16 17:01
(19) Bayker, не могу сказать, по идее если по протоколу SMPP то отличий никаких не должно быть
21. Steve Gordon (SGordon1) 10.06.16 12:09
Обновление лежит отдельно , не в архиве?
22. Артем Замолодчиков (BaHgaJI) 10.06.16 13:09
23. Александр Васильев (flord) 21.07.16 15:51
Никто не сталкивался с такой ситуацией. После отправки команды Bind_transceiver компонента переходит в состояние State = 8 (клиент закрыл подключение)?
24. Артем Замолодчиков (BaHgaJI) 22.07.16 08:37
(23) flord, значит ошибка в этом пакете, проверьте логин и пароль, он чувствителен к реестру. Лучше конечно узнать у оператора, что к ним приходит и в чем ошибка.
25. Александр Васильев (flord) 22.07.16 08:45
Пытаемся отправлять СМС через Мегафон СПб.

При отправке смс используем wireshark чтобы понять, почему не получается отправить смс

По логу wireshark:

1. [Connection establish request (SYN): порт сервера хххх]– отправляем запрос на установку соединения
2. [Connection establish acknowledge (SYN + ACK) : порт сервера хххх] – получаем подтверждение
3. Short Message Peer to Peer, Command: Bind_transceiver, Seq: 1, Len: 41 (пакет PDU пришлось переписать не вмещался пароль)
Length: 41
Operation: Bind_transceiver (0x00000009)
Sequence #: 1
System ID: *******
Password: *******
Version (if): 0.0
Type of number: Unknown (0x00)
Numbering plan indicator: Unknown (0x34)
Address: \001\001



4. В ответ от сервера получаем:

Transmission Control Protocol, Src Port: xxxx , Dst Port: yyyyy, Seq: 1, Ack: 42, Len: 0
Source Port: xxxx
Destination Port: yyyyy
[Stream index: 16]
[TCP Segment Len: 0]
Sequence number: 1 (relative sequence number)
Acknowledgment number: 42 (relative ack number)
Header Length: 20 bytes
Flags: 0x011 (FIN, ACK)
000. .... .... = Reserved: Not set
...0 .... .... = Nonce: Not set
.... 0... .... = Congestion Window Reduced (CWR): Not set
.... .0.. .... = ECN-Echo: Not set
.... ..0. .... = Urgent: Not set
.... ...1 .... = Acknowledgment: Set
.... .... 0... = Push: Not set
.... .... .0.. = Reset: Not set
.... .... ..0. = Syn: Not set
.... .... ...1 = Fin: Set [Expert Info (Chat/Sequence): Connection finish (FIN)]
[Connection finish (FIN)]
[Severity level: Chat]
[Group: Sequence]
[TCP Flags: *******A***F]
Window size value: 8186
[Calculated window size: 65488]
[Window size scaling factor: 8]
Checksum: 0x1182 [validation disabled]
Urgent pointer: 0
[SEQ/ACK analysis]
[This is an ACK to the segment in frame: 5265]
[The RTT to ACK the segment was: 0.026876000 seconds]
[iRTT: 0.028090000 seconds]


Нигде упоминания о полученной команде Bind_transceiver_resp в логе нет.

Обработка написана для клиент-серверного варианта.
При отправке смс пользователем запускается фоновое задание.

Сначала происходит инициализация и подключение.
Если сразу после подключения State = 7, отправляем Bind_transceiver

Далее входим в бесконечный цикл обработки State
Если сразу не получили состояние State = 7, ждем его и делаем запрос.

Основная проблема если смотреть из 1с компонента сразу после отправки
Bind_transceiver переходит в режим State = 8 (клиент закрыл подключение)


Событие DataArrival ни разу не сработало – ну оно и понятно.
Не могу понять причину такого поведения.

Админы с нашей стороны и со стороны ОпСоСа говорят, что у них никакие пакеты не режутся.
26. Артем Замолодчиков (BaHgaJI) 22.07.16 09:05
(25) flord, упоминания нет, потому что скорее всего Bind_transceiver кривой, скиньте как вы его переделали...
27. Александр Васильев (flord) 22.07.16 14:25
Функция СобратьПакет_BIND_Transceiver(sequence_number) Экспорт
                
                ИдПользователя = Справочники.СервисыSMSрассылки.Мегафон.Пользователь;
                Пароль         = Справочники.СервисыSMSрассылки.Мегафон.Пароль;
                
                ДлинаЛогина = СтрДлина(ИдПользователя);
                Если ДлинаЛогина + 1 > 16 Тогда
                               ИдПользователя = Лев(ИдПользователя, 15);
                               ДлинаЛогина = 15;
                               
                               СтрокаОшибки = "" + ТекущаяДата() + "
                               |Длина логина + нулевой символ превышает 16 символов, обрезаем.";
                               
                               ЗаписьЖурналаРегистрации("ОтправкаСМСМегафон.СобратьПакет_BIND_Transceiver",
                                               УровеньЖурналаРегистрации.Ошибка,
                                               Метаданные.Обработки.РассылкаSMSМегафон, "Метаданные.Обработки.РассылкаSMSМегафон",
                                               СтрокаОшибки);
                КонецЕсли; 
                
                ДлинаПароля = СтрДлина(Пароль);
                Если ДлинаПароля + 1 > 9 Тогда
                               Пароль = Лев(Пароль, 8);
                               ДлинаЛогина = 8;
                               
                               СтрокаОшибки = "" + ТекущаяДата() + "
                               |Длина пароля + нулевой символ превышает 9 символов, обрезаем.";
                               
                               ЗаписьЖурналаРегистрации("ОтправкаСМСМегафон.СобратьПакет_BIND_Transceiver",
                                               УровеньЖурналаРегистрации.Ошибка,
                                               Метаданные.Обработки.РассылкаSMSМегафон, "Метаданные.Обработки.РассылкаSMSМегафон",
                                               СтрокаОшибки);
                КонецЕсли; 
                
                Если Не ЗначениеЗаполнено(sequence_number) Тогда
                               sequence_number = 1;
                КонецЕсли;
                
                system_Тип = "";
                Длина_system_Тип = СтрДлина(system_Тип);
                interface_version = 4;
                addr_ton = 0;
                addr_npi = 0;
                address_range = "";
                Длина_address_range = СтрДлина(address_range);
                
                //Длина      header  id + zero           pass + zero        System_Тип + zero      interface_version   addr_ton  addr_npi address_range + zero
                ДлинаПакета = 16 + (ДлинаЛогина + 1) + (ДлинаПароля + 1) + (Длина_system_Тип + 1) +         1             + 1      + 1  + Длина_address_range + 1;
                Матрица = Новый COMSafeArray("VT_UI1", ДлинаПакета); // было 37
                
                // HEADER
                
                // command_length 4 octets
                Матрица.SetValue(0,0);
                Матрица.SetValue(1,0);
                Матрица.SetValue(2,0);
                Матрица.SetValue(3, ДлинаПакета); //command_length
                
                // command_id 4 octets
                Матрица.SetValue(4,0);
                Матрица.SetValue(5,0);
                Матрица.SetValue(6,0);
                Матрица.SetValue(7,9); // Operation: BIND Tranceiver (0x00000009)
                
                // command_id 4 octets
                Матрица.SetValue(8,0);
                Матрица.SetValue(9,0);
                Матрица.SetValue(10,0);
                Матрица.SetValue(11,0); //Не  используется  в PDU bind_transceiver. 
                
                // sequence_number 4 octets
                Матрица.SetValue(12,0);
                Матрица.SetValue(13,0);
                Матрица.SetValue(14,0);
                Матрица.SetValue(15, sequence_number); //уникальный номер последовательности bind_transceiver 
                
                Индекс = 16;
                
                // BODY
                
                // system_id  COctet String max16
                Для  НомерСтроки = 1 По ДлинаЛогина Цикл
                               Матрица.SetValue(Индекс, КодСимвола(ИдПользователя, НомерСтроки));
                               Индекс = Индекс + 1;
                КонецЦикла;
                Матрица.SetValue(Индекс,0); // NULL для логина
                Индекс = Индекс + 1;
                
                // password COctet String max9
                Для НомерСтроки = 1 По ДлинаПароля Цикл
                               Матрица.SetValue(Индекс, КодСимвола(Пароль, НомерСтроки));
                               Индекс = Индекс + 1;
                КонецЦикла;
                Матрица.SetValue(Индекс,0); // NULL для пароля
                Индекс = Индекс + 1;
                
                // system_Тип COctet String max13
                Если ЗначениеЗаполнено(system_Тип) Тогда
                               Для  НомерСтроки = 1 По Длина_system_Тип Цикл
                                               Матрица.SetValue(Индекс, КодСимвола(system_Тип, НомерСтроки));
                                               Индекс = Индекс + 1;
                               КонецЦикла;
                КонецЕсли;
                Матрица.SetValue(Индекс,0); // NULL для system_Тип
                Индекс = Индекс + 1;
                
                // interface_version
                Матрица.SetValue(Индекс, КодСимвола(interface_version));//interface_version = 4 (версия 4 = 3.4)
                Индекс = Индекс + 1;
                
                // addr_ton
                Матрица.SetValue(Индекс, addr_ton);
                Индекс = Индекс + 1;
                
                // addr_npi
                Матрица.SetValue(Индекс, addr_npi);
                Индекс = Индекс + 1;
                
                // address_range
                Если ЗначениеЗаполнено(address_range) Тогда
                               Для  НомерСтроки = 1 По Длина_address_range Цикл
                                               Матрица.SetValue(Индекс, КодСимвола(address_range, НомерСтроки));
                                               Индекс = Индекс + 1;
                               КонецЦикла;
                КонецЕсли; 
                Матрица.SetValue(Индекс,0); // NULL для address_range
                Индекс = Индекс + 1;
                
                // увеличиваем номер запроса
                sequence_number = sequence_number + 1;
                
                Возврат Матрица;
                
КонецФункции
...Показать Скрыть
28. Артем Замолодчиков (BaHgaJI) 22.07.16 15:13
(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);

Там где циферки слева соотвественно ваш индекс.
Просто эти значения четко подобраны и менять их не стоит.
29. Артем Замолодчиков (BaHgaJI) 22.07.16 15:19
(27) flord, так же у вас не верно Матрица.SetValue(Индекс, КодСимвола(interface_version));//interface_version = 4 (версия 4 = 3.4)

Должно быть так interface_version 0x34 = 52
30. Артем Замолодчиков (BaHgaJI) 22.07.16 15:22
(27) flord, и вот эти должны быть = 1

addr_ton = 0;
addr_npi = 0;
31. Александр Васильев (flord) 22.07.16 15:28
Если оставить так – то «съедаются» последние несколько символов пароля.


Если смотреть описание 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);
32. Артем Замолодчиков (BaHgaJI) 22.07.16 18:46
(31) flord, Уже не помню за что отвечают, что-то разделитель, что то просто не нужно и по умолчанию 0, методом тыка подбирал, как пароль может съедаться? попробуйте вот так:
Функция СобратьПакет_BIND_Transceiver(sequence_number) Экспорт
                
                ИдПользователя = Справочники.СервисыSMSрассылки.Мегафон.Пользователь;
                Пароль         = Справочники.СервисыSMSрассылки.Мегафон.Пароль;
                
                ДлинаЛогина = СтрДлина(ИдПользователя);
                Если ДлинаЛогина + 1 > 16 Тогда
                               ИдПользователя = Лев(ИдПользователя, 15);
                               ДлинаЛогина = 15;
                               
                               СтрокаОшибки = "" + ТекущаяДата() + "
                               |Длина логина + нулевой символ превышает 16 символов, обрезаем.";
                               
                               ЗаписьЖурналаРегистрации("ОтправкаСМСМегафон.СобратьПакет_BIND_Transceiver",
                                               УровеньЖурналаРегистрации.Ошибка,
                                               Метаданные.Обработки.РассылкаSMSМегафон, "Метаданные.Обработки.РассылкаSMSМегафон",
                                               СтрокаОшибки);
                КонецЕсли; 
                
                ДлинаПароля = СтрДлина(Пароль);
                Если ДлинаПароля + 1 > 9 Тогда
                               Пароль = Лев(Пароль, 8);
                               ДлинаЛогина = 8;
                               
                               СтрокаОшибки = "" + ТекущаяДата() + "
                               |Длина пароля + нулевой символ превышает 9 символов, обрезаем.";
                               
                               ЗаписьЖурналаРегистрации("ОтправкаСМСМегафон.СобратьПакет_BIND_Transceiver",
                                               УровеньЖурналаРегистрации.Ошибка,
                                               Метаданные.Обработки.РассылкаSMSМегафон, "Метаданные.Обработки.РассылкаSMSМегафон",
                                               СтрокаОшибки);
                КонецЕсли; 
                
                Если Не ЗначениеЗаполнено(sequence_number) Тогда
                               sequence_number = 1;
                КонецЕсли;
                
                system_Тип = "";
                Длина_system_Тип = СтрДлина(system_Тип);
                interface_version = 4;
                addr_ton = 0;
                addr_npi = 0;
                address_range = "";
                Длина_address_range = СтрДлина(address_range);
                
                //Длина      header  id + zero           pass + zero        System_Тип + zero      interface_version   addr_ton  addr_npi address_range + zero
                ДлинаПакета = 16 + (ДлинаЛогина + 1) + (ДлинаПароля + 1) + (Длина_system_Тип + 1) +         1             + 1      + 1  + Длина_address_range + 1;
                Матрица = Новый COMSafeArray("VT_UI1", ДлинаПакета); // было 37
                
                // HEADER
                
                // command_length 4 octets
                Матрица.SetValue(0,0);
                Матрица.SetValue(1,0);
                Матрица.SetValue(2,0);
                Матрица.SetValue(3, ДлинаПакета); //command_length
                
                // command_id 4 octets
                Матрица.SetValue(4,0);
                Матрица.SetValue(5,0);
                Матрица.SetValue(6,0);
                Матрица.SetValue(7,9); // Operation: BIND Tranceiver (0x00000009)
                
                // command_id 4 octets
                Матрица.SetValue(8,0);
                Матрица.SetValue(9,0);
                Матрица.SetValue(10,0);
                Матрица.SetValue(11,0); //Не  используется  в PDU bind_transceiver. 
                
                // sequence_number 4 octets
                Матрица.SetValue(12,0);
                Матрица.SetValue(13,0);
                Матрица.SetValue(14,0);
                Матрица.SetValue(15, sequence_number); //уникальный номер последовательности bind_transceiver 
                
                Индекс = 16;
                
                // BODY
                
                // system_id  COctet String max16
                Для  НомерСтроки = 1 По ДлинаЛогина Цикл
                               Матрица.SetValue(Индекс, КодСимвола(ИдПользователя, НомерСтроки));
                               Индекс = Индекс + 1;
                КонецЦикла;
                Матрица.SetValue(Индекс,0); // NULL для логина
                Индекс = Индекс + 1;
                
                // password COctet String max9
                Для НомерСтроки = 1 По ДлинаПароля Цикл
                               Матрица.SetValue(Индекс, КодСимвола(Пароль, НомерСтроки));
                               Индекс = Индекс + 1;
                КонецЦикла;
                Матрица.SetValue(Индекс,0); // NULL для пароля
                Индекс = Индекс + 1;
         
Матрица.SetValue(Индекс ,0); 
 Индекс = Индекс + 1;
Матрица.SetValue(Индекс ,0); 
 Индекс = Индекс + 1;
Матрица.SetValue(Индекс ,0); 
 Индекс = Индекс + 1;
Матрица.SetValue(Индекс ,52); 
 Индекс = Индекс + 1;
Матрица.SetValue(Индекс ,1); 
 Индекс = Индекс + 1;
Матрица.SetValue(Индекс ,1); 
 Индекс = Индекс + 1;
Матрица.SetValue(Индекс ,0);
                
                Возврат Матрица;
                
КонецФункции
...Показать Скрыть
33. Александр Васильев (flord) 29.07.16 09:51
(32) BaHgaJI, Выяснилось, что по нашему заключенному договору с Мегафоном в этой системе Bind_transceiver не поддерживается
(Либо у Мегафона в принципе не поддерживается Bind_transceiver).
Работает Bind_transmitter.

A PDU на запрос BIND был правильным – изменил команду и заработало.
Спасибо за помощь!
34. Артем Замолодчиков (BaHgaJI) 29.07.16 11:03
(33) flord, Вот оно че, у нас мегафон на Bind_transceiver работает
35. Владимир Слинько (Revolver_61) 02.08.16 14:45
Подскажите, что означает ошибка "Код Ошибки Постоянного Приложения Приемника ESME (ESME Receiver Permanent App Error Code)" ?
Приходит в пакете submit_sm_resp
36. Артем Замолодчиков (BaHgaJI) 03.08.16 08:30
(35) Revolver_61,
1. неверные параметры в отправленном submit_sm.
2. от smsc других регионов и операторов пришел ответ о невозможности принять смс по разным причинам.
3. закончились деньги на лицевом счету, необходимо обратиться к своему менеджеру для выяснения вопроса.
37. Артем Замолодчиков (BaHgaJI) 03.08.16 08:31
(35) Revolver_61, часто эта ошибка приходит если отправляется смс на городской номер
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа