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

LaAWS SDK for JavaScript versión 3 (v3) es una reescritura de la versión 2 con algunas funciones nuevas y excelentes, incluida la arquitectura modular. Para obtener más información, consulte la Guía para desarrolladores de la versiónAWS SDK for JavaScript 3.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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 en dispositivos habilitados para SMS. Los módulos de Node.js usan el SDK para JavaScript para publicar mensajes SMS mediante los métodos deAWS.SNSclase de cliente:

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 los mensajes SMS, como, por ejemplo, cómo se optimizan las entregas (costos o entregas fiables), el límite de gasto mensual, cómo se registran las entregas de mensajes y si desea suscribirse a informes de uso de SMS diarios. Estas preferencias se recuperan y se establecen como atributos de SMS para Amazon SNS.

En este ejemplo, utilice 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 información detallada sobre los atributos de SMS, consulteSetSMSAttributesen 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 AWS.SNS. Para llamar agetSMSAttributes, cree una promesa para invocar un objeto de servicio de Amazon SNS transfiriendo 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 muestra se puede encontrar aquí en GitHub.

Configuración de atributos de SMS

En este ejemplo, utilice 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 obtener información detallada sobre los atributos de SMS, consulteSetSMSAttributesen 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 AWS.SNS. Para llamar agetSMSAttributes, cree una promesa para invocar un objeto de servicio de Amazon SNS transfiriendo 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 muestra 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 AWS.SNS. Para llamar acheckIfPhoneNumberIsOptedOut, cree una promesa para invocar un objeto de servicio de Amazon SNS transfiriendo 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 muestra 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 AWS.SNS. Para llamar alistPhoneNumbersOptedOut, cree una promesa para invocar un objeto de servicio de Amazon SNS transfiriendo 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 muestra 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 AWS.SNS. Para llamar apublish, cree una promesa para invocar un objeto de servicio de Amazon SNS transfiriendo 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 muestra se puede encontrar aquí en GitHub.