Migration de l'API SMS vers l'API Messages

L'API Messages de Vonage est le moyen recommandé pour envoyer et recevoir des SMS. Elle prend en charge plusieurs canaux tels que les SMS, MMS, RCS et WhatsApp par le biais d'une interface unique et cohérente. Ce guide compare l'API SMS basée sur HTTP et l'API Messages pour les cas d'utilisation de SMS, et présente la configuration du compte, les demandes sortantes, les charges utiles entrantes et les changements de suivi de l'état que vous devez effectuer lors d'une migration. Il ne couvre pas les intégrations SMPP.

L'API SMS continue d'être prise en charge par les clients existants. Cependant, l'API Messages dispose d'une solide feuille de route de développement pour les nouvelles fonctionnalités et les améliorations, et c'est le chemin recommandé pour toutes les nouvelles intégrations, ou les intégrations existantes qui cherchent à tirer parti des canaux de messagerie supplémentaires et des fonctionnalités fournies.

L'API Messages prend actuellement en charge deux versions : v1 et l'héritage v0.1. Pour la migration de l'API SMS vers l'API Messages, nous vous conseillons vivement d'utiliser la version 1 de l'API Messages.

Configurer votre Account Vonage pour utiliser l'API Messages

Sélectionnez l'API Messages dans le tableau de bord.

La première étape de la migration de l'ancienne API SMS vers l'API Messages consiste à mettre à jour le fichier Type d'API Messages sur l'écran Paramètres de l'API page du tableau de bord du développeur Vonage. Sélectionnez Messages API en tant que Type d'API ici.

Migration on the dashboard.

Si vous ne modifiez pas ce paramètre à partir de SMS API (legacy), les messages entrants et les accusés de réception continueront d'utiliser la configuration SMS API dans le tableau de bord.

Paramètres au niveau du compte et applications Vonage

Une fois que vous avez configuré votre Account pour qu'il utilise l'API Messages, vous devez décider de la manière dont vous souhaitez configurer les paramètres de l'API Messages. Il existe deux façons de procéder :

  • Paramètres au niveau du compte
  • Une application Vonage

Les principales différences entre les deux sont l'endroit où vous configurez les webhooks et les informations d'identification utilisées pour l'authentification (et donc les méthodes d'authentification disponibles). L'utilisation de l'API Messages avec des paramètres au niveau de l'Account est plus proche, en termes de configuration, de la manière dont les paramètres de l'API SMS sont configurés. Le tableau ci-dessous compare les différences de manière plus détaillée.

Domaine de décision SMS API (ancienne version) Messages API (paramètres au niveau de l'Account) Messages API (application Vonage)
Titres de compétences Clé et secret de l'API (ou secret de signature) Clé et secret de l'API ID de l'application et clé privée
Authentification Authentification de base ou authentification par signature Authentification de base JWT signé avec la clé privée
Messages entrants URL du webhook entrant au niveau du compte dans les paramètres de l'API, avec une option de remplacement de l'URL entrante par numéro sous Vos Numbers. URL du webhook entrant au niveau de l'Account dans les paramètres de l'API URL du webhook entrant au niveau de l'application sur l'application Vonage liée au numéro.
Rappels de statut1 URL du webhook au niveau de l'Account dans les paramètres de l'API (intitulé "Delivery receipts"). URL du webhook au niveau de l'Account dans les paramètres de l'API URL d'état au niveau de l'application
Version de l'API2 N'a qu'une seule version Paramètres de la version de l'API Messages au niveau de l'Account Messages au niveau de l'application Paramétrage de la version de l'API
Paramètres supplémentaires Aucun Aucun Sécuriser les médias entrants
Nombre de configurations Un (niveau Account) Un (niveau Account) Multiple (chaque Applications Vonage a ses propres paramètres)
  1. L'API SMS et l'API Messages permettent également de remplacer l'URL du webhook DLR/Status configuré pour chaque demande.
  2. Nous vous recommandons vivement d'utiliser Messages API v1 pour votre migration. Veillez à ce que le fichier Version est fixé à v1 soit dans les paramètres de votre Account, soit dans toute application Vonage que vous créez (en fonction de l'approche de configuration que vous utilisez). Il s'agit de la valeur par défaut pour tous les nouveaux comptes Vonage, mais elle peut être réglée sur v0.1 sur les comptes plus anciens à des fins de rétrocompatibilité.

En général, nous vous recommandons d'utiliser les Applications Vonage pour votre intégration de l'API Messages en raison de leur flexibilité accrue et de l'utilisation des JWT pour l'authentification. Toutefois, étant donné que les paramètres au niveau du compte sont plus proches de l'approche utilisée par l'API SMS, vous pouvez envisager une approche en deux étapes pour votre migration, en passant d'abord aux paramètres au niveau du compte et à l'authentification de base pour l'API Messages avant d'utiliser les Applications Vonage.

Qu'est-ce qu'une application Vonage ?

Une Application Vonage peut être un nouveau concept pour les développeurs qui viennent de l'API SMS. Il s'agit essentiellement d'un conteneur pour la configuration et les informations d'identification. Ce n'est pas la même chose que votre application logicielle.

Chaque application Vonage contient :

  • Un nom
  • Un numéro d'identification unique pour l'application
  • Une paire de clés publique/privée générée (utilisée pour l'authentification JWT)
  • Paramètres supplémentaires spécifiques au produit. Pour l'API Messages, il s'agit notamment des URL des webhooks pour les messages entrants et les mises à jour de l'état des messages

L'API SMS n'utilise pas d'Applications. Les webhooks sont configurés globalement au niveau du compte. Bien que vous puissiez toujours utiliser les paramètres au niveau du compte avec l'API Messages si vous le souhaitez, il également prend en charge l'utilisation des Applications Vonage. Étant donné que chaque application dispose de sa propre configuration et de ses propres paramètres de webhook, cela facilite la gestion indépendante de plusieurs intégrations.

Pourquoi les Applications Vonage sont-elles recommandées ?

Le choix de l'approche de configuration dans l'API Messages affecte l'endroit où vos paramètres sont configurés ainsi que la méthode d'authentification utilisée.

Les Applications Vonage sont recommandées pour les raisons suivantes :

  • Comme les paramètres sont définis au niveau de l'application Vonage et que vous pouvez créer de nombreuses applications, il est plus facile de gérer plusieurs intégrations pour différents flux de travail ou cas d'utilisation.
  • Les Applications Vonage peuvent être créées et gérées par programmation à l'aide de la CLI ou de l'API de Vonage.
  • Les Applications Vonage permettent l'utilisation de JWT, générés à l'aide d'une paire de clés publique/privée, pour l'authentification. Cela ajoute une couche de sécurité supplémentaire au processus d'authentification par rapport à l'authentification de base.

Utilisation des paramètres au niveau du Account

Si vous souhaitez utiliser des paramètres au niveau de l'Account avec les webhooks de l'API Messages, le processus de configuration de base est le suivant :

  1. Ouvrir Paramètres de l'API dans le Tableau de bord.
  2. Régler le Messages API version à v1.
  3. Configurez les URL des webhooks de réception et d'état au niveau de l'Account.
  4. Révision Vos Numbers pour toutes les dérogations d'entrée par numéro qui pourraient modifier le routage.
  5. Envoyer des demandes de Messages API en utilisant l'authentification de base.
  6. Validez que les messages entrants et les rappels d'état atteignent les points de terminaison prévus au niveau du Account avant de basculer le trafic de production.

Utilisation d'une application Vonage pour l'API Messages

Si vous souhaitez un routage au niveau de l'application et une authentification JWT, le flux de configuration est :

  1. Créez une nouvelle application ou ouvrez l'application existante que vous souhaitez utiliser.
  2. Activer le Messages capacité.
  3. Configurez les URL des webhooks d'entrée et d'état de l'application.
  4. Régler le Messages API version à v1.
  5. Lier le numéro compatible avec les SMS à cette application.
  6. Envoyez des demandes d'API Messages en utilisant l'authentification JWT.
  7. Validez que les messages entrants et les rappels d'état atteignent les points de terminaison au niveau de l'application avant de basculer le trafic de production.

Créer une application API Vonage

Il existe trois méthodes alternatives pour créer une application Messages :

  1. Utilisation de la CLI de Vonage
  2. Utilisation du tableau de bord
  3. Utilisation de l'API d'application

Chacune de ces méthodes est décrite dans les sections suivantes.

Comment créer une application de messages à l'aide de la CLI de Vonage

Pour créer votre application à l'aide de la CLI de Vonage, entrez la commande suivante dans l'interpréteur de commandes :

vonage apps:create "My Messages App" --messages_inbound_url=https://example.com/webhooks/inbound-message --messages_status_url=https://example.com/webhooks/message-status

Cette commande crée une application Vonage API avec un message capacitéet les URL des webhooks sont configurées comme indiqué. Il génère également un fichier de clé privée my_messages_app.key et crée ou met à jour le vonage_app.json fichier.

Comment créer une application Messages à l'aide du tableau de bord

Vous pouvez créer une application Applications dans le module Tableau de bord.

Pour créer votre application à l'aide du tableau de bord :

  1. Sous Applications dans le tableau de bord, cliquez sur le bouton Créer une nouvelle application bouton.

  2. Sous Nom, saisissez le nom de l'Applications. Choisissez un nom pour faciliter les références futures.

  3. Cliquez sur le bouton Générer une clé publique et une clé privée. Cela créera une paire de clés publique/privée et la clé privée sera téléchargée par votre navigateur.

  4. Sous Capacités sélectionner le Messages bouton.

  5. Dans le cadre de la URL entrant entrez l'URL de votre webhook de messages entrants, par exemple, https://example.com/webhooks/inbound-message.

  6. Dans le cadre de la URL de l'état entrez l'URL de votre webhook sur l'état des messages, par exemple, https://example.com/webhooks/message-status.

  7. Cliquez sur le bouton Générer une nouvelle application bouton. Vous passez à l'étape suivante de la procédure de création d'une application, où vous pouvez associer un numéro API de Vonage à l'application, et lier des comptes externes tels que Facebook à cette application.

  8. S'il existe un Account externe auquel vous souhaitez lier cette application, cliquez sur le bouton Comptes externes liés et cliquez sur l'onglet correspondant Lien pour le compte auquel vous voulez vous relier.

Vous avez maintenant créé votre application.

NOTE : Avant de tester votre application, assurez-vous que vos webhooks sont configurés et que votre serveur webhook fonctionne.

Comment créer une application Messages à l'aide de l'API d'application

L'API d'application vous permet de créer et de configurer une application Vonage de manière programmatique - sans utiliser le tableau de bord ou la CLI. Une application Vonage créée via l'API d'application fonctionne de la même manière qu'une application créée via le tableau de bord.

Pour une présentation complète de la création d'une application Vonage, voir Créer une application Vonage.

Associer un numéro de téléphone à votre Applications

Dans le tableau de bord, ouvrez la fenêtre Applications pagesélectionnez l'application que vous souhaitez utiliser et associez le numéro de l'application en question au numéro de téléphone de l'application. Numbers de liens tabulation.

Vous pouvez également gérer les paramètres du webhook entrant spécifiques à un numéro à partir de Vos Numbers. Le tableau de bord indique qu'un webhook entrant par numéro a priorité sur le webhook entrant au niveau du compte. Si vous utilisez des numéros qui sont également liés à une application Messages, validez l'acheminement qui en résulte dans votre Account avant de vous fier à ce comportement prioritaire.

Si un numéro n'est pas lié à une application compatible avec Applications, les SMS entrants à destination de ce numéro enverront une demande au webhook de messages entrants défini dans l'onglet niveau du compte dans le Paramètres de l'API plutôt que la configuration du webhook Messages au niveau de l'application.

Envoi d'un SMS (messages sortants)

Point final

Aspect Messages API SMS API (ancienne version)
Envoyer un point final POST /v1/messages POST /sms/json
Méthode POST POST
Content-Type application/json application/x-www-form-urlencoded

Structure de la demande

Messages API :

{
  "message_type": "text",
  "text": "Hello from Vonage",
  "to": "447700900000",
  "from": "Vonage",
  "channel": "sms"
}

Charge utile de l'API SMS (ancienne) :

from=Vonage
text=Hello from Vonage
to=447700900000

Principales différences dans le corps de la demande

Champ d'application Messages API SMS API (ancienne version)
to to to
from from from
text text text
Chaîne "channel": "sms" (obligatoire) Implicite (SMS uniquement)
Type de message "message_type": "text" (obligatoire) Implicite

Extraits de code

Les extraits de code suivants comprennent l'exemple cURL et les exemples de SDK serveur disponibles pour chaque API.

Extraits de code de l'API Messages

CléDescription
VONAGE_APPLICATION_ID

The Vonage Application ID.

VONAGE_PRIVATE_KEY

Private key for the Vonage Application.

MESSAGES_TO_NUMBER

The number you are sending the to in E.164 format. For example 447700900000.

SMS_SENDER_ID

The alphanumeric string that represents the name or number of the organization sending the message.

Conditions préalables

Si vous n'avez pas de demande, vous pouvez créer un. Veillez également à configurer vos webhooks.

Rédiger le code

Ajouter ce qui suit à send-sms.sh:

curl -X POST https://api.nexmo.com/v1/messages \
  -H "Authorization: Bearer "$JWT\
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d $'{
    "to": "'${MESSAGES_TO_NUMBER}'",
    "from": "'${SMS_SENDER_ID}'",
    "channel": "sms",
    "message_type": "text",
    "text": "This is an SMS sent using the Vonage Messages API."
  }'

Voir la source complète

Exécutez votre code

Enregistrez ce fichier sur votre machine et exécutez-le :

bash send-sms.sh

Extraits de code de l'API SMS (ancienne)

CléDescription
VONAGE_API_KEY

Your Vonage API key (see it on your dashboard).

VONAGE_API_SECRET

Your Vonage API secret (also available on your dashboard).

SMS_TO_NUMBER

The phone number you are sending the message to.

SMS_SENDER_ID

The alphanumeric string that represents the name or number of the organization sending the message.

Rédiger le code

Ajouter ce qui suit à send-sms.sh:

curl -X POST https://rest.nexmo.com/sms/json \
  -u "$VONAGE_API_KEY:$VONAGE_API_SECRET" \
  -d "from=${SMS_SENDER_ID}" \
  -d "to=${SMS_TO_NUMBER}" \
  -d 'text=A text message sent using the Vonage SMS API'

Voir la source complète

Exécutez votre code

Enregistrez ce fichier sur votre machine et exécutez-le :

sh send-sms.sh

Paramètres optionnels et différences de caractéristiques

Une fois les champs SMS obligatoires migrés, l'étape suivante consiste à passer en revue tous les paramètres API SMS facultatifs sur lesquels repose votre intégration.

Paramètre ou aspect de l'API SMS Équivalent de Messages API Notes
ttl ttl Les deux API prennent en charge le TTL, mais les unités et les limites diffèrent. L'API SMS utilise des millisecondes avec une plage de 20000 à 604800000. Messages API utilise des secondes avec une plage de 20 à 604800. Les deux sont réglés par défaut sur 72 heures.
trusted-number trusted_recipient Même objectif : outrepasser les protections du Défenseur contre la fraude, par message, pour les comptes éligibles.
message-class Pas d'équivalent Pas d'équivalent direct de l'API Messages pour les SMS message-class.
status-report-req Pas d'équivalent direct L'API SMS vous permet de demander explicitement des DLR. Les rappels d'état de l'API Messages sont pilotés par la configuration du webhook plutôt que par un booléen par message.
callback webhook_url Tous deux remplacent la destination par défaut du rappel d'état pour chaque message.
client-ref client_ref Les deux vous permettent de joindre votre propre référence pour la corrélation.
entity-id sms.entity_id Même objectif réglementaire ; la dénomination passe du trait d'union au soulignement. Emboîté dans le sms objet.
content-id sms.content_id Même objectif réglementaire ; la dénomination passe du trait d'union au soulignement. Emboîté dans le sms objet.
pool-id sms.pool_id Même comportement de la réserve de numéros ; le nom passe du trait d'union au trait de soulignement. Emboîté dans le sms objet.
account-ref Pas d'équivalent Le paramètre de référence de facturation/compte de l'API SMS n'a pas d'équivalent direct dans l'API Messages.
type / contrôle de l'encodage sms.encoding_type avec text, unicodeou auto Utilisations de l'API SMS type avec text, unicodeou binary. L'API Messages détecte automatiquement le codage par défaut.
body, udh, protocol-id / champs binaires du SMS Pas d'équivalent L'API SMS prend en charge les SMS binaires par l'intermédiaire de type=binary avec body, udhet protocol-id.

Codes de réponse HTTP

Il s'agit de l'une des différences de comportement les plus significatives entre les deux API.

L'API SMS renvoie toujours une valeur de 200 Code de réponse HTTP, qu'il s'agisse d'un succès ou d'un échec, avec un code status dans le corps de la réponse, dont la valeur correspond au résultat.

L'API Messages renvoie un fichier 202 le code de réponse pour les demandes réussies, et 4xx ou 5xx codes pour les réponses d'erreur.

Quelques exemples sont présentés dans le tableau comparatif ci-dessous.

Scénario Messages API SMS API (ancienne version)
Succès Retours HTTP 202 Accepted sur la réussite. Toujours des retours HTTP 200. Le statut réel se trouve dans le corps de la réponse ("status": "0" pour réussir).
Erreur d'authentification HTTP 401 Unauthorized HTTP 200 avec statut corporel 4 (Invalid Credentials).
Paramètres non valides HTTP 422 Unprocessable Entity HTTP 200 avec statut corporel 2 (Missing Parameters) ou 3 (Invalid Parameters).

Voir Messages API errors (en anglais), Codes d'erreur de l'API SMSet le Point de terminaison d'envoi de l'API SMS pour connaître tous les détails de l'erreur.

Réponse positive de l'API SMS

{
  "message-count": "1",
  "messages": [
    {
      "to": "447700900000",
      "message-id": "0A0000000123ABCD1",
      "status": "0",
      "remaining-balance": "3.14159265",
      "message-price": "0.03330000",
      "network": "23410"
    }
  ]
}

Réponse d'erreur de l'API SMS

{
  "message-count": "1",
  "messages": [
    {
      "status": "4",
      "error-text": "Bad Credentials"
    }
  ]
}

Messages API Success Response (Réponse de réussite de l'API)

{
  "message_uuid": "aaaaaaaa-bbbb-4ccc-8ddd-0123456789ab"
}

L'API Messages renvoie un seul fichier message_uuid au lieu d'un tableau d'objets de messages. Utilisez cet UUID pour corréler les rappels d'état.

Messages API Réponse d'erreur (401 non autorisé)

{
  "type": "https://developer.vonage.com/api-errors#unauthorized",
  "title": "Unauthorized",
  "detail": "You did not provide correct credentials.",
  "instance": "bf0ca0bf927b3b52e3cb03217e1a1ddf"
}

Réception d'un SMS (messages entrants)

Les deux API envoient des SMS entrants à l'URL d'un webhook que vous avez configuré. Il existe quelques différences entre les deux API au niveau de la structure de la charge utile entrante et de la dénomination des paramètres. La configuration du webhook est abordée dans la section Configurer votre Account Vonage pour utiliser l'API Messages.

Charge utile entrante de l'API SMS

Lorsqu'un message est reçu sur l'API SMS, Vonage envoie une requête

GET
ou
POST
à l'URL de votre webhook entrant configuré.

Exemple de charge utile :

{
  "msisdn": "447700900001",
  "to": "447700900000",
  "messageId": "0A0000000123ABCD1",
  "text": "Hello from a user",
  "type": "text",
  "keyword": "HELLO",
  "message-timestamp": "2020-01-01 12:00:00"
}

Messages API Charge utile entrante

Lorsqu'un message est reçu sur l'API Messages, Vonage envoie une requête

POST
à l'URL entrante configurée de votre application.

Exemple de charge utile :

{
   "channel": "sms",
   "message_uuid": "aaaaaaaa-bbbb-4ccc-8ddd-0123456789ab",
   "to": "447700900000",
   "from": "447700900001",
   "timestamp": "2025-02-03T12:14:25Z",
   "text": "Hello From Vonage!",
   "sms": {
      "num_messages": "2",
      "keyword": "HELLO"
   },
   "usage": {
      "currency": "EUR",
      "price": "0.0333"
   },
   "origin": {
      "network_code": "12345"
   }
}

Suivi de l'état des messages

L'API Messages utilise des rappels d'état pour informer votre application lorsque l'état d'un message change. Il s'agit de l'équivalent pour l'API Messages des accusés de réception (DLR) utilisés par l'API SMS.

Équivalents de statut DLR

Les équivalents les plus proches de l'API Messages pour les statuts DLR de l'API SMS sont indiqués ci-dessous :

État de l'API SMS DLR L'équivalent le plus proche de Messages API Notes
accepted submitted Se produit lorsque le message a été transmis à une passerelle de fournisseur. Il s'agit de l'événement facturable.
buffered Pas d'équivalent Rarement utilisé dans la pratique et non transmis.
delivered delivered Indique la réception par l'appareil de l'utilisateur final, en fonction de la prise en charge par l'opérateur.
expired rejected Correspond généralement au code d'erreur de Messages API 1360.
failed rejected Indique une défaillance du fournisseur ou une erreur de réseau.
unknown rejected Correspond généralement au code d'erreur de Messages API 1330.
rejected rejected Voir Messages Codes d'erreur API.

Pour plus d'informations, voir Messages API Callbacks d'état.

Fonctionnalités supplémentaires de l'API Messages

Bien que ce guide se concentre sur la migration de votre intégration SMS, l'API Messages offre un certain nombre de fonctionnalités supplémentaires qui méritent d'être explorées une fois la migration terminée.

Messagerie multicanal

L'API Messages prend en charge plusieurs canaux par le biais d'une interface API unique et cohérente. Une fois que vous avez migré votre intégration SMS, vous pouvez ajouter de nouveaux canaux sans modifier votre intégration principale :

Chaîne Description
MMS Envoyer du contenu multimédia (images, audio, vidéo) vers des numéros américains et canadiens.
RCS Services de communication enrichie : envoyez des messages interactifs avec des images, des suggestions de réponses et des boutons d'action aux appareils Android et iOS.
WhatsApp Envoyez et recevez des messages sur WhatsApp à l'aide d'un compte professionnel vérifié.
Facebook Messenger Engagez vos clients sur Messenger.
Viber Envoyer des messages via le service Viber Messages.
Courriel Envoyez des e-mails transactionnels à l'aide de l'API unifiée que vous utilisez déjà pour d'autres canaux de messagerie.

La structure de la demande est cohérente d'un canal à l'autre. Pour envoyer un message sur un autre canal, vous devez modifier le champ du canal et ajouter les paramètres spécifiques au canal. Votre gestionnaire de webhook pour les rappels d'état et les messages entrants fonctionne de la même manière quel que soit le canal.

Basculement

L'API Messages prend en charge les flux de travail de basculement, qui vous permettent de réessayer automatiquement un message sur un canal différent si la première tentative échoue ou n'est pas lue dans une fenêtre de temps spécifiée. Par exemple, vous pouvez envoyer un message WhatsApp et revenir au SMS si le destinataire n'a pas WhatsApp ou ne lit pas le message dans un délai donné.

Voir Messages API Failover (basculement de l'API) pour plus d'informations.

Un contenu riche

Sur les canaux qui la prennent en charge (RCS, WhatsApp, MMS, Messenger, Viber), l'API Messages permet d'envoyer :

  • Images, vidéo, audio et pièces jointes
  • Modèles de messages interactifs
  • Boutons de réponse et d'action suggérés (RCS, WhatsApp)
  • Cartes et carrousels riches (RCS)

Pour en savoir plus