Spécification de SMS

Cette section se compose de deux parties:

  1. Contenu : contenu des messages SLU.
  2. Formats : comment ces messages sont envoyés et comment les décoder (si nécessaire)

Contenu

SLU V1

Les messages SLU envoyés par SMS sont conformes à la dernière spécification ETSI AML. Ce est appelée ELS V1. Il s'agit de l'approche la plus couramment choisie par les partenaires ELS. La les sections les plus pertinentes sont les suivantes:

Nom de la clé Valeur Unités Exemple
A"ML Version - 1
lt Latitude degrés +37,42175
lg Longitude degrés -122,08461
top Horodatage du lieu aaaaMMjjHHmmss dans l'heure UTC 20150613010948
rd Précision de la localisation mètres 20.0
lc Fiabilité de l'emplacement Confiance en pourcentage 68
pm Méthode de positionnement (Wi-Fi, GPS, cellulaire, valeur nulle) "W", "G", "C", "N" W
si IMSI (ne contient que les 6 premiers chiffres de l'IMSI d'origine, les autres chiffres) sont remplacés par 0). - 123456000000000
ei Code IMEI - 355458061005220
mcc CM du réseau - 310
mnc Network MNC - 260
ml Longueur du message (y compris la longueur et l'en-tête du message) - 123

Méthode de positionnement

Emplacement nul

Exemples

Aucun emplacement:

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

Position calculée:

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

SLU (bêta)

Un format expérimental utilisé par quelques partenaires est le format ELS bêta, offrant aux partenaires la possibilité d'essayer différents domaines.

Les sections les plus pertinentes sont les suivantes:

Nom de la clé Valeur Unités Exemple
A"ML Version - 2
en Numéro d'urgence - 911
et Horodatage de l'appel d'urgence Heure de l'epoch UNIX en secondes (entier) 1593187189
lo Localisation (latitude, longitude, précision) : la latitude et la longitude doivent obligatoirement être tronqué à 5 chiffres après la virgule, la justesse à 1 chiffre après la virgule : une précision de 0 représente une valeur inconnue Degrés (flottant), degrés (flottant), mètres (flottant) 37.42175,-122.08461,20.1
lt Heure de localisation (par rapport à l'heure d'urgence) : ce champ peut être ignoré. Si aucun champ de localisation ("lo") n'est présent ou si aucun champ d'horodatage ("et") n'est actuellement Secondes (entier) 5
lc Fiabilité de l'emplacement Niveau de confiance en pourcentage (entier) 68
lz Emplacement vertical (altitude, précision verticale) : ce champ peut être ignoré si aucun champ de localisation ("lo") n'est présent ; tous les champs sont tronqués à 1 chiffre après la virgule. Une précision de 0 représente une valeur inconnue. Mètres (flottant), Mètres (flottant) -10,1,10,1
ls Source de la localisation (Wi-Fi, cellulaire, GPS, Fused, Inconnu) : ce champ peut être ignoré si aucun champ de localisation ("lo") n'est présent. "W", "G", "C", "F", "U" W
ei Code IMEI - 355458061005220
nc MCC/MNC du réseau - 310260
hc Domicile MNC/MNC - 310260
lg Tags de langue IETF BCP 47 en-US

Niveau de confiance

Altitude (axe Z)

L'ELS indique la position verticale et la précision dans les messages ELS bêta. Altitude : lz est exprimée en mètres au-dessus de l'ellipsoïde de référence WGS84 (WGS est la référence système géodésique mondial utilisé par le GPS) et précision en mètres (altitude, verticale) précision). Ce champ peut être ignoré si aucun champ de localisation (lo) n'est présent. Tout champs tronqués à 1 chiffre après la virgule et une justesse de 0.0 représente unknown La précision verticale est définie de la même manière que la précision de la position. le centile de confiance est défini par le partenaire. La valeur par défaut est de 68% la confiance en soi. Vous trouverez plus d'informations dans la documentation Android getVerticalAccuracyMeters().

Exemples

Cas de localisation pas encore calculé:

A"ML=2;en=911;et=1643816841;ei=123456789012345;nc=23415;hc=23415

Le cas de la position a bien été calculé:

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

Formats

Les messages dans le journal des e-mails par SMS peuvent être envoyés dans les formats suivants:

  • SMS: SMS standard standard. Ce format est accepté à partir de Android P.
  • Data SMS: le contenu du message est identique à celui des SMS, mais il est encodé (plus de détails ci-dessous). Ce format est compatible avec Appareil Android compatible avec le SLU

Envoyer un SMS par SMS

La lecture et l'analyse d'un texte SMS est relativement simple. De nombreux appareils mobiles proposent ce service et peuvent vous fournir des API push ou pull le contenu des messages envoyés à un numéro de téléphone standard.

SMS de données

Le format SMS standard est pris en charge à partir d'Android P. Plus anciens les appareils envoient des messages SLU à l'aide de SMS de données qui doivent être décodés. Données SLU Les SMS sont codés avec le jeu de caractères GSM 03.38 7 bits par défaut, puis définie comme charge utile binaire d'un SMS de données.

Nous verrons plus tard la définition exacte d'un SMS de données plutôt que d'un SMS normal. La définition exacte de l'encodage GSM 03.38 7 bits est disponible dans le document 3GPP 23.038 (voir spécifiquement la section 6.1.2.1.1).

SMS de décodage de données

En ce qui concerne l'utilisation par Google des SMS pour le SLU, celui-ci ne concerne que SMS depuis le téléphone vers le centre de service mobile (SMSC) - Type SMS-ENVOYER messages. Les SMSC devraient pouvoir recevoir ces messages sans problème, elles font partie de la norme SMS normale (nous avons cependant observé les problèmes liés à plusieurs MNO, des paramètres et règles d'infrastructure, difficultés à décoder correctement les données SMS). Dans l'exemple suivant, l'ELS considère qu'une Envoyer un SMS au SMSC depuis le téléphone, qui suit le SMS standard (GSM 3.40). Le SLU définit un SMS de données comme un sous-ensemble de SMS standards qui:

  1. possède l'indicateur User-Data-Header-Indicator défini dans l'en-tête du SMS (6e bit du sur le premier octet d'un message GSM 03.40 ou 3GPP 23.040)
  2. Contient un en-tête de données utilisateur dans les données utilisateur du SMS
  3. User-Data-Header contient une adresse de port d'application Identifiant d'élément d'information (IEI)

Le SLU est nécessaire pour envoyer un SMS de cette manière plutôt qu'un SMS standard. pour vous assurer que les SMS de données SLU n'apparaissent pas dans le menu application de chat. Un exemple de SMS codé est présenté plus loin pour mieux l'expliquer.

Notez que nous ne spécifions pas de schéma de codage de données (DCS, Data-Coding-Scheme) particulier ici. La DCS est utilisé pour identifier le codage dans le segment User-Data. Toutefois, pour le champ dans un futur proche, le Data-Coding-Scheme sera toujours défini sur des données de 8 bits pour pour une flexibilité maximale. Les données elles-mêmes sont encodées l’alphabet par défaut GSM 03.38 7 bits. Chaque élément encodé sur 7 bits n'occupent que 7 bits, et non 8 bits.

Étant donné que le segment User-Data a un maximum de 140 octets et que le la taille minimale d'un en-tête de données utilisateur qui inclut les informations de port est de 7 octets, cela laisse un maximum de 133 octets (152 éléments encodés en 7 bits) pour encoder le message d'urgence réel. Ces octets peuvent être décodés pour révéler le SMS de données ELS le message en cours de transmission.

Exemple

Ainsi, après avoir décodé cet exemple Data SMS, nous nous trouvons avec le code binaire de l'utilisateur de cette chaîne hexadécimale:

415193D98BEDD8F4DEECE6A2C962B7DA8E7DEEB56232990B86A3D9623B39B92783EDE86F784F068BD560B6D80C1683E568B81D7BDCB3E176F076EFB89BA77B39DCCD56A3C966B15D39DD9BD570B2590E56CBC168B21A4DB66B8FC7BD590CB66BBBC73D990DB66BB37B31D94CC12CBBCF74B40E1493CD1A

Decode GSM 03.38

L'exemple suivant décode les premiers octets, le reste est conservé sous forme de au lecteur. Nous vous suggérons de vous référer à la norme 3GPP 23.038 et d'utiliser un grand nombre des des outils en ligne utiles (par exemple, http://smstools3.kekekasvi.com/topic.php?id=288). Dans la colonne Octets, les sections surlignées en jaune représentent les bits qui ne sont pas utilisés pour le septet actuel, et sont laissés pour le septet suivant. Au sein des septets les sections surlignées en jaune représentent les bits du code octet.

Hex Octets Septet Caractère (hex)
41 01000001 1000001 A (41)
51 01010001 0100010 " (22)
93 10010011 1001101 M (4D)
D9 11011001 1001100 L (4C)
8B 10001011 0111101 = (3D)
ED 11101101 0110001 1 (31)
D8 11011000 0111011 ; (3B)
1101100 l (6C)
F4 11110100 1110100 t (74)
DE 11011110 0111101 = (3D)

Au final, le message précédent peut être décodé la chaîne suivante:

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

Ces SMS devraient pouvoir être décodés avec la plupart des SMS disponibles publiquement logiciels.