

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.

# Configuración de las preferencias de mensajería SMS en Amazon SNS
<a name="sms_preferences"></a>

Utilice Amazon SNS para especificar las preferencias de mensajería SMS. Por ejemplo, puede especificar si desea optimizar las entregas por costo o fiabilidad, el límite de gasto mensual, cómo se registran las entregas y si desea suscribirse a informes de uso de SMS diarios.

Estas preferencias se aplican en todos los mensajes SMS que envía desde su cuenta, pero puede anular algunas de ellas cuando envía un mensaje individual. Para obtener más información, consulte [Publicación de mensajes SMS en un teléfono móvil mediante Amazon SNS](sms_sending-overview.md#sms_publish-to-phone).

## Configuración de las preferencias de mensajería SMS mediante Consola de administración de AWS
<a name="sms_preferences_console"></a>

1. Inicie sesión en la [consola de Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Elija una [región que admita la mensajería SMS](https://docs.aws.amazon.com/general/latest/gr/end-user-messaging.html).

1. En el panel de navegación, elija **Móvil** y después **Mensajería de texto (SMS)**.

1. En la página **Mensajería de texto a través del móvil (SMS)**, en la sección **Preferencias de mensajería de texto**, elija **Editar**.

1. En la página **Editar preferencias de mensajería de texto**, en la sección **Detalles**, haga lo siguiente:

   1. En **Default message type (Tipo predeterminado de mensaje)**, seleccione uno de los siguientes:
      + **Promocional**: mensajes no importantes (por ejemplo, marketing). Amazon SNS optimiza la entrega de mensajes para conseguir el costo más bajo.
      + **Transaccional** (predeterminado): mensajes de importancia que admiten transacciones del cliente, como claves de acceso de un solo uso para la autenticación multifactor. Amazon SNS optimiza el envío de mensajes para conseguir la máxima reputación.

      Para obtener información sobre los precios de los mensajes promocionales y transaccionales, consulte la página relacionada con los [precios globales de SMS](https://aws.amazon.com/sns/sms-pricing/).

   1. (Opcional) En **Account spend limit (Límite de gasto de la cuenta)**, escriba el importe (en USD) que desea gastar en mensajes SMS cada mes natural.
**importante**  
De forma predeterminada, la cuota de gasto se establece en 1,00 USD. Si desea aumentar la cuota de servicio, [envíe una solicitud](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-sns).
Si el importe establecido en la consola supera la cuota del servicio, Amazon SNS deja de publicar mensajes SMS.
Como Amazon SNS es un sistema distribuido, deja de enviar mensajes SMS en cuestión de minutos en cuanto se ha excedido la cuota de gasto. Durante este intervalo, si sigue enviando mensajes SMS, podría incurrir en costos que superen la cuota.

1. (Opcional) En **Default sender ID (ID de remitente predeterminado)**, escriba un ID personalizado, como la marca de su negocio, que se muestra como el remitente en el dispositivo receptor.
**nota**  
El soporte para el remitente IDs varía según el país.

1. (Opcional) Ingrese el nombre del **nombre del bucket de Amazon S3 para informes de uso**.
**nota**  
La política de bucket de Amazon S3 debe conceder acceso de escritura a Amazon SNS.

1. Seleccione **Save changes (Guardar cambios)**.

## Configuración de preferencias (AWS SDKs)
<a name="sms_preferences_sdk"></a>

Para configurar sus preferencias de SMS mediante una de las AWS SDKs, utilice la acción de ese SDK que corresponda a la `SetSMSAttributes` solicitud en la API de Amazon SNS. Con esta solicitud, debe asignar valores a los diferentes atributos de SMS, como la cuota de gasto mensual o el tipo de SMS predeterminado (transaccional o promocional). Para ver todos los atributos de SMS, consulte [Establecer SMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html) en la *referencia de la API de Amazon Simple Notification Service*.

Los siguientes ejemplos de código muestran cómo utilizar `SetSMSAttributes`.

------
#### [ C\+\+ ]

**SDK para C\+\+**  
 Hay más información al respecto GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sns#code-examples). 
Cómo utilizar Amazon SNS para establecer el atributo predeterminadoSMSType .  

```
//! Set the default settings for sending SMS messages.
/*!
  \param smsType: The type of SMS message that you will send by default.
  \param clientConfiguration: AWS client configuration.
  \return bool: Function succeeded.
 */
bool AwsDoc::SNS::setSMSType(const Aws::String &smsType,
                             const Aws::Client::ClientConfiguration &clientConfiguration) {
    Aws::SNS::SNSClient snsClient(clientConfiguration);

    Aws::SNS::Model::SetSMSAttributesRequest request;
    request.AddAttributes("DefaultSMSType", smsType);

    const Aws::SNS::Model::SetSMSAttributesOutcome outcome = snsClient.SetSMSAttributes(
            request);

    if (outcome.IsSuccess()) {
        std::cout << "SMS Type set successfully " << std::endl;
    }
    else {
        std::cerr << "Error while setting SMS Type: '"
                  << outcome.GetError().GetMessage()
                  << "'" << std::endl;
    }

    return outcome.IsSuccess();
}
```
+  Para obtener más información sobre la API, consulte [Establecer SMSAttributes](https://docs.aws.amazon.com/goto/SdkForCpp/sns-2010-03-31/SetSMSAttributes) en la *referencia de AWS SDK para C\+\+ la API*. 

------
#### [ CLI ]

**AWS CLI**  
**Establecimiento de los atributos de los mensajes SMS**  
En el siguiente ejemplo de `set-sms-attributes`, se establece el ID de remitente predeterminado para los mensajes SMS a `MyName`.  

```
aws sns set-sms-attributes \
    --attributes {{DefaultSenderID=MyName}}
```
Este comando no genera ninguna salida.  
+  Para obtener más información sobre la API, consulte [Set SMSAttributes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sns/set-sms-attributes.html) in *AWS CLI Command Reference*. 

------
#### [ Java ]

**SDK para Java 2.x**  
 Hay más información al respecto GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sns#code-examples). 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.SetSmsAttributesRequest;
import software.amazon.awssdk.services.sns.model.SetSmsAttributesResponse;
import software.amazon.awssdk.services.sns.model.SnsException;
import java.util.HashMap;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class SetSMSAttributes {
    public static void main(String[] args) {
        HashMap<String, String> attributes = new HashMap<>(1);
        attributes.put("DefaultSMSType", "Transactional");
        attributes.put("UsageReportS3Bucket", "janbucket");

        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();
        setSNSAttributes(snsClient, attributes);
        snsClient.close();
    }

    public static void setSNSAttributes(SnsClient snsClient, HashMap<String, String> attributes) {
        try {
            SetSmsAttributesRequest request = SetSmsAttributesRequest.builder()
                    .attributes(attributes)
                    .build();

            SetSmsAttributesResponse result = snsClient.setSMSAttributes(request);
            System.out.println("Set default Attributes to " + attributes + ". Status was "
                    + result.sdkHttpResponse().statusCode());

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```
+  Para obtener más información sobre la API, consulta [Establecer SMSAttributes](https://docs.aws.amazon.com/goto/SdkForJavaV2/sns-2010-03-31/SetSMSAttributes) en la *referencia AWS SDK for Java 2.x de la API*. 

------
#### [ JavaScript ]

**SDK para JavaScript (v3)**  
 Hay más información. GitHub Busque el ejemplo completo y aprenda a configurarlo y ejecutarlo en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/sns#code-examples). 
Cree el cliente en un módulo separado y expórtelo.  

```
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({});
```
Importe el SDK y los módulos cliente, y llame a la API.  

```
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 obtener información, consulte la [Guía para desarrolladores de AWS SDK para JavaScript](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/sns-examples-sending-sms.html#sending-sms-setattributes). 
+  Para obtener más información sobre la API, consulta [Establecer SMSAttributes](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sns/command/SetSMSAttributesCommand) en la *referencia AWS SDK para JavaScript de la API*. 

------
#### [ PHP ]

**SDK para PHP**  
 Hay más información al respecto GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code/sns#code-examples). 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->SetSMSAttributes([
        'attributes' => [
            'DefaultSMSType' => 'Transactional',
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```
+  Para obtener más información, consulte la [Guía para desarrolladores de AWS SDK para PHP](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/sns-examples-sending-sms.html#set-sms-attributes). 
+  Para obtener más información sobre la API, consulta [Establecer SMSAttributes](https://docs.aws.amazon.com/goto/SdkForPHPV3/sns-2010-03-31/SetSMSAttributes) en la *referencia AWS SDK para PHP de la API*. 

------

## Configuración de las preferencias de mensajería SMS para la entrega en un país específico
<a name="sms_preferences_country_specific"></a>

Puede administrar y controlar su tráfico de SMS enviando mensajes solo a países de destino específicos. Esto garantiza que sus mensajes se envíen solo a los países aprobados, lo que evita cargos por SMS no deseados. En las siguientes instrucciones se utiliza la configuración Proteger de Amazon Pinpoint para especificar los países que desea permitir o bloquear.

1. Abra la AWS SMS consola en [https://console.aws.amazon.com/sms-voice/](https://console.aws.amazon.com/sms-voice/).

1. En el panel de navegación, en **Información general**, en la sección de **Inicio rápido**, elija **Crear una configuración de protección**.

1. En **los detalles de configuración de Protect**, introduzca **un nombre comercial** para su configuración de protección (por ejemplo, Allow-Only-AU).

1. En **Reglas de país de SMS**, activa la casilla de verificación **Región/País** para bloquear el envío de mensajes a todos los países admitidos.

1. Desactive las casillas de los países a los que desea enviar mensajes. Por ejemplo, para permitir que los mensajes solo lleguen a Australia, desactive la casilla de **Australia**.

1. En la sección **Asociaciones de configuraciones de protección**, en **Tipo de asociación**, seleccione **Cuenta predeterminada**. Esto garantizará que la configuración de AWS End User Messaging SMS Protect afecte a todos los mensajes enviados a través de Amazon SNS, [Amazon](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html) Cognito y la llamada a la API Amazon Pinpoint. [https://docs.aws.amazon.com/pinpoint/latest/developerguide/send-messages-sms.html](https://docs.aws.amazon.com/pinpoint/latest/developerguide/send-messages-sms.html)

1. Elija **Crear configuración de protección** para guardar la configuración.

   Se muestra el siguiente mensaje de confirmación.

   ```
   Success Protect configuration protect-abc0123456789 has been created.
   ```

1. Inicie sesión en la [consola de Amazon SNS](https://console.aws.amazon.com/sns/home).

1. [**Publicación de un mensaje**](sns-publishing.md) en uno de los países bloqueados, como India.

   El mensaje no se entregará. Puede verificarlo en los registros de errores de entrega mediante. [CloudWatch](sms_stats_cloudwatch.md) Busque un grupo de registros **sns/region/AccountID/DirectPublishToPhoneNumber/Failure**para obtener una respuesta similar a la del siguiente ejemplo:

   ```
   {
   "notification": {
   "messageId": "bd59a509-XXXX-XXXX-82f8-fbdb8cb68217",
   "timestamp": "YYYY-MM-DD XX:XX:XX.XXXX“
   },
   "delivery": {
   "destination": "+91XXXXXXXXXX",
   "smsType": "Transactional",
   "providerResponse": "Cannot deliver message to the specified destination country",
   "dwellTimeMs": 85
   },
   "status": "FAILURE"
   }
   ```