Migración de SMS API a Messages API
Messages API de Vonage es la forma recomendada de enviar y recibir SMS. Admite múltiples canales como SMS, MMS, RCS y WhatsApp a través de una interfaz única y consistente. Esta guía compara la API de SMS basada en HTTP y la API de Messages para casos de uso de SMS, y explica la configuración de la cuenta, las solicitudes salientes, las cargas útiles entrantes y los cambios de seguimiento de estado que debes realizar durante una migración. No cubre las integraciones SMPP.
La SMS API sigue estando disponible para los clientes actuales. Sin embargo, la Messages API tiene una sólida hoja de ruta de desarrollo para nuevas funciones y mejoras, y es la ruta recomendada para todas las nuevas integraciones, o integraciones existentes que buscan aprovechar los canales de mensajería adicionales y características proporcionadas.
Messages API admite actualmente dos versiones: v1 y el legado v0.1. Para migrar de la SMS API a la Messages API, le recomendamos encarecidamente que utilice la v1 de la Messages API.
Cómo configurar tu cuenta de Vonage para usar Messages API
Seleccione la API Messages en el Panel de control
El primer paso para migrar de la API de SMS heredada a la API de Messages consiste en actualizar el archivo Tipo de API de mensajería en el Ajustes API página del panel para desarrolladores de Vonage. Selecciona Messages API como el Tipo de API aquí.

Si no cambia esta configuración de SMS API (heredada), los mensajes entrantes y los recibos de entrega seguirán utilizando la configuración de SMS API en el Panel de control.
Configuración a nivel de cuenta vs. Aplicaciones de Vonage
Una vez que haya configurado su Account para utilizar el API de Messages, deberá decidir cómo desea configurar los ajustes del API de Messages. Hay dos maneras de hacerlo:
- Configuración a nivel de Account
- Una aplicación de Vonage
Las principales diferencias entre ambas son la configuración de los webhooks y las credenciales utilizadas para la autenticación (y, por tanto, los métodos de autenticación disponibles). El uso de Messages API con ajustes a nivel de cuenta es más parecido, en términos de configuración, a cómo se configuran los ajustes para SMS API. En la tabla siguiente se comparan las diferencias con más detalle.
| Área de decisión | SMS API (heredado) | Messages API (configuración a nivel de Account) | Messages API (aplicación de Vonage) |
|---|---|---|---|
| Credenciales | Clave y secreto API (o secreto de firma) | Clave y secreto de la API | ID de aplicación y clave privada |
| Autenticación | Autenticación básica o autenticación por firma | Autenticación básica | JWT firmado con la clave privada |
| Mensajes entrantes | URL del webhook de entrada a nivel de Account en Ajustes de API, con una opción de anulación de entrada por número en Tus Numbers | URL del webhook de entrada a nivel de Account en Configuración de API | URL de webhook entrante a nivel de aplicación en la aplicación de Vonage vinculada al número |
| Llamadas de estado1 | URL de webhook a nivel de Account en Configuración de API (con la etiqueta "Recibos de entrega") | URL de webhook a nivel de Account en Configuración de API | URL de estado de las Applications |
| Versión API2 | Sólo tiene una versión | Configuración de la versión de la API de Messages a nivel de Account | Configuración de la versión de Messages API a nivel de aplicación |
| Ajustes adicionales | Ninguno | Ninguno | Medios de entrada seguros |
| Numbers de configuraciones | Uno (nivel Account) | Uno (nivel Account) | Múltiple (cada aplicación de Vonage tiene su propia configuración) |
- Tanto la SMS API como la Messages API también permiten anular la URL del webhook DLR/Status configurada para cada solicitud.
- Le recomendamos encarecidamente que utilice Messages API v1 para su migración. Asegúrese de que la
Versionse establece env1ya sea en la configuración de tu cuenta o en cualquier aplicación de Vonage que crees (según el enfoque de configuración que estés utilizando). Este es el valor predeterminado para todas las nuevas cuentas de Vonage, pero puede configurarse env0.1en cuentas antiguas por compatibilidad con versiones anteriores.
En general, recomendaríamos usar Vonage Applications para tu integración con Messages API debido a su mayor flexibilidad y al uso de JWT para la autenticación. Sin embargo, dado que las configuraciones a nivel de cuenta se acercan más al enfoque utilizado por la API de SMS, es posible que desees considerar un enfoque de dos pasos para tu migración, primero pasar a las configuraciones a nivel de cuenta y la autenticación básica para la API de Messages antes de usar las aplicaciones de Vonage.
¿Qué es una aplicación de Vonage?
Una aplicación de Vonage puede ser un concepto nuevo para los desarrolladores que provienen de SMS API. Es esencialmente un contenedor para la configuración y las credenciales. No es lo mismo que tu aplicación de software.
Cada aplicación de Vonage contiene:
- Un nombre
- Un identificador único de Applications
- Un par de claves pública/privada generado (utilizado para la autenticación JWT)
- Ajustes adicionales específicos del producto. En el caso de la Messages API, se trata de las URL de los webhooks para los mensajes entrantes y las actualizaciones del estado de los mensajes
La SMS API no utiliza Applications. Los webhooks se configuran globalmente a nivel de Account. Aunque puede seguir utilizando la configuración a nivel de cuenta con la Messages API si así lo desea, ésta también admite el uso de Vonage Applications. Dado que cada aplicación tiene su propia configuración y ajustes de webhook, esto facilita la gestión de múltiples integraciones de forma independiente.
¿Por qué se recomiendan las aplicaciones de Vonage?
La elección del enfoque de configuración en la Messages API afecta al lugar donde se configuran los ajustes y también al método de autenticación utilizado.
Vonage Applications se recomienda porque:
- Como las configuraciones se definen a nivel de Vonage Applications y puedes crear muchas aplicaciones, esto facilita la administración de múltiples integraciones para diferentes flujos de trabajo o casos de uso comerciales.
- Las Applications de Vonage pueden crearse y administrarse mediante programación con la CLI o la API de aplicaciones de Vonage.
- Las Applications de Vonage permiten el uso de JWT, generados mediante un par de claves públicas/privadas, para la autenticación. Esto agrega una capa adicional de seguridad al proceso de autenticación en comparación con la autenticación básica.
Uso de la configuración a nivel de cuenta
Si desea utilizar la configuración a nivel de cuenta con los webhooks de Messages API, el flujo de configuración básico es el siguiente:
- Abrir Ajustes API en el Cuadro de mandos.
- Fije el Versión de la API de Messages a
v1. - Configure las URL de los webhooks de entrada y de estado a nivel de Account.
- Consulte Tus Numbers para cualquier anulación de entrada por número que pudiera cambiar el enrutamiento.
- Envíe solicitudes a la API de Messages utilizando la autenticación básica.
- Valide que los mensajes entrantes y las devoluciones de llamada de estado llegan a los puntos finales de nivel de cuenta esperados antes de conmutar el tráfico de producción.
Cómo usar una aplicación de Vonage para Messages API
Si desea enrutamiento a nivel de aplicación y autenticación JWT, el flujo de configuración es:
- Cree una nueva aplicación o abra la aplicación existente que desee utilizar.
- Habilitar el Mensajes capacidad.
- Configure las URL de los webhooks de entrada y de estado de la aplicación.
- Fije el Versión de la API de Messages a
v1. - Vincular el número compatible con SMS a esa aplicación.
- Envíe solicitudes a la API de Messages utilizando la autenticación JWT.
- Validar que los mensajes entrantes y las devoluciones de llamada de estado llegan a los puntos finales a nivel de aplicación antes de conmutar el tráfico de producción.
Crear una aplicación API de Vonage
Existen tres métodos alternativos para crear una aplicación de Mensajes:
- Uso de la CLI de Vonage
- Uso del panel de control
- Uso de la API de aplicaciones
Cada uno de estos métodos se describe en las secciones siguientes.
Cómo crear una aplicación de mensajes con la CLI de Vonage
Para crear tu aplicación usando la CLI de Vonage, ingresa el siguiente comando en el shell:
Este comando crea una aplicación API de Vonage con un mensaje capacidady las URL de los webhooks están configuradas según lo especificado. También genera un archivo de clave privada my_messages_app.key y crea o actualiza el vonage_app.json archivo.
Cómo crear una aplicación de mensajes con el panel de control
Puede crear una aplicación Mensajes en la sección Cuadro de mandos.
Para crear su aplicación utilizando el Panel de control:
En Applications en el Panel de control, haga clic en el botón Crear una nueva aplicación botón.
En NombreIntroduzca el nombre de la aplicación. Elija un nombre para facilitar futuras referencias.
Pulse el botón Generar clave pública y privada. Esto creará un par de claves pública/privada y su navegador descargará la clave privada.
En Capacidades seleccione el Mensajes botón.
En el URL de entrada introduzca la URL de su webhook de mensajes entrantes, por ejemplo,
https://example.com/webhooks/inbound-message.En el URL de estado introduzca la URL de su webhook de estado de mensajes, por ejemplo,
https://example.com/webhooks/message-status.Haga clic en el botón Generar nueva aplicación botón . Ahora pasarás al siguiente paso del procedimiento para crear una aplicación, donde podrás vincular un número API de Vonage a la aplicación y vincular cuentas externas, como Facebook, a esta aplicación.
Si hay una cuenta externa a la que desea vincular esta aplicación, haga clic en el botón Cuentas externas vinculadas y, a continuación, haga clic en el botón Enlace de la Account que desea vincular.
Ya ha creado su aplicación.
NOTA: Antes de probar su aplicación, asegúrese de que sus webhooks están configurados y de que su servidor webhook está en funcionamiento.
Cómo crear una aplicación de Messages API
La API de aplicaciones te permite crear y configurar una aplicación de Vonage mediante programación, sin usar el panel ni la CLI. Una aplicación de Vonage creada a través de la API de aplicaciones funciona igual que una creada a través del panel.
Para obtener información general sobre cómo crear una aplicación de Vonage, consulta Crear una aplicación de Vonage.
Vincular un número de teléfono a su aplicación
En el cuadro de mandos, abra la ventana Applications páginaseleccione la aplicación que desee utilizar y vincule el número desde el menú de esa aplicación. Números de enlace ficha.
También puede gestionar la configuración de los webhooks de entrada específicos de cada número desde Tus Numbers. El Panel de control indica que un webhook de entrada por número anula el webhook de entrada a nivel de cuenta. Si utiliza Numbers que también están vinculados a una aplicación de Mensajes, valide el enrutamiento resultante en su cuenta antes de confiar en ese comportamiento de anulación.
Si un número no está vinculado a una aplicación habilitada para Mensajes, los mensajes SMS entrantes a ese número enviarán una solicitud al webhook de mensajes entrantes definido en la carpeta nivel de cuenta en el Configuración de la API en lugar de la configuración del webhook Mensajes a nivel de aplicación.
Enviar un SMS (Mensajes salientes)
Punto final
| Aspecto | Messages API | SMS API (heredado) |
|---|---|---|
| Punto final de envío | POST /v1/messages | POST /sms/json |
| Método | POST | POST |
| Tipo de contenido | aplicación/json | aplicación/x-www-form-urlencoded |
Solicitar estructura
Carga útil de la API de Messages:
{
"message_type": "text",
"text": "Hello from Vonage",
"to": "447700900000",
"from": "Vonage",
"channel": "sms"
}
Carga útil de SMS API (heredada):
from=Vonage
text=Hello from Vonage
to=447700900000
Diferencias clave en el cuerpo de la solicitud
| Campo | Messages API | SMS API (heredado) |
|---|---|---|
to | to | to |
from | from | from |
text | text | text |
| Canal | "channel": "sms" (obligatorio) | Implícito (sólo SMS) |
| Tipo de mensaje | "message_type": "text" (obligatorio) | Implícito |
Fragmentos de código
Los siguientes fragmentos de código incluyen el ejemplo cURL y los ejemplos Server SDK disponibles para cada API.
Fragmentos de código de la API de Messages
| Clave | Descripción |
|---|---|
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 |
SMS_SENDER_ID | The alphanumeric string that represents the name or number of the organization sending the message. |
Requisitos previos
Si no tiene una solicitud, puede crear uno. Asegúrese también de configure sus webhooks.
Escriba el código
Añada lo siguiente a 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."
}'
Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
Si no tiene una solicitud, puede crear uno. Asegúrese también de configure sus webhooks.
npm install @vonage/server-sdk @vonage/messagesCrea un archivo llamado send-sms.js y añade el siguiente código:
const { Vonage } = require('@vonage/server-sdk');
const { Channels } = require('@vonage/messages');
/**
* It is best to send messages using JWT instead of basic auth. If you leave out
* apiKey and apiSecret, the messages SDK will send requests using JWT tokens
*
* @link https://developer.vonage.com/en/messages/technical-details#authentication
*/
const vonage = new Vonage(
{
applicationId: VONAGE_APPLICATION_ID,
privateKey: VONAGE_PRIVATE_KEY,
},
{
...(MESSAGES_API_URL ? {apiHost: MESSAGES_API_URL} : {}),
},
);Escriba el código
Añada lo siguiente a send-sms.js:
vonage.messages.send({
messageType: 'sms',
channel: Channels.SMS,
text: 'This is an SMS text message sent using the Messages API',
to: MESSAGES_TO_NUMBER,
from: SMS_SENDER_ID,
})
.then(({ messageUUID }) => console.log(messageUUID))
.catch((error) => console.error(error));Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
Si no tiene una solicitud, puede crear uno. Asegúrese también de configure sus webhooks.
Añada lo siguiente a build.gradle:
implementation 'com.vonage:server-sdk-kotlin:2.1.1'Crea un archivo llamado SendSmsText y añade el siguiente código al método main:
val client = Vonage {
applicationId(VONAGE_APPLICATION_ID)
privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
}Escriba el código
Añada lo siguiente al método main del archivo SendSmsText:
val messageId = client.messages.send(
smsText {
to(MESSAGES_TO_NUMBER)
from(SMS_SENDER_ID)
text("This is an SMS text message sent using the Messages API")
}
)Ejecute su código
Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.kt.messages.sms por el paquete que contiene SendSmsText:
Requisitos previos
Si no tiene una solicitud, puede crear uno. Asegúrese también de configure sus webhooks.
Añada lo siguiente a build.gradle:
implementation 'com.vonage:server-sdk:9.3.1'Crea un archivo llamado SendSmsText y añade el siguiente código al método main:
VonageClient client = VonageClient.builder()
.applicationId(VONAGE_APPLICATION_ID)
.privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
.build();Escriba el código
Añada lo siguiente al método main del archivo SendSmsText:
var response = client.getMessagesClient().sendMessage(
SmsTextRequest.builder()
.from(SMS_SENDER_ID).to(MESSAGES_TO_NUMBER)
.text("This is an SMS text message sent using the Messages API")
.build()
);
System.out.println("Message sent successfully. ID: " + response.getMessageUuid());Ejecute su código
Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.messages.sms por el paquete que contiene SendSmsText:
Requisitos previos
Si no tiene una solicitud, puede crear uno. Asegúrese también de configure sus webhooks.
Install-Package VonageEscriba el código
Añada lo siguiente a SendSms.cs:
var credentials = Credentials.FromAppIdAndPrivateKeyPath(VONAGE_APP_ID, VONAGE_PRIVATE_KEY_PATH);
var vonageClient = new VonageClient(credentials);
var request = new Vonage.Messages.Sms.SmsRequest
{
To = MESSAGES_TO_NUMBER,
From = SMS_SENDER_ID,
Text = "An SMS sent using the Vonage Messages API"
};
var response = await vonageClient.MessagesClient.SendAsync(request);Requisitos previos
Si no tiene una solicitud, puede crear uno. Asegúrese también de configure sus webhooks.
composer require vonage/clientCrea un archivo llamado send-sms.php y añade el siguiente código:
$keypair = new \Vonage\Client\Credentials\Keypair(
file_get_contents(VONAGE_APPLICATION_PRIVATE_KEY_PATH),
VONAGE_APPLICATION_ID
);
$client = new \Vonage\Client($keypair);Escriba el código
Añada lo siguiente a send-sms.php:
$sms = new \Vonage\Messages\Channel\SMS\SMSText(
TO_NUMBER,
FROM_NUMBER,
'This is an SMS sent using the Vonage PHP SDK'
);Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
Si no tiene una solicitud, puede crear uno. Asegúrese también de configure sus webhooks.
pip install vonage python-dotenvEscriba el código
Añada lo siguiente a send-sms.py:
from vonage import Auth, Vonage
from vonage_messages import Sms
client = Vonage(
Auth(
application_id=VONAGE_APPLICATION_ID,
private_key=VONAGE_PRIVATE_KEY,
)
)
response = client.messages.send(
Sms(
to=MESSAGES_TO_NUMBER,
from_=SMS_SENDER_ID,
text='This is an SMS sent using the Vonage Messages API.',
)
)
print(response)Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
Si no tiene una solicitud, puede crear uno. Asegúrese también de configure sus webhooks.
gem install vonageCrea un archivo llamado send-sms.rb y añade el siguiente código:
Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Fragmentos de código de la SMS API (heredada)
| Clave | Descripción |
|---|---|
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. |
Escriba el código
Añada lo siguiente a 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'
Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
npm install @vonage/server-sdkCrea un archivo llamado send.js y añade el siguiente código:
const { Vonage } = require('@vonage/server-sdk');
const vonage = new Vonage({
apiKey: VONAGE_API_KEY,
apiSecret: VONAGE_API_SECRET,
});Escriba el código
Añada lo siguiente a send.js:
vonage.sms.send({
to: SMS_TO_NUMBER,
from: SMS_SENDER_ID,
text: 'A text message sent using the Vonage SMS API',
})
.then((resp) => {
console.log('Message sent successfully');
console.log(resp);
})
.catch((err) => {
console.log('There was an error sending the messages.');
console.error(err);
});Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
Añada lo siguiente a build.gradle:
implementation 'com.vonage:server-sdk-kotlin:2.1.1'Crea un archivo llamado SendMessage y añade el siguiente código al método main:
val client = Vonage {
apiKey(VONAGE_API_KEY)
apiSecret(VONAGE_API_SECRET)
}Escriba el código
Añada lo siguiente al método main del archivo SendMessage:
val response = client.sms.sendText(
from = SMS_SENDER_ID,
to = SMS_TO_NUMBER,
message = "Hello from Vonage SMS API"
)
println(
if (response.wasSuccessfullySent())
"Message sent successfully."
else
"Message failed with error: ${response[0].errorText}"
)Ejecute su código
Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.kt.sms por el paquete que contiene SendMessage:
Requisitos previos
Añada lo siguiente a build.gradle:
implementation 'com.vonage:server-sdk:9.3.1'Crea un archivo llamado SendMessage y añade el siguiente código al método main:
VonageClient client = VonageClient.builder().apiKey(VONAGE_API_KEY).apiSecret(VONAGE_API_SECRET).build();Escriba el código
Añada lo siguiente al método main del archivo SendMessage:
TextMessage message = new TextMessage(
SMS_SENDER_ID, SMS_TO_NUMBER,
"A text message sent using the Vonage SMS API"
);
SmsSubmissionResponse response = client.getSmsClient().submitMessage(message);
if (response.getMessages().get(0).getStatus() == MessageStatus.OK) {
System.out.println("Message sent successfully.");
} else {
System.out.println("Message failed with error: " + response.getMessages().get(0).getErrorText());
}Ejecute su código
Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.sms por el paquete que contiene SendMessage:
Requisitos previos
Install-Package VonageCrea un archivo llamado SendSms.cs y añade el siguiente código:
using Vonage;
using Vonage.Request;Añada lo siguiente a SendSms.cs:
var credentials = Credentials.FromApiKeyAndSecret(
vonageApiKey,
vonageApiSecret
);
var vonageClient = new VonageClient(credentials);Escriba el código
Añada lo siguiente a SendSms.cs:
var response = await vonageClient.SmsClient.SendAnSmsAsync(new Vonage.Messaging.SendSmsRequest()
{
To = SMS_TO_NUMBER,
From = SMS_SENDER_ID,
Text = "A text message sent using the Vonage SMS API"
});
Console.WriteLine(response.Messages[0].To);Requisitos previos
composer require vonage/clientCrea un archivo llamado send-sms.php y añade el siguiente código:
$keypair = new \Vonage\Client\Credentials\Keypair(VONAGE_PRIVATE_KEY, VONAGE_APPLICATION_ID);
$client = new \Vonage\Client($keypair);Escriba el código
Añada lo siguiente a send-sms.php:
$response = $client->sms()->send(
new \Vonage\SMS\Message\SMS(TO_NUMBER, BRAND_NAME, 'A text message sent using the Vonage SMS API')
);
$message = $response->current();
if ($message->getStatus() == 0) {
echo "The message was sent successfully\n";
} else {
echo "The message failed with status: " . $message->getStatus() . "\n";
}Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
pip install vonage python-dotenvEscriba el código
Añada lo siguiente a send-an-sms.py:
from vonage import Auth, Vonage
from vonage_sms import SmsMessage, SmsResponse
client = Vonage(Auth(api_key=VONAGE_API_KEY, api_secret=VONAGE_API_SECRET))
message = SmsMessage(
to=SMS_TO_NUMBER,
from_=SMS_SENDER_ID,
text="A text message sent using the Vonage SMS API.",
)
response: SmsResponse = client.sms.send(message)
print(response)Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
gem install vonageCrea un archivo llamado send.rb y añade el siguiente código:
Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Parámetros opcionales y diferencias de funciones
Una vez migrados los campos SMS obligatorios, el siguiente paso es revisar los parámetros SMS API opcionales de los que depende tu integración.
| Parámetro o aspecto de la SMS API | Equivalente de Messages API | Notas |
|---|---|---|
ttl | ttl | Ambas API admiten TTL, pero las unidades y los límites difieren. SMS API utiliza milisegundos con un rango de 20000 a 604800000. Messages API utiliza segundos con un rango de 20 a 604800. Ambos por defecto a 72 horas. |
trusted-number | trusted_recipient | Mismo propósito: anular las protecciones del Defensor del Fraude por mensaje para las cuentas elegibles. |
message-class | No hay equivalente | No hay equivalente directo de Messages API para SMS message-class. |
status-report-req | Sin equivalente directo | SMS API te permite solicitar DLRs explícitamente. Las devoluciones de llamada de estado de la Messages API se controlan mediante la configuración del webhook en lugar de mediante un booleano por mensaje. |
callback | webhook_url | Ambos anulan el destino de devolución de llamada de estado predeterminado en función de cada mensaje. |
client-ref | client_ref | Ambos te permiten adjuntar tu propia referencia para la correlación. |
entity-id | sms.entity_id | Mismo objetivo normativo; la denominación cambia del guión al subrayado. Anidado en el sms objeto. |
content-id | sms.content_id | Mismo objetivo normativo; la denominación cambia del guión al subrayado. Anidado en el sms objeto. |
pool-id | sms.pool_id | Mismo comportamiento de la agrupación de números; la denominación cambia del guión al guión bajo. Anidado en el sms objeto. |
account-ref | No hay equivalente | El parámetro de referencia de facturación/cuenta de SMS API no tiene un equivalente directo en Messages API. |
type / control de codificación | sms.encoding_type con text, unicodeo auto | SMS API utiliza type con text, unicodeo binary. Messages API detecta automáticamente la codificación por defecto. |
body, udh, protocol-id / campos binarios SMS | No hay equivalente | SMS API admite SMS binarios a través de type=binary junto con body, udhy protocol-id. |
Códigos de respuesta HTTP
Esta es una de las diferencias de comportamiento más significativas entre las dos API.
La SMS API siempre devuelve un 200 código de respuesta HTTP, independientemente del éxito o el fracaso, con un status en el cuerpo de la respuesta, cuyo valor corresponde al resultado.
La API Messages devuelve un archivo 202 código de respuesta para las solicitudes correctas, y 4xx o 5xx códigos para las respuestas de error.
En el siguiente cuadro comparativo se muestran algunos ejemplos.
| Escenario | Messages API | SMS API (heredado) |
|---|---|---|
| Éxito | Devuelve HTTP 202 Accepted en el éxito. | Siempre vuelve HTTP 200. El estado real se encuentra en el cuerpo de la respuesta ("status": "0" para el éxito). |
| Error de autenticación | HTTP 401 Unauthorized | HTTP 200 con el estado del cuerpo 4 (Invalid Credentials). |
| Parámetros no válidos | HTTP 422 Unprocessable Entity | HTTP 200 con el estado del cuerpo 2 (Missing Parameters) o 3 (Invalid Parameters). |
Véase Messages API errores, Códigos de error de SMS APIy el Punto final de envío de SMS API para conocer todos los detalles del error.
SMS API Respuesta correcta
{
"message-count": "1",
"messages": [
{
"to": "447700900000",
"message-id": "0A0000000123ABCD1",
"status": "0",
"remaining-balance": "3.14159265",
"message-price": "0.03330000",
"network": "23410"
}
]
}
Respuesta a error de SMS API
{
"message-count": "1",
"messages": [
{
"status": "4",
"error-text": "Bad Credentials"
}
]
}
Messages API Respuesta correcta
{
"message_uuid": "aaaaaaaa-bbbb-4ccc-8ddd-0123456789ab"
}
La API Messages devuelve un único archivo message_uuid en lugar de una matriz de objetos de mensaje. Utilice este UUID para correlacionar las devoluciones de llamada de estado.
Messages API Error Response (401 No autorizado)
{
"type": "https://developer.vonage.com/api-errors#unauthorized",
"title": "Unauthorized",
"detail": "You did not provide correct credentials.",
"instance": "bf0ca0bf927b3b52e3cb03217e1a1ddf"
}
Recibir un SMS (Mensajes entrantes)
Ambas API envían mensajes SMS entrantes a una URL de webhook configurada por ti. Existen algunas diferencias entre las dos API en cuanto a la estructura de la carga útil entrante y la denominación de los parámetros. La configuración de los webhooks se explica en Cómo configurar tu cuenta de Vonage para usar Messages API.
Carga útil de entrada de SMS API
Cuando se recibe un mensaje en la API de SMS, Vonage envía una solicitud
Ejemplo de carga útil:
{
"msisdn": "447700900001",
"to": "447700900000",
"messageId": "0A0000000123ABCD1",
"text": "Hello from a user",
"type": "text",
"keyword": "HELLO",
"message-timestamp": "2020-01-01 12:00:00"
}
Carga útil de entrada de la API de Messages
Cuando se recibe un mensaje en Messages API, Vonage envía una solicitud
Ejemplo de carga útil:
{
"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"
}
}
Seguimiento del estado de los mensajes
La API de Messages utiliza retrollamadas de estado para notificar a su aplicación cuando cambia el estado de un mensaje. Son el equivalente en la Messages API de los recibos de entrega (DLR) utilizados por la SMS API.
Equivalentes de estado DLR
A continuación se muestran los equivalentes más cercanos de la API de Messages para los estados DLR de la API de SMS:
| SMS API Estado DLR | Equivalente más cercano de la API de Messages | Notas |
|---|---|---|
accepted | submitted | Se produce cuando el mensaje se ha transmitido a una pasarela de proveedores. Se trata del evento facturable. |
buffered | No hay equivalente | Rara vez se utiliza en la práctica y no se reenvía. |
delivered | delivered | Indica la recepción por parte del dispositivo del usuario final, dependiendo del soporte del operador. |
expired | rejected | Normalmente corresponde al código de error de Messages API 1360. |
failed | rejected | Indica fallo del proveedor o error de red. |
unknown | rejected | Normalmente corresponde al código de error de Messages API 1330. |
rejected | rejected | Véase Messages API códigos de error. |
Para más información, consulte Llamadas de estado de la API de Messages.
Funciones adicionales de la Messages API
Aunque esta guía se centra en la migración de la integración de SMS, Messages API ofrece una serie de funciones adicionales que merece la pena explorar una vez completada la migración.
Mensajería multicanal
Messages API admite varios canales a través de una única y coherente interfaz API. Una vez que haya migrado su integración de SMS, puede añadir nuevos canales sin cambiar su integración principal:
| Canal | Descripción |
|---|---|
| MMS | Envíe contenidos multimedia (imágenes, audio, vídeo) a números de EE.UU. y Canadá. |
| RCS | Servicios de comunicación enriquecidos: envíe mensajes interactivos con imágenes, respuestas sugeridas y botones de acción a dispositivos Android e iOS. |
| Envíe y reciba mensajes en WhatsApp utilizando una cuenta de empresa verificada. | |
| Facebook Messenger | Capte clientes en Messenger. |
| Viber | Enviar mensajes a través del servicio Viber Mensajes. |
| Correo electrónico | Envíe correos electrónicos transaccionales utilizando la misma API unificada que ya utiliza para otros canales de mensajería. |
La estructura de la solicitud es la misma para todos los canales. Para enviar un mensaje por un canal diferente, cambie el campo del canal y añada los parámetros específicos del canal. El gestor de webhooks para devoluciones de llamada de estado y mensajes entrantes funciona de la misma manera independientemente del canal.
Conmutación por error
La Messages API admite flujos de trabajo de conmutación por error, que le permiten reintentar automáticamente un mensaje en un canal diferente si el primer intento falla o no se lee dentro de una ventana de tiempo especificada. Por ejemplo, puede enviar un mensaje de WhatsApp y reintentarlo por SMS si el destinatario no tiene WhatsApp o no lee el mensaje en un plazo determinado.
Véase Fallo de la API de Messages para más información.
Contenido enriquecido
En los canales que lo admiten (RCS, WhatsApp, MMS, Messenger, Viber), la Messages API permite enviar:
- Imágenes, vídeo, audio y archivos adjuntos
- Plantillas de mensajes interactivos
- Botones de respuesta y de acción sugeridos (RCS, WhatsApp)
- Tarjetas enriquecidas y carruseles (RCS)