

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Configuration des préférences de messagerie SMS dans Amazon SNS
<a name="sms_preferences"></a>

Utilisez Amazon SNS pour spécifier des préférences pour la messagerie SMS. Par exemple, vous pouvez spécifier si vous souhaitez optimiser les distributions à des fins de coût ou de fiabilité, votre limite de dépenses mensuelles, comment les distributions sont consignées et si vous souhaitez vous abonner à des rapports d'utilisation quotidiens des SMS.

Ces préférences prennent effet pour chaque SMS que vous envoyez depuis votre compte, mais vous pouvez en remplacer certaines lorsque vous envoyez un message individuel. Pour de plus amples informations, veuillez consulter [Publier des SMS sur un téléphone mobile à l'aide d'Amazon SNS](sms_sending-overview.md#sms_publish-to-phone).

## Configuration des préférences de messagerie SMS à l'aide du AWS Management Console
<a name="sms_preferences_console"></a>

1. Connectez-vous à la console [Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Choisissez une [région qui prend en charge les SMS](https://docs.aws.amazon.com/general/latest/gr/end-user-messaging.html).

1. Sur le panneau de navigation, choisissez **Mobile**, puis **Messagerie texte (SMS)**.

1. Sur la page**SMS mobile**, dans la section **Préférences de SMS**, choisissez **Modifier**.

1. Sur la page **Modifier les préférences SMS**, dans la section **Détails**, procédez comme suit :

   1. Pour **Type de message par défaut**, sélectionnez l'une des options suivantes :
      + **Promotionnel** – Messages non stratégiques (par exemple, marketing). Amazon SNS optimise la distribution de messages pour générer le coût le plus bas.
      + **Transactionnel** (par défaut) – Messages stratégiques qui prennent en charge les transactions clients, comme des codes secrets uniques pour l'authentification multifacteur. Amazon SNS optimise la distribution de messages pour obtenir la meilleure fiabilité possible.

      Pour la tarification des messages promotionnels et transactionnels, consultez la page [Tarifs SMS internationaux](https://aws.amazon.com/sns/sms-pricing/).

   1. Dans le champ **Limite de dépense du compte**, saisissez le montant maximal (en USD) que vous voulez dépenser pour les SMS par mois calendaire.
**Important**  
Par défaut, le quota de dépenses est définie sur 1,00 USD. Si vous souhaitez augmenter le quota de service, [soumettez une demande](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-sns).
Si le montant défini dans la console dépasse le quota de votre service, Amazon SNS cesse la publication de SMS.
Amazon SNS étant un système distribué, il cesse d'envoyer des SMS quelques minutes après le dépassement du quota de dépense. Si vous continuez à envoyer des SMS au cours de cet intervalle, vous risquez de devoir payer des coûts au-delà de votre quota.

1. (Facultatif) Pour **ID de l'expéditeur par défaut**, entrez un ID personnalisé, par exemple votre marque, qui s'affichera en tant qu'expéditeur de l'appareil de réception.
**Note**  
Support pour les expéditeurs IDs varie selon les pays.

1. (Facultatif) Saisissez le nom du **compartiment Amazon S3 pour les rapports d'utilisation**.
**Note**  
La politique relative aux compartiments Amazon S3 doit accorder un accès en écriture à Amazon SNS.

1. Sélectionnez **Enregistrer les modifications**.

## Configuration des préférences (AWS SDKs)
<a name="sms_preferences_sdk"></a>

Pour définir vos préférences en matière de SMS à l'aide de l'un des AWS SDKs, utilisez l'action de ce SDK qui correspond à la `SetSMSAttributes` demande dans l'API Amazon SNS. Cette demande vous permet d'affecter des valeurs aux différents attributs SMS, tels que votre quota de dépenses mensuelles et votre type de SMS par défaut (promotionnel ou transactionnel). Pour tous les attributs des SMS, consultez la section [Set SMSAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html) dans le *manuel Amazon Simple Notification Service API Reference*.

Les exemples de code suivants illustrent comment utiliser `SetSMSAttributes`.

------
#### [ C\$1\$1 ]

**SDK pour C\$1\$1**  
 Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le [référentiel d’exemples de code AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sns#code-examples). 
Comment utiliser Amazon SNS pour définir l'attribut par défautSMSType .  

```
//! 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();
}
```
+  Pour plus de détails sur l'API, voir [Set SMSAttributes](https://docs.aws.amazon.com/goto/SdkForCpp/sns-2010-03-31/SetSMSAttributes) in *AWS SDK pour C\$1\$1 API Reference*. 

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

**AWS CLI**  
**Pour définir les attributs des SMS**  
L’exemple `set-sms-attributes` suivant définit l’ID d’expéditeur par défaut des SMS sur `MyName`.  

```
aws sns set-sms-attributes \
    --attributes DefaultSenderID=MyName
```
Cette commande ne produit aucune sortie.  
+  Pour plus de détails sur l'API, voir [Set SMSAttributes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sns/set-sms-attributes.html) in *AWS CLI Command Reference*. 

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

**SDK pour Java 2.x**  
 Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le [référentiel d’exemples de code 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);
        }
    }
}
```
+  Pour plus de détails sur l'API, voir [Set SMSAttributes](https://docs.aws.amazon.com/goto/SdkForJavaV2/sns-2010-03-31/SetSMSAttributes) in *AWS SDK for Java 2.x API Reference*. 

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

**SDK pour JavaScript (v3)**  
 Il y en a plus à ce sujet GitHub. Trouvez l'exemple complet et découvrez comment le configurer et l'exécuter dans le [ référentiel d’exemples de code AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/sns#code-examples). 
Créez le client dans un module séparé et exportez-le.  

```
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({});
```
Importez le kit SDK et les modules client et appelez l’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;
};
```
+  Pour plus d’informations, consultez le [AWS SDK pour JavaScript Guide du développeur](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/sns-examples-sending-sms.html#sending-sms-setattributes). 
+  Pour plus de détails sur l'API, voir [Set SMSAttributes](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sns/command/SetSMSAttributesCommand) in *AWS SDK pour JavaScript API Reference*. 

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

**Kit SDK pour PHP**  
 Il y en a plus à ce sujet GitHub. Trouvez l'exemple complet et découvrez comment le configurer et l'exécuter dans le [ référentiel d'exemples de code 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());
}
```
+  Pour plus d’informations, consultez le [Guide du développeur AWS SDK pour PHP](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/sns-examples-sending-sms.html#set-sms-attributes). 
+  Pour plus de détails sur l'API, voir [Set SMSAttributes](https://docs.aws.amazon.com/goto/SdkForPHPV3/sns-2010-03-31/SetSMSAttributes) in *AWS SDK pour PHP API Reference*. 

------

## Configuration des préférences de messagerie SMS pour une livraison spécifique au pays
<a name="sms_preferences_country_specific"></a>

Vous pouvez gérer et contrôler votre trafic SMS en n'envoyant des messages qu'à des pays de destination spécifiques. Cela garantit que vos messages sont envoyés uniquement aux pays approuvés, évitant ainsi des frais de SMS indésirables. Les instructions suivantes utilisent la configuration Protect d'Amazon Pinpoint pour spécifier les pays que vous souhaitez autoriser ou bloquer.

1. Ouvrez la AWS SMS console à l'adresse [https://console.aws.amazon.com/sms-voice/](https://console.aws.amazon.com/sms-voice/).

1. Dans le volet de navigation, sous **Vue d'ensemble**, dans la section **Démarrage rapide**, choisissez **Créer une configuration de protection**.

1. Sous **Détails de configuration de Protect**, entrez **un nom convivial** pour votre configuration de protection (par exemple, Allow-Only-AU).

1. Dans **les règles nationales relatives aux SMS**, cochez la case **Région/Pays** pour bloquer l'envoi de messages vers tous les pays pris en charge.

1. Décochez les cases correspondant aux pays dans lesquels vous souhaitez envoyer des messages. **Par exemple, pour autoriser les messages uniquement destinés à l'Australie, décochez la case Australie.**

1. Dans la section **Protéger les associations de configuration**, sous **Type d'association**, sélectionnez **Compte par défaut**. Cela garantira que la configuration AWS End User Messaging SMS Protect affecte tous les messages envoyés via Amazon SNS, Amazon [Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html) et l'appel d'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. Choisissez **Créer une configuration de protection** pour enregistrer vos paramètres.

   Le message de confirmation suivant s'affiche :

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

1. Connectez-vous à la [console Amazon SNS](https://console.aws.amazon.com/sns/home).

1. [**Publiez un message**](sns-publishing.md) dans l'un des pays bloqués, comme l'Inde.

   Le message ne sera pas délivré. Vous pouvez vérifier cela dans les journaux des échecs de livraison à l'aide de [CloudWatch](sms_stats_cloudwatch.md). Recherchez un groupe de journaux **sns/region/AccountID/DirectPublishToPhoneNumber/Failure**pour obtenir une réponse similaire à l'exemple suivant :

   ```
   {
   "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"
   }
   ```