Разборка SMS и отправка на e-mail
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
-
- Сообщения: 164
- Зарегистрирован: 23 июл 2013, 18:47
Удаляются в любом случае. Надо комментировать ат команду удаления в файле extract. Весь остальной код по парсингу находится в файлах спутниках.
-
- Сообщения: 164
- Зарегистрирован: 23 июл 2013, 18:47
Да и если хотите разобраться сами, то зачем лазить по форумам? Не легче обратиться к первоисточнику? Наберите в Гугле - gsm 03.40 например и получите исчерпывающую информацию.
-
- Сообщения: 31
- Зарегистрирован: 08 май 2023, 01:29
К сожалению не проще. Я так сказать, начинающий. Там все слишком сложно написано. И слишком много работы с битами. По сути, для перекодировки самого текста есть несколько сторонних функций, поэтому не слишком беспокоюсь про работу с битами.
В принципе на данный момент я почти со всеми полями PDU разобрался. Остались непонятными UDL/UDH. Пользовательские заголовки. Никак не могу понять, как определить, из скольки полей (бит) будут состоять эти заголовки. Уже если знаю из скольки, напр, подсмотрел программой PDUspy, то понимаю как дальше с этими полями работать., в том числе и как определить, составное это смс или нет и какая это часть составного смс.
Хотя ещё вопрос по типу смс. Я то это поле вырезаю из PDU, но не понимаю, как читать тип. Знаю, что 04 - SMS-DELIVER. Но оно может быть 44 или 60. Эти значения в тестовых смс на моем модеме. И как вообще считать эти значения, если вдруг будут другие.
-
- Сообщения: 31
- Зарегистрирован: 08 май 2023, 01:29
Закоментировать нужно всю эту секцию?
Код: Выделить всё
# стираем
: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}}
}}}
-
- Сообщения: 31
- Зарегистрирован: 08 май 2023, 01:29
Ещё хотел уточнить про поле TP-MTI. Правильно ли я понимаю, что две цифры этого поля нужно из hex перевести в битовое представление
и в них рассматривать значение каждого бита в соответствии с таблицей? Тоесть "04" сделать как "00000100", "40" как "01000000", "44" как "01000100", "60" как "01100000"

и в них рассматривать значение каждого бита в соответствии с таблицей? Тоесть "04" сделать как "00000100", "40" как "01000000", "44" как "01000100", "60" как "01100000"

Последний раз редактировалось DyadyaGenya 08 июн 2023, 14:56, всего редактировалось 1 раз.
-
- Сообщения: 31
- Зарегистрирован: 08 май 2023, 01:29
И в продолжение уточнений. Если я правильно понял, то должно получится нечто такое:
Но я точно знаю, что там где 40, 44 и 60 есть ещё дополнительные поля заголовка, потому что располагаются в составном смс. Тоесть смс поделено на части и присылается частями, а потом уже модем/телефон собирает все вместе. И заголовки для сбора частей смс там есть
Код: Выделить всё
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
-
- Сообщения: 31
- Зарегистрирован: 08 май 2023, 01:29
В предыдущем вопросе нужно было в обратном порядке делать.
Ну а так, смс уже разобрал на части. Осталось склеить составные смс и перекодировать.
Ну а так, смс уже разобрал на части. Осталось склеить составные смс и перекодировать.
-
- Сообщения: 164
- Зарегистрирован: 23 июл 2013, 18:47
Не забудьте результат выложить. А то что то многие "забывают".
-
- Сообщения: 31
- Зарегистрирован: 08 май 2023, 01:29
Полностью готовое или то, что сейчас есть?
И у меня есть вопросы по перекодированию и склеиванию. К сожалению я не настолько хорошо разбираюсь в скриптах микротика, чтобы понять всё, что у вас сделано в вашем скрипте. На данный момент для пробы взял сторонний перекодировщик отсюда 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!
-
- Сообщения: 164
- Зарегистрирован: 23 июл 2013, 18:47
Я уже ни черта не помню. Но кажется, что как раз в 7бит надо парсить отдельно и собирать вместе, а всё остальное надо собрать сначала, а потом парсить.