Страница 19 из 21
Re: Разборка SMS и отправка на e-mail
Добавлено: 04 июн 2023, 08:39
pepelxl
Удаляются в любом случае. Надо комментировать ат команду удаления в файле extract. Весь остальной код по парсингу находится в файлах спутниках.
Re: Разборка SMS и отправка на e-mail
Добавлено: 04 июн 2023, 08:58
pepelxl
Да и если хотите разобраться сами, то зачем лазить по форумам? Не легче обратиться к первоисточнику? Наберите в Гугле - gsm 03.40 например и получите исчерпывающую информацию.
Re: Разборка SMS и отправка на e-mail
Добавлено: 07 июн 2023, 16:50
DyadyaGenya
pepelxl писал(а): ↑04 июн 2023, 08:58
Да и если хотите разобраться сами, то зачем лазить по форумам? Не легче обратиться к первоисточнику? Наберите в Гугле - gsm 03.40 например и получите исчерпывающую информацию.
К сожалению не проще. Я так сказать, начинающий. Там все слишком сложно написано. И слишком много работы с битами. По сути, для перекодировки самого текста есть несколько сторонних функций, поэтому не слишком беспокоюсь про работу с битами.
В принципе на данный момент я почти со всеми полями PDU разобрался. Остались непонятными UDL/UDH. Пользовательские заголовки. Никак не могу понять, как определить, из скольки полей (бит) будут состоять эти заголовки. Уже если знаю из скольки, напр, подсмотрел программой PDUspy, то понимаю как дальше с этими полями работать., в том числе и как определить, составное это смс или нет и какая это часть составного смс.
Хотя ещё вопрос по типу смс. Я то это поле вырезаю из PDU, но не понимаю, как читать тип. Знаю, что 04 - SMS-DELIVER. Но оно может быть 44 или 60. Эти значения в тестовых смс на моем модеме. И как вообще считать эти значения, если вдруг будут другие.
Re: Разборка SMS и отправка на e-mail
Добавлено: 08 июн 2023, 00:18
DyadyaGenya
pepelxl писал(а): ↑04 июн 2023, 08:39
Удаляются в любом случае. Надо комментировать ат команду удаления в файле extract. Весь остальной код по парсингу находится в файлах спутниках.
Закоментировать нужно всю эту секцию?
Код: Выделить всё
# стираем
:if ([:len ($curStruct->"index")] > 0) do={
:set $tmp [$chat ($m->"type") ($m->"name") "AT+CMGD=1,1"]
:if (($tmp->"f")) do={
:foreach i in=($curStruct->"index") do={
:local iterError 5
:while ($iterError > 0) do={
:set $tmp [$chat ($m->"type") ($m->"name") ("AT+CMGD=".[:tostr $i])]
:set $iterError ($iterError - 1)
:if (!($tmp->"f")) do={:set $iterError 0}}
:if (($tmp->"f")) do={:if (($m->"model")~"R11e" != true) do={
:set $tmp2 "wrong answer in CMGD\r\n"; throw;} else={:set ($tmp->"f") false}}
}}}
Re: Разборка SMS и отправка на e-mail
Добавлено: 08 июн 2023, 01:19
DyadyaGenya
Ещё хотел уточнить про поле TP-MTI. Правильно ли я понимаю, что две цифры этого поля нужно из hex перевести в битовое представление
и в них рассматривать значение каждого бита в соответствии с таблицей? Тоесть "04" сделать как "00000100", "40" как "01000000", "44" как "01000100", "60" как "01100000"
Re: Разборка SMS и отправка на e-mail
Добавлено: 08 июн 2023, 13:13
DyadyaGenya
И в продолжение уточнений. Если я правильно понял, то должно получится нечто такое:
Код: Выделить всё
04 как:
1.=0 TP-MTI SMS-DELIVER (поскольку 0)
2.=0 TP-MMS Есть сообщения, поскольку 0
3.=0
4.=0
5.=0
6.=1 TP-SRI Будет отправлен отчет, поскольку 1
7.=0 TP-UDHI блок User Data содержит только сообщение, поскольку 0
8.=0 TP-RP Не запрашивается путь для ответа, поскольку 0
40 как:
1.=0 TP-MTI SMS-DELIVER (поскольку 0)
2.=1 TP-MMS Нет сообщений, поскольку 1
3.=0
4.=0
5.=0
6.=0 TP-SRI Не будет отправлен отчет, поскольку 0
7.=0 TP-UDHI блок User Data содержит только сообщение, поскольку 0
8.=0 TP-RP Не запрашивается путь для ответа, поскольку 0
44 как:
1.=0 TP-MTI SMS-DELIVER (поскольку 0)
2.=1 TP-MMS Нет сообщений, поскольку 1
3.=0
4.=0
5.=0
6.=1 TP-SRI Будет отправлен отчет, поскольку 1
7.=0 TP-UDHI блок User Data содержит только сообщение, поскольку 0
8.=0 TP-RP Не запрашивается путь для ответа, поскольку 0
60 как:
1.=0 TP-MTI SMS-DELIVER (поскольку 0)
2.=1 TP-MMS Нет сообщений, поскольку 1
3.=1
4.=0
5.=0
6.=0 TP-SRI Не будет отправлен отчет, поскольку 0
7.=0 TP-UDHI блок User Data содержит только сообщение, поскольку 0
8.=0 TP-RP Не запрашивается путь для ответа, поскольку 0
Но я точно знаю, что там где 40, 44 и 60 есть ещё дополнительные поля заголовка, потому что располагаются в составном смс. Тоесть смс поделено на части и присылается частями, а потом уже модем/телефон собирает все вместе. И заголовки для сбора частей смс там есть
Re: Разборка SMS и отправка на e-mail
Добавлено: 10 июн 2023, 14:29
DyadyaGenya
В предыдущем вопросе нужно было в обратном порядке делать.
Ну а так, смс уже разобрал на части. Осталось склеить составные смс и перекодировать.
Re: Разборка SMS и отправка на e-mail
Добавлено: 10 июн 2023, 17:24
pepelxl
Не забудьте результат выложить. А то что то многие "забывают".
Re: Разборка SMS и отправка на e-mail
Добавлено: 12 июн 2023, 12:28
DyadyaGenya
pepelxl писал(а): ↑10 июн 2023, 17:24
Не забудьте результат выложить. А то что то многие "забывают".
Полностью готовое или то, что сейчас есть?
И у меня есть вопросы по перекодированию и склеиванию. К сожалению я не настолько хорошо разбираюсь в скриптах микротика, чтобы понять всё, что у вас сделано в вашем скрипте. На данный момент для пробы взял сторонний перекодировщик отсюда
https://forum.mikrotik.com/viewtopic.ph ... 51#p993440 и затем вот этот
https://forum.mikrotik.com/viewtopic.ph ... 51#p992792
Это перекодировка на случай, если кодировка была 7 бит, тоесть поле DCS = "00"
Выглядит это так:
Код: Выделить всё
> :put [$HexGSM7toCP1252 ([$pdutogsm7 ("\C8\32\9B\FD\06\5D\DF\72\36\39\04") ] )]
Hello World!
Вроде бы распечатывает. Но это только с простыми, не составными смс. Если смс составная, то нужно брать не только сам текст, но и заголовки UDH и перекодировать все по отдельности, а потом склеивать. Возможно я ошибаюсь, но у вас склейка и перекодировка выглядят по-другому. Можете подсказать, действительно нужно при перекодировке составного смс в строку с текстом добавлять ещё и заголовки по типу, если строка текста составного смс выглядит так: "DCE532B94C06CDDF6F37" то к ней нужно добавить ещё и "050003590303" или все же можно перекодировать без этого?
Re: Разборка SMS и отправка на e-mail
Добавлено: 12 июн 2023, 14:02
pepelxl
Я уже ни черта не помню. Но кажется, что как раз в 7бит надо парсить отдельно и собирать вместе, а всё остальное надо собрать сначала, а потом парсить.