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

La Guía de referencia de la API de AWS SDK for JavaScript V3 describe en detalle todas las operaciones de la API para la versión 3 (V3) de AWS SDK for JavaScript.

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 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 SNS siguientes:

Tareas previas necesarias

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

  • Configure el entorno del proyecto para ejecutar estos ejemplos de Node TypeScript e instale los módulos de AWS SDK for JavaScript y de terceros necesarios. Siga las instrucciones en GitHub.

  • Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información sobre cómo proporcionar un archivo de credenciales compartido, consulte Archivos de configuración y credenciales compartidos en la Guía de referencia de SDK y herramientas de AWS.

importante

Estos ejemplos muestran cómo importar/exportar comandos y objetos del servicio de cliente mediante ECMAScript6 (ES6).

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 directorio libs y cree un módulo Node.js con el nombre de archivo snsClient.js. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. Sustituya REGION por su región de AWS.

import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});

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

Cree un módulo de Node.js con el nombre de archivo get-sms-attributes.js.

Configure el SDK como se mostró anteriormente, incluida la descarga de los clientes y paquetes necesarios. 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 SetTopicAttributesCommand de la clase de cliente de Amazon SNS. Para llamar al método SetSMSAttributesCommand, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros.

nota

Sustituya ATTRIBUTE_NAME por el nombre del atributo.

import { GetSMSAttributesCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; export const getSmsAttributes = async () => { const response = await snsClient.send( // If you have not modified the account-level mobile settings of SNS, // the DefaultSMSType is undefined. For this example, it was set to // Transactional. new GetSMSAttributesCommand({ attributes: ["DefaultSMSType"] }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '67ad8386-4169-58f1-bdb9-debd281d48d5', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // attributes: { DefaultSMSType: 'Transactional' } // } return response; };

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

node get-sms-attributes.js

Este código de muestra 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 directorio libs y cree un módulo Node.js con el nombre de archivo snsClient.js. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. Sustituya REGION por su región de AWS.

import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});

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

Cree un módulo de Node.js con el nombre de archivo set-sms-attribute-type.js. Configure el SDK como se mostró anteriormente, incluida la instalación de los clientes y paquetes necesarios. 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 SetTopicAttributesCommand de la clase de cliente de Amazon SNS. Para llamar al método SetSMSAttributesCommand, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros.

import { SetSMSAttributesCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {"Transactional" | "Promotional"} defaultSmsType */ export const setSmsType = async (defaultSmsType = "Transactional") => { const response = await snsClient.send( new SetSMSAttributesCommand({ attributes: { // Promotional – (Default) Noncritical messages, such as marketing messages. // Transactional – Critical messages that support customer transactions, // such as one-time passcodes for multi-factor authentication. DefaultSMSType: defaultSmsType, }, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '1885b977-2d7e-535e-8214-e44be727e265', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // } // } return response; };

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

node set-sms-attribute-type.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 directorio libs y cree un módulo Node.js con el nombre de archivo snsClient.js. Copie y pegue el siguiente código en él, para crear el objeto de cliente Amazon SNS. Sustituya REGION por su región de AWS.

import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});

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

Cree un módulo de Node.js con el nombre de archivo check-if-phone-number-is-opted-out.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 CheckIfPhoneNumberIsOptedOutCommand de la clase de cliente de Amazon SNS. Para llamar al método CheckIfPhoneNumberIsOptedOutCommand, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros.

nota

Sustituya PHONE_NUMBER por el número de teléfono.

import { CheckIfPhoneNumberIsOptedOutCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; export const checkIfPhoneNumberIsOptedOut = async ( phoneNumber = "5555555555", ) => { const command = new CheckIfPhoneNumberIsOptedOutCommand({ phoneNumber, }); const response = await snsClient.send(command); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '3341c28a-cdc8-5b39-a3ee-9fb0ee125732', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // isOptedOut: false // } return response; };

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

node check-if-phone-number-is-opted-out.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 directorio libs y cree un módulo Node.js con el nombre de archivo snsClient.js. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. Sustituya REGION por su región de AWS.

import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});

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

Cree un módulo de Node.js con el nombre de archivo list-phone-numbers-opted-out.js. Configure el SDK como le hemos mostrado anteriormente. Cree un objeto vacío como parámetro.

Transfiera el objeto al método ListPhoneNumbersOptedOutCommand de la clase de cliente de Amazon SNS. Para llamar al método ListPhoneNumbersOptedOutCommand, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros.

import { ListPhoneNumbersOptedOutCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; export const listPhoneNumbersOptedOut = async () => { const response = await snsClient.send( new ListPhoneNumbersOptedOutCommand({}), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '44ff72fd-1037-5042-ad96-2fc16601df42', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // phoneNumbers: ['+15555550100'] // } return response; };

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

node list-phone-numbers-opted-out.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 directorio libs y cree un módulo Node.js con el nombre de archivo snsClient.js. Copie y pegue el siguiente código en él, para crear el objeto de cliente de Amazon SNS. Sustituya REGION por su región de AWS.

import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});

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

Cree un módulo de Node.js con el nombre de archivo publish-sms.js. Configure el SDK como se mostró anteriormente, incluida la instalación de los clientes y paquetes necesarios. 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 PublishCommand de la clase de cliente de Amazon SNS. Para llamar al método PublishCommand, cree una función asincrónica para invocar un objeto de servicio de Amazon SNS mediante el traspaso del objeto de parámetros.

nota

Sustituya TEXT_MESSAGE por el mensaje de texto y PHONE_NUMBER por el número de teléfono.

import { PublishCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {string | Record<string, any>} message - The message to send. Can be a plain string or an object * if you are using the `json` `MessageStructure`. * @param {*} phoneNumber - The phone number to send the message to. */ export const publish = async ( message = "Hello from SNS!", phoneNumber = "+15555555555", ) => { const response = await snsClient.send( new PublishCommand({ Message: message, // One of PhoneNumber, TopicArn, or TargetArn must be specified. PhoneNumber: phoneNumber, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '7410094f-efc7-5f52-af03-54737569ab77', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // MessageId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' // } return response; };

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

node publish-sms.js

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