Этот раздел разделен на две части:
- Содержание — каково содержание сообщений ELS.
- Форматы — как эти сообщения отправляются и как их декодировать (при необходимости).
Содержание
ЭЛС V1
Сообщения ELS, отправляемые через SMS, соответствуют последней спецификации ETSI AML . Это известно как ELS V1, и это наиболее распространенный подход, выбранный партнерами ELS. Ниже приведены наиболее актуальные разделы:
Имя ключа | Ценить | Единицы | Пример |
A"ML | Версия | - | 1 |
lt | Широта | степени | +37.42175 |
lg | Долгота | степени | -122,08461 |
top | Временная метка местоположения | ггггММддЧЧммсс по времени UTC | 20150613010948 |
rd | Точность местоположения | метры | 20,0 |
lc | Уверенность в местоположении | Процент доверия | 68 |
pm | Метод позиционирования (Wi-Fi, GPS, сотовая связь, ноль) | «В», «Г», «В», «Н» | Вт |
si | IMSI (содержит только первые 6 цифр исходного IMSI, остальные цифры заменяются на 0) | - | 123456000000000 |
ei | IMEI | - | 355458061005220 |
mcc | Сеть МСС | - | 310 |
mnc | Сеть МНК | - | 260 |
ml | Длина сообщения (включая длину сообщения и заголовок) | - | 123 |
Метод позиционирования
Нулевое местоположение
Примеры
Нет местоположения:
A"ML=1;lt=+00.00000;lg=+000.00000;rd=N;top=20220131173734;lc=0;pm=N;si=234159000000000;ei=123456789012345;mcc=234;mnc=15;ml=127
Местоположение рассчитано:
A"ML=1;lt=+51.53321;lg=-0.12601;rd=14;top=20220131171748;lc=68;pm=W;si=234159000000000;ei=123456789012345;mcc=234;mnc=15;ml=126
ЭЛС Бета
Экспериментальный формат, используемый несколькими партнерами, — это ELS Beta, наш экспериментальный контент, который дает партнерам возможность попробовать себя в разных областях.
Ниже приведены наиболее актуальные разделы:
Имя ключа | Ценить | Единицы | Пример |
A"ML | Версия | - | 2 |
en | Номер службы экстренной помощи | - | 911 |
et | Временная метка экстренного вызова | Время эпохи UNIX в секундах (целое число) | 1593187189 |
lo | Местоположение (широта, долгота, точность) — широта и долгота должны быть сокращены до 5 десятичных знаков, точность до 1 десятичного знака — точность 0 означает неизвестность. | Градусы (с плавающей запятой), Градусы (с плавающей запятой), Метры (с плавающей запятой) | 37.42175,-122.08461,20.1 |
lt | Время местоположения (относительно времени чрезвычайной ситуации) — это поле можно игнорировать, если поле местоположения («lo») отсутствует или поле метки времени («et») отсутствует. | Секунды (целое число) | 5 |
lc | Уверенность в местоположении | Процент доверия (целое число) | 68 |
lz | Вертикальное местоположение (высота, вертикальная точность) — это поле можно игнорировать, если поле местоположения («lo») отсутствует — все поля обрезаются до 1 десятичного знака — точность 0 означает неизвестность | Метры (с плавающей запятой), Метры (с плавающей запятой) | -10.1,10.1 |
ls | Источник местоположения (Wi-Fi, Сотовая связь, GPS, Сохранено, Неизвестно) — это поле можно игнорировать, если поле местоположения («lo») отсутствует. | «W», «G», «C», «F», «U» | Вт |
ei | IMEI | - | 355458061005220 |
nc | Сеть MCC/MNC | - | 310260 |
hc | Главная МНК/МНК | - | 310260 |
lg | Языковые теги | IETF BCP 47 | ru-US |
Уровень уверенности
Высота над уровнем моря (ось Z)
ELS сообщает о вертикальном местоположении и точности в сообщениях ELS Beta. Высота lz
указывается в метрах над эталонным эллипсоидом WGS84 (WGS — это эталонная всемирная геодезическая система, используемая GPS), а точность — в метрах (высота, вертикальная точность). Это поле можно игнорировать, если поле местоположения ( lo
) не присутствует. Все поля усечены до 1 десятичной точки, а точность 0.0
представляет собой unknown
. Вертикальная точность определяется так же, как и точность определения местоположения, а процентиль достоверности устанавливается партнером. По умолчанию установлена достоверность 68%. Дополнительную информацию можно найти в документации Android для getVerticalAccuracyMeters() .
Примеры
Местоположение еще не рассчитано. Случай:
A"ML=2;en=911;et=1643816841;ei=123456789012345;nc=23415;hc=23415
Местоположение успешно вычислено:
A"ML=2;en=911;et=1643816929;lo=51.53321,-0.12601,14.7;lt=6;lc=68;lz=77.6,1.0;ls=W;ei=123456789012345;nc=23415;hc=23415
Форматы
Сообщения ELS через SMS можно отправлять в следующих форматах:
- Текстовое SMS : Обычное SMS-сообщение. Этот формат поддерживается начиная с Android P.
- SMS с данными : содержание сообщения точно такое же, как и текстовое SMS, но оно закодировано (подробнее ниже). Этот формат поддерживается любым устройством Android, совместимым с ELS.
Текстовое СМС
Чтение и анализ текстовых SMS относительно просты. Многие операторы мобильной связи предлагают эту услугу и могут предоставить вам API-интерфейсы push или pull для получения содержимого сообщений, отправленных на стандартный номер телефона.
СМС-данные
Формат обычного текстового SMS поддерживается начиная с Android P. Старые устройства будут отправлять сообщения ELS с использованием SMS с данными, которые необходимо декодировать. SMS-сообщения ELS с данными кодируются 7-битным набором символов GSM 03.38 по умолчанию, а затем устанавливаются в качестве двоичной полезной нагрузки SMS с данными.
Точное определение SMS с данными в отличие от обычного SMS будет рассмотрено позже. Точное определение 7-битной кодировки GSM 03.38 можно найти в 3GPP 23.038 (см. раздел 6.1.2.1.1).
Раскодировать данные SMS
В целях использования Google SMS для ELS ELS касается только SMS с телефона в центр обслуживания мобильной связи (SMSC) — сообщения типа SMS-SUBMIT. SMSC должны иметь возможность без проблем получать эти сообщения, поскольку они являются частью обычного стандарта SMS (однако на практике мы наблюдали проблемы с несколькими MNO, начиная от настроек инфраструктуры и политик и заканчивая трудностями правильного декодирования SMS с данными). Далее ELS рассматривает сообщение SMS-SUBMIT от трубки к SMSC, которое соответствует обычным стандартам SMS (GSM 3.40). ELS определяет SMS с данными как подмножество обычных SMS, которые:
- В заголовке SMS установлен флаг User-Data-Header-Indicator (6-й бит первого октета сообщения GSM 03.40 или 3GPP 23.040).
- Содержит заголовок пользовательских данных в пользовательских данных SMS.
- Заголовок пользовательских данных содержит адрес порта приложения, идентификатор информационного элемента (IEI).
ELS необходимо отправлять SMS таким образом, а не обычное SMS, чтобы гарантировать, что SMS-сообщения ELS Data не появятся в приложении обмена сообщениями на устройстве Android. Пример закодированного SMS представлен ниже, чтобы лучше объяснить это.
Обратите внимание, что мы не указываем здесь конкретную схему кодирования данных (DCS). DCS используется для идентификации кодировки в сегменте пользовательских данных. Однако в обозримом будущем схема кодирования данных всегда будет настроена на 8-битные данные, чтобы обеспечить максимальную гибкость, а сами фактические данные будут кодироваться с помощью 7-битного алфавита по умолчанию GSM 03.38. Таким образом, каждый 7-битный закодированный элемент будет занимать только 7 бит, а не 8 бит.
Учитывая, что сегмент пользовательских данных имеет максимальную длину 140 байт и что минимальный размер заголовка пользовательских данных, включающего информацию о порте, составляет 7 байт, для кодирования остается максимум 133 байта (152 7-битных закодированных элемента). фактическое экстренное сообщение. Эти байты могут быть декодированы для выявления передаваемого SMS-сообщения с данными ELS.
Пример
Таким образом, после декодирования этого примера SMS-сообщения с данными у нас остались двоичные данные пользователя в этой шестнадцатеричной строке:
415193D98BEDD8F4DEECE6A2C962B7DA8E7DEEB56232990B86A3D9623B39B92783EDE86F784F068BD560B6D80C1683E568B81D7BDCB3E176F076EFB89BA77B39DCCD56A3C966B15D39DD9BD570B2590E56CBC168B21A4DB66B8FC7BD590CB66BBBC73D990DB66BB37B31D94CC12CBBCF74B40E1493CD1A
Декодировать GSM 03.38
В следующем примере декодируется первая пара октетов, остальное оставлено читателю в качестве упражнения. Мы предлагаем обратиться к 3GPP 23.038 и использовать множество полезных онлайн-инструментов (например, http://smstools3.kekekasvi.com/topic.php?id=288 ). В столбце «Октеты» выделенные желтым цветом разделы представляют биты, которые не используются в текущем септете и остаются для следующего септета. В столбце «Септеты» выделенные желтым цветом разделы представляют биты предыдущего октета.
Шестигранник | Октеты | Септеты | Персонаж (шестнадцатеричный) |
41 | 0 1000001 | 1000001 | A (41) |
51 | 01 010001 | 010001 0 | " (22) |
93 | 100 10011 | 10011 01 | M (4D) |
D9 | 1101 1001 | 1001 100 | L (4C) |
8B | 10001 011 | 011 1101 | = (3D) |
ED | 111011 01 | 01 10001 | 1 (31) |
D8 | 1101100 0 | 0 111011 | ; (3B) |
|
| 1101100 | l (6C) |
F4 | 1 1110100 | 1110100 | t (74) |
DE | 11 011110 | 011110 1 | = (3D) |
Конечным результатом здесь является то, что предыдущее сообщение можно декодировать в следующую строку:
A"ML=1;lt=37.42175;lg=-122.08461;rd=20;top=20150613010948;lc=68;pm=G;si=987654231;ei=358239059042542;mcc=310;mnc=260;ml=123
Эти SMS должны быть декодированы с помощью большинства общедоступных программ для SMS.