пишу маленький плагинчик для отправки уведомлений на смс через gsm модем через AT команды в PDU формате.
и возник вопрос, как отправлять длинные сообщения, чтобы они пришли и у получателя собрались и отобразились как одно целое?
одиночные — прекрасно могу кодировать, а вот длинные — нет...
вот пример:
00 — использовать smsc из карты
41 — pdu type
00 — что в качестве номера телефона отправителя будет использоваться номер карты --- ТУТ МОЖНО ПОДСТАВИТЬ ДРУГОЙ НОМЕР???
0A — длина номера получателя
91 — международный формат нормера получателя
2143658709 — номер получателя = 1234567890
00 — Идентификатор протокола
00 — кодировка 7 бит
00 — валидность доставки = 5 минут
0C — длины данных далее
050003070101 — добавка для длинного сообщения
05 — длина заголовка
00 — информация о том, что "длинное" собщение
03 — длина информационных данных
07 — идентфицикатор уникальный для всех составных сообщений
01 — всего частей в сообщении
01 — номер текущей части
E8329BFD06 — само сообщение = hello
в итоге если отправить сообщение — приходят иероглифы,
если воспользоваться pduspy — всё разбирается правильно, кроме самого текста сообщения — тоже ерунда какая то...
если выкинуть часть 050003070101 и поставить длину данных в 5 — сообщение приходит корректно..
Здравствуйте, HighTower, Вы писали:
HT>Приветствую. HT>пишу маленький плагинчик для отправки уведомлений на смс через gsm модем через AT команды в PDU формате. HT>и возник вопрос, как отправлять длинные сообщения, чтобы они пришли и у получателя собрались и отобразились как одно целое? HT>одиночные — прекрасно могу кодировать, а вот длинные — нет...
Ну что, разобрался? У меня такая же задачка стоит. Кстати, с еще одной проблемой столкнулся — не приходит сообщение, если указать номер SMS-центра. Т.е. брать не с sim, а тупо задать. Не пробовал? Просто тестил на модеме Мегафон — не отправляются сообщения через него. Попробовал получить номер SMS-центра от него — вернуло фигню. Поэтому и решил, что там номер не прописан. Да в принципе, и с телефона не уходят SMS, если номер SMS-центра задать в коде. Пробовал декодировать собранные мною сообщения с помощью прог — все отлично собрано, читается. Есть соображения какие-то?
Здравствуйте, Alexio, Вы писали:
A>Здравствуйте, HighTower, Вы писали:
HT>>Приветствую. HT>>пишу маленький плагинчик для отправки уведомлений на смс через gsm модем через AT команды в PDU формате. HT>>и возник вопрос, как отправлять длинные сообщения, чтобы они пришли и у получателя собрались и отобразились как одно целое? HT>>одиночные — прекрасно могу кодировать, а вот длинные — нет...
A>Ну что, разобрался? У меня такая же задачка стоит. Кстати, с еще одной проблемой столкнулся — не приходит сообщение, если указать номер SMS-центра. Т.е. брать не с sim, а тупо задать. Не пробовал? Просто тестил на модеме Мегафон — не отправляются сообщения через него. Попробовал получить номер SMS-центра от него — вернуло фигню. Поэтому и решил, что там номер не прописан. Да в принципе, и с телефона не уходят SMS, если номер SMS-центра задать в коде. Пробовал декодировать собранные мною сообщения с помощью прог — все отлично собрано, читается. Есть соображения какие-то?
я в свое время забил на данную проблему, подозревал, что решение будет модемозависимо, прост бью текст смс по модулю 160 в латинице и шлю в несколько мессаг, один фиг на биллинге они считаются как множество
Здравствуйте, Pepel, Вы писали:
P>я в свое время забил на данную проблему, подозревал, что решение будет модемозависимо, прост бью текст смс по модулю 160 в латинице и шлю в несколько мессаг, один фиг на биллинге они считаются как множество
Да я тоже так и решил делать. Только у меня никак 160 русских символов не получается отправить. Только 69. Дальше текст затирается с начала, а потом и вовсе перестает приходить. Кодирую в UTF-16 (UCS2). Кстати, заметил нюанс. Если слать сразу одну часть за другой, то последняя не приходит. Если слать 3 части, то не приходит 2я. Эмпирически вычислил минимальный интервал — 5 сек. Есть идеи по этому поводу?
Здравствуйте, Alexio, Вы писали:
A>Здравствуйте, Pepel, Вы писали:
P>>я в свое время забил на данную проблему, подозревал, что решение будет модемозависимо, прост бью текст смс по модулю 160 в латинице и шлю в несколько мессаг, один фиг на биллинге они считаются как множество
A>Да я тоже так и решил делать. Только у меня никак 160 русских символов не получается отправить. Только 69. Дальше текст затирается с начала, а потом и вовсе перестает приходить. Кодирую в UTF-16 (UCS2). Кстати, заметил нюанс. Если слать сразу одну часть за другой, то последняя не приходит. Если слать 3 части, то не приходит 2я. Эмпирически вычислил минимальный интервал — 5 сек. Есть идеи по этому поводу?
мне думается, Вы шлете sms не дожидаясь прихода подтверждения об отсылке предыдущей sms — gsm модемы этого не любят, схема такая "послал sms — получил подтверждение об успехе/неуспехе — послал следующее sms — ... " ;
а в кириллице — да — 140 байт (7 битная кодировка) дают 70 символов максимум, в латинице 160 байт в однобайтной кодировке дают 160 символов
Здравствуйте, Pepel, Вы писали:
P>мне думается, Вы шлете sms не дожидаясь прихода подтверждения об отсылке предыдущей sms — gsm модемы этого не любят, схема такая "послал sms — получил подтверждение об успехе/неуспехе — послал следующее sms — ... " ;
Вот с этого места, если можно, подробнее пожалуйста
После отправки каждой команды жду результата выполнения, после отправки самого текста опять жду и закрываю порт. А надо еще дождаться получения подтверждения об отсылке?? И в каком оно виде придет?
Здравствуйте, Alexio, Вы писали:
A>Здравствуйте, Pepel, Вы писали:
P>>мне думается, Вы шлете sms не дожидаясь прихода подтверждения об отсылке предыдущей sms — gsm модемы этого не любят, схема такая "послал sms — получил подтверждение об успехе/неуспехе — послал следующее sms — ... " ;
A>Вот с этого места, если можно, подробнее пожалуйста
A>После отправки каждой команды жду результата выполнения, после отправки самого текста опять жду и закрываю порт. А надо еще дождаться получения подтверждения об отсылке?? И в каком оно виде придет?
Вы все правильно делаете, я имел ввиду тоже самое, единственный вопрос — зачем Вы закрываете порт после отсылки каждого sms ? — ваши проблемы могут быть именно от таких пенетраций с закрытием/открытием порта — там ж свои тайминги, переходите на постоянный сеанс работы c ним.
Здравствуйте, Pepel, Вы писали:
P>Вы все правильно делаете, я имел ввиду тоже самое, единственный вопрос — зачем Вы закрываете порт после отсылки каждого sms ? — ваши проблемы могут быть именно от таких пенетраций с закрытием/открытием порта — там ж свои тайминги, переходите на постоянный сеанс работы c ним.
ОК, поставлю эксперимент — буду отправлять все в одну сессию. Спасибо за совет.