Concaténation et encodage

Lorsque vous envoyez un SMS, vous devez tenir compte de la longueur totale du message, car c'est elle qui détermine si le message arrive en un seul morceau ou s'il est divisé en deux messages ou plus. Le schéma d'encodage utilisé par le SMS (text ou unicode) influe sur le nombre maximal de caractères pouvant être contenus dans un seul message. L'API Messages détecte automatiquement si le message soumis contient des caractères unicode et utilise le type d'encodage approprié. Ce paramètre peut être modifié au moyen d'une commande encoding_type dans le corps de la requête.

Ce document couvre les sujets suivants :

Concaténation

Si vous envoyez un message qui contient plus que le nombre maximum de caractères par message, Vonage envoie un SMS concaténé. Un SMS concaténé contient plusieurs parties de SMS qui sont reliées par des informations de segmentation dans le fichier En-tête de données utilisateur (UDH).

Ces informations de segmentation indiquent au combiné le nombre de parties de message qui composent le SMS concaténé et la position de chaque partie de message au sein de celui-ci. Lorsque le combiné a reçu toutes les parties du message, il les présente au destinataire sous la forme d'un texte unique.

Pour plus d'informations, la base de connaissances de Vonage contient des informations détaillées sur les points suivants SMS multipartite.

Encodage

L'API Messages de Vonage prend en charge deux principaux types de codage pour l'envoi de SMS : text et unicode. Par défaut, l'API Messages détecte automatiquement la présence de caractères unicode dans le texte et envoie le message comme il convient, soit sous forme de texte, soit sous forme de SMS unicode. Vous pouvez modifier ce comportement en définissant explicitement l'un ou l'autre des paramètres suivants text ou unicode comme valeur pour le encoding_type de la propriété optionnelle sms objet. Le codage à utiliser dépend des caractères que le message contient :

Nouvelles lignes

Pour inclure une nouvelle ligne dans votre message, vous pouvez représenter un saut de ligne (LF) à l'aide de la touche \n dans la valeur de la chaîne de caractères pour le text du corps JSON. Il s'agit d'un caractère unique par rapport au nombre de caractères du message. Par exemple, la valeur suivante pour text:

{
  "text": "This is one line.\nThis is another line."
}

enverra un message SMS qui ressemblera à celui-ci :

This is one line.
This is another line.

Remarque : les conseils ci-dessus concernant les nouvelles lignes s'appliquent à l'utilisation directe de l'API Messages. Si vous utilisez un client HTTP pour interagir avec l'API, comme le logiciel Vonage SDK de serveurUtilisez les conventions appropriées pour cet outil particulier. Pour les SDK de Vonage Server, il s'agira de la syntaxe spécifique de la nouvelle ligne pour le langage de programmation utilisé par ce SDK.

Jeux de caractères GSM

Vonage prend en charge tous les caractères GSM standard ainsi que les caractères de la table GSM étendue. Les caractères de la table standard nécessitent 7 bits par caractère pour être encodés :

! " # $ % ' ( ) * + , - . / : ; < = > ? @ _ ¡ £ ¥ § ¿ & ¤
0 1 2 3 4 5 6 7 8 9
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
Ä Å Æ Ç É Ñ Ø ø Ü ß Ö à ä å æ è é ì ñ ò ö ù ü Δ Φ Γ Λ Ω Π Ψ Σ Θ Ξ

Personnages de la table rallongée nécessitent l'encodage de deux caractères : un ESC suivi du caractère requis de la table étendue :

| ^ € { } [ ] ~ \

Unicode

Les langues telles que l'arabe, le chinois, le coréen, le japonais ou l'alphabet cyrillique nécessitent des caractères Unicode au-delà de la norme GSM et des gammes étendues. Ces caractères nécessitent un codage UCS-2 de 16 bits.

Lorsque vous réglez le type au paramètre unicode, tous dans le message sont codés à l'aide de UCS-2, même s'ils sont présents dans le jeu de caractères standard du GSM.

Exemples de codage

Message Type Octets par caractère Nombre total d'octets requis Jeu de caractères utilisé dans le message
Bonjour monde text 1 13 Norme GSM
This ^ That text 1 (2 pour ^ car il fait partie du jeu de caractères étendu) 12 GSM standard et GSM étendu
こんにちは世界 unicode 2 (UCS-2) 14 Unicode

Nombre maximal de caractères

La longueur maximale d'un message SMS est de 140 octets, ce qui correspond à 160 caractères GSM standard de 7 bits ou à 70 caractères UCS-2 de 16 bits. Un message plus long est divisé en plusieurs parties.

Note: Le codage des caractères de la table étendue GSM nécessite deux octets par caractère.

Si vous envoyez un message avec un type valeur de text les limites de caractères suivantes s'appliquent :

Pièces détachées Nombre maximal de caractères Calcul
1 160 Sans UDH, 160 caractères sont disponibles
2 306 (160 - 7) * 2 = 306
3 459 (160 - 7) * 3 = 459
4 612 (160 - 7) * 4 = 612

Si vous envoyez un message avec un type de unicode alors chaque caractère du message nécessite deux octets.

Vonage accepte les SMS d'une longueur maximale de 3200 caractères, mais ce n'est pas le cas de tous les opérateurs. La meilleure pratique consiste à s'assurer que le message ne dépasse pas six parties de SMS.

Note : Vous êtes facturé pour chaque partie d'un SMS concaténé.

Testez vos modèles de messages avec cet outil :

Remarque : cet outil est destiné à démontrer comment les messages sont concaténés par l'API. Il n'est pas destiné à une utilisation en production. Si vous envoyez un volume important de messages contenant le même contenu et que vous souhaitez précalculer les coûts potentiels liés à la concaténation des messages, nous vous recommandons d'envoyer d'abord un seul message à un numéro de test afin de déterminer avec précision le nombre de parties du message. Pour le SMS API cela apparaîtra dans le message-count dans la propriété organe de réponse. Pour les Messages API cela apparaîtra dans le sms.count_total dans la propriété Message Status webhook.

Essayez-le

Message

Données

Unicode est nécessaire
Longueur
611 characters sent in 4 message parts

Pièces détachées

Partie 1
En-tête défini par l'utilisateurIt was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoc
Partie 2
En-tête défini par l'utilisateurh of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything b
Partie 3
En-tête défini par l'utilisateurefore us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way in short, the period was so far like the p
Partie 4
En-tête défini par l'utilisateurresent period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only.