

La versión 2 de AWS SDK para JavaScript ha llegado al final del soporte. Se recomienda que migre a [AWS SDK para JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/). Para ver detalles e información adicionales sobre cómo realizar la migración, consulte este [anuncio](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/).

# Envío de mensajes SMS con Amazon SNS
<a name="sns-examples-sending-sms"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/es_es/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**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
<a name="sns-examples-sending-sms-scenario"></a>

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 su 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:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#getSMSAttributes-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#getSMSAttributes-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#setSMSAttributes-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#setSMSAttributes-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#checkIfPhoneNumberIsOptedOut-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#checkIfPhoneNumberIsOptedOut-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#listPhoneNumbersOptedOut-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#listPhoneNumbersOptedOut-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#publish-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#publish-property)

## Tareas previas necesarias
<a name="sns-examples-sending-sms-prerequisites"></a>

Para configurar y ejecutar este ejemplo, primero debe completar estas tareas:
+ Instale Node.js. Para obtener más información acerca de la instalación de Node.js consulte el [sitio web de Node.js](http://nodejs.org).
+ Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información acerca de cómo proporcionar un archivo JSON de credenciales, consulte [Carga de credenciales en Node.js desde el archivo de credenciales compartidas](loading-node-credentials-shared.md).

## Obtención de atributos de SMS
<a name="sending-sms-getattributes"></a>

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](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html) 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 `AWS.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](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_getsmstype.js).

## Configuración de atributos de SMS
<a name="sending-sms-setattributes"></a>

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](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html) 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 `AWS.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](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_setsmstype.js).

## Comprobación de si se ha desactivado un número de teléfono
<a name="sending-sms-checkifphonenumberisoptedout"></a>

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 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](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_checkphoneoptout.js).

## Generación de una lista de los números de teléfono desactivados
<a name="sending-sms-listphonenumbersoptedout"></a>

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 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](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_listnumbersoptedout.js).

## Publicación de un mensaje SMS
<a name="sending-sms-publishsms"></a>

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 (\$1) 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 \$11001XXX5550100. 

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 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](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/sns/sns_publishsms.js).