Envío de mensajes SMS con Amazon SNS - AWS SDK for JavaScript

Anunciamos el próximo fin del soporte para AWS SDK for JavaScript v2. Se recomienda que migre a AWS SDK for JavaScript v3. Para ver las fechas, los detalles adicionales y la información sobre cómo realizar la migración, consulte el anuncio enlazado.

Envío de mensajes SMS con Amazon SNS

JavaScript code example that applies to Node.js execution

Este ejemplo de código de Node.js muestra:

  • Cómo obtener y establecer las preferencias de mensajería de SMS para Amazon SNS.

  • Cómo comprobar un número de teléfono para ver si se ha desactivado la opción de recepción de mensajes SMS.

  • Cómo obtener una lista de números de teléfono con la opción de recepción de mensajes SMS desactivada

  • Cómo enviar un mensaje SMS.

El escenario

Puede utilizar Amazon SNS para enviar mensajes de texto o mensajes SMS a dispositivos habilitados para recibir SMS. Dispone de la capacidad de enviar un mensaje directamente a un número de teléfono o de enviar un mensaje a varios números de teléfono a la vez suscribiendo dichos números de teléfono a un tema y enviando el mensaje al tema.

En este ejemplo, va a utilizar una serie de módulos de Node.js para publicar mensajes de texto SMS de Amazon SNS a dispositivos habilitados para SMS. Los módulos de Node.js usan el SDK para JavaScript para publicar mensajes SMS mediante los métodos de clase de cliente de AWS.SNS siguientes:

Tareas previas necesarias

Para configurar y ejecutar este ejemplo, primero debe completar estas tareas:

Obtención de atributos de SMS

Utilice Amazon SNS para especificar las preferencias de mensajería SMS, como la forma en que se optimizan sus envíos (por coste o por fiabilidad de la entrega), su límite de gasto mensual, cómo se registran los envíos de mensajes y si desea suscribirse a informes de uso de SMS diarios. Estas preferencias se recuperan y se establecen como atributos SMS para Amazon SNS.

En este ejemplo, va a utilizar un módulo de Node.js para obtener los atributos de SMS actuales en Amazon SNS. Cree un módulo de Node.js con el nombre de archivo sns_getsmstype.js. Configure el SDK como le hemos mostrado anteriormente. Cree un objeto que contenga los parámetros para obtener atributos de SMS, como los nombres de los atributos individuales que desea obtener. Para obtener más información sobre los atributos de SMS disponibles, consulte SetSMSAttributes en la Referencia de la API de Amazon Simple Notification Service.

Este ejemplo obtiene el atributo DefaultSMSType que controla si se envían mensajes SMS como Promotional, que optimiza la entrega de mensajes para conseguir el costo más bajo, o como Transactional, que optimiza el envío de mensajes para conseguir la máxima fiabilidad. Transfiera los parámetros al método setTopicAttributes de la clase de cliente de Amazon SNS. Para llamar al método getSMSAttributes, cree una promesa para invocar un objeto de servicio de Amazon SNS pasando el objeto de parámetros. Luego gestione la response en la devolución de llamada de la promesa.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set region AWS.config.update({ region: "REGION" }); // Create SMS Attribute parameter you want to get var params = { attributes: [ "DefaultSMSType", "ATTRIBUTE_NAME", /* more items */ ], }; // Create promise and SNS service object var getSMSTypePromise = new AWS.SNS({ apiVersion: "2010-03-31" }) .getSMSAttributes(params) .promise(); // Handle promise's fulfilled/rejected states getSMSTypePromise .then(function (data) { console.log(data); }) .catch(function (err) { console.error(err, err.stack); });

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node sns_getsmstype.js

Este código de ejemplo se puede encontrar aquí en GitHub.

Configuración de atributos de SMS

En este ejemplo, va a utilizar un módulo de Node.js para obtener los atributos de SMS actuales en Amazon SNS. Cree un módulo de Node.js con el nombre de archivo sns_setsmstype.js. Configure el SDK como le hemos mostrado anteriormente. Cree un objeto que contenga los parámetros para establecer atributos de SMS, como los nombres de los atributos individuales que desea establecer y los valores que se establecerán para cada uno de ellos. Para todos los atributos de SMS, consulte SetSMSAttributes en la Referencia de la API de Amazon Simple Notification Service.

Este ejemplo establece el atributo DefaultSMSType en Transactional, que optimiza el envío de mensajes para conseguir la máxima fiabilidad. Transfiera los parámetros al método setTopicAttributes de la clase de cliente de Amazon SNS. Para llamar al método getSMSAttributes, cree una promesa para invocar un objeto de servicio de Amazon SNS pasando el objeto de parámetros. Luego gestione la response en la devolución de llamada de la promesa.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set region AWS.config.update({ region: "REGION" }); // Create SMS Attribute parameters var params = { attributes: { /* required */ DefaultSMSType: "Transactional" /* highest reliability */, //'DefaultSMSType': 'Promotional' /* lowest cost */ }, }; // Create promise and SNS service object var setSMSTypePromise = new AWS.SNS({ apiVersion: "2010-03-31" }) .setSMSAttributes(params) .promise(); // Handle promise's fulfilled/rejected states setSMSTypePromise .then(function (data) { console.log(data); }) .catch(function (err) { console.error(err, err.stack); });

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node sns_setsmstype.js

Este código de ejemplo se puede encontrar aquí en GitHub.

Comprobación de si se ha desactivado un número de teléfono

En este ejemplo, va a utilizar un módulo de Node.js para comprobar si un número de teléfono tiene desactivada la opción de recibir mensajes SMS. Cree un módulo de Node.js con el nombre de archivo sns_checkphoneoptout.js. Configure el SDK como le hemos mostrado anteriormente. Cree un objeto que contenga el número de teléfono que se desea comprobar como parámetro.

Este ejemplo establece el parámetro PhoneNumber para especificar el número de teléfono que se va a comprobar. Transfiera el objeto al método checkIfPhoneNumberIsOptedOut de la clase de cliente de Amazon SNS. Para llamar al método checkIfPhoneNumberIsOptedOut, cree una promesa para invocar un objeto de servicio de Amazon SNS pasando el objeto de parámetros. Luego gestione la response en la devolución de llamada de la promesa.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set region AWS.config.update({ region: "REGION" }); // Create promise and SNS service object var phonenumPromise = new AWS.SNS({ apiVersion: "2010-03-31" }) .checkIfPhoneNumberIsOptedOut({ phoneNumber: "PHONE_NUMBER" }) .promise(); // Handle promise's fulfilled/rejected states phonenumPromise .then(function (data) { console.log("Phone Opt Out is " + data.isOptedOut); }) .catch(function (err) { console.error(err, err.stack); });

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node sns_checkphoneoptout.js

Este código de ejemplo se puede encontrar aquí en GitHub.

Generación de una lista de los números de teléfono desactivados

En este ejemplo, va a utilizar un módulo de Node.js para obtener una lista de números de teléfono que tienen desactivada la opción de recibir mensajes SMS. Cree un módulo de Node.js con el nombre de archivo sns_listnumbersoptedout.js. Configure el SDK como le hemos mostrado anteriormente. Cree un objeto vacío como parámetro.

Transfiera el objeto al método listPhoneNumbersOptedOut de la clase de cliente de Amazon SNS. Para llamar al método listPhoneNumbersOptedOut, cree una promesa para invocar un objeto de servicio de Amazon SNS pasando el objeto de parámetros. Luego gestione la response en la devolución de llamada de la promesa.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set region AWS.config.update({ region: "REGION" }); // Create promise and SNS service object var phonelistPromise = new AWS.SNS({ apiVersion: "2010-03-31" }) .listPhoneNumbersOptedOut({}) .promise(); // Handle promise's fulfilled/rejected states phonelistPromise .then(function (data) { console.log(data); }) .catch(function (err) { console.error(err, err.stack); });

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node sns_listnumbersoptedout.js

Este código de ejemplo se puede encontrar aquí en GitHub.

Publicación de un mensaje SMS

En este ejemplo, utilice un módulo de Node.js para enviar un mensaje SMS a un número de teléfono. Cree un módulo de Node.js con el nombre de archivo sns_publishsms.js. Configure el SDK como le hemos mostrado anteriormente. Cree un objeto que contenga los parámetros Message y PhoneNumber.

Cuando envíe un mensaje SMS, especifique el número de teléfono usando la formato E.164. E.164 es un estándar de estructura de número de teléfono utilizado para las telecomunicaciones internacionales. Los números que aplican este formato pueden tener un máximo de 15 dígitos y van prefijados con el carácter (+) y el código de país. Por ejemplo, un número de teléfono de los EE. UU. en formato E.164 se mostraría como +1001XXX5550100.

En este ejemplo se establece el parámetro PhoneNumber para especificar el número de teléfono al que se enviará el mensaje. Transfiera el objeto al método publish de la clase de cliente de Amazon SNS. Para llamar al método publish, cree una promesa para invocar un objeto de servicio de Amazon SNS pasando el objeto de parámetros. Luego gestione la response en la devolución de llamada de la promesa.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set region AWS.config.update({ region: "REGION" }); // Create publish parameters var params = { Message: "TEXT_MESSAGE" /* required */, PhoneNumber: "E.164_PHONE_NUMBER", }; // Create promise and SNS service object var publishTextPromise = new AWS.SNS({ apiVersion: "2010-03-31" }) .publish(params) .promise(); // Handle promise's fulfilled/rejected states publishTextPromise .then(function (data) { console.log("MessageID is " + data.MessageId); }) .catch(function (err) { console.error(err, err.stack); });

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node sns_publishsms.js

Este código de ejemplo se puede encontrar aquí en GitHub.