Publication sur un téléphone mobile - Amazon Simple Notification Service

Publication sur un téléphone mobile

Vous pouvez utiliser Amazon SNS pour envoyer des messages SMS directement à un téléphone mobile sans abonner le numéro de téléphone à une rubrique Amazon SNS.

Note

L'abonnement de numéros de téléphone à une rubrique est utile si vous voulez envoyer un message à plusieurs numéros de téléphone à la fois. Pour obtenir des instructions sur la publication d'un SMS dans une rubrique, consultez Publication dans une rubrique.

Lorsque vous envoyez un message, vous pouvez contrôler s'il est optimisé en matière de coût ou de fiabilité de distribution. Vous pouvez également spécifier un ID de l'expéditeur ou numéro d'origine. Si vous envoyez le message par programmation à l'aide de l'API Amazon SNS ou des SDK AWS, vous pouvez indiquer un prix maximum pour la distribution du message.

Chaque SMS peut contenir jusqu'à 140 octets et le quota de caractères dépend du schéma de codage. Par exemple, un SMS peut contenir :

  • 160 caractères GSM

  • 140 caractères ASCII

  • 70 caractères UCS-2

Si vous publiez un message qui dépasse ce quota de taille, Amazon SNS le fractionne en plusieurs messages, chacun n'excédant pas ce quota. Les messages ne sont pas coupés au milieu d'un mot, mais plutôt sur la base d'un mot entier. Le quota de taille totale pour une action de publication de SMS est de 1600 octets.

Lorsque vous envoyez un SMS, vous spécifiez le numéro de téléphone au format E.164, structure de numérotation standard utilisée pour les télécommunications internationales. Les numéros qui respectent ce format peuvent comporter 15 chiffres au maximum, avec pour préfixe le signe plus (+) et le code pays. Par exemple, un numéro de téléphone américain au format E.164 se présente sous la forme suivante : +1XXX5550100.

Envoi d'un message (console)

  1. Connectez-vous à la console Amazon SNS.

  2. Dans le menu de la console, choisissez une région AWS qui prend en charge la messagerie SMS.

  3. Dans le panneau de navigation, sélectionnez Text messaging (SMS).

  4. Sur la page Messagerie texte mobile (SMS), choisissez Publier un message texte.

  5. Sur la page Publier un message SMS, pour Type de message choisissez l'une des options suivantes :

    • Promotional – Messages non stratégiques, tels que les messages marketing.

    • Transactional – Messages stratégiques qui prennent en charge les transactions clients, comme des codes secrets uniques pour l'authentification multifacteur.

    Note

    Ce paramètre au niveau des messages remplace le type de message par défaut au niveau du compte. Vous pouvez définir un type de message par défaut au niveau du compte dans la section Préférences de messagerie SMS de la page Messagerie texte mobile (SMS).

    Pour obtenir des informations sur la tarification des messages promotionnels et transactionnels, consultez Tarification mondiale SMS.

  6. Pour Numéro de téléphone de destination, saisissez le numéro de téléphone auquel vous souhaitez envoyer le message.

  7. Pour Message, saisissez le message à envoyer.

  8. (Facultatif) Sous Identités d'origine, spécifiez comment vous identifier auprès de vos destinataires :

    • Pour spécifier un ID de l'expéditeur, saisissez un ID personnalisé contenant entre 3 et 11 caractères alphanumériques, dont au moins une lettre et aucun espace. L'ID expéditeur s'affiche en tant qu'expéditeur du message sur l'appareil de réception. Par exemple, vous pouvez utiliser votre marque d'entreprise pour faciliter la reconnaissance de la source du message.

      La prise en charge des ID expéditeur varie selon les pays et/ou les régions. Par exemple, les messages diffusés à des numéros de téléphone américains n'afficheront pas l'ID expéditeur. Pour les pays et régions qui prennent en charge les ID expéditeur, consultez Régions et pays pris en charge.

      Si vous ne spécifiez pas d'ID d'expéditeur, l'un des éléments suivants s'affiche comme identité d'origine :

      • Dans les pays qui prennent en charge les codes longs, le code long apparaît.

      • Dans les pays où seuls les ID d'expéditeur sont pris en charge, NOTICE apparaît.

      Cet ID expéditeur au niveau du message remplace l'ID expéditeur par défaut, que vous définissez sur la page Préférences de SMS.

    • Pour spécifier un Numéro d'origine, saisissez une chaîne de 5 à 14 numéros à afficher comme numéro de téléphone de l'expéditeur sur l'appareil du destinataire. Cette chaîne doit correspondre à un numéro d'origine configuré dans votre Compte AWS pour le pays de destination. Le numéro d'origine peut être un numéro 10DLC, un numéro sans frais, un code long de personne à personne ou des codes courts. Pour plus d'informations, consultez Identités d’origine des messages SMS.

      Si vous ne spécifiez pas de numéro d'origine, Amazon SNS sélectionne un numéro d'origine à utiliser pour le message texte SMS, en fonction de la configuration de votre Compte AWS.

  9. Si vous envoyez des messages SMS à des destinataires en Inde, développez Attributs spécifiques au pays, et spécifiez les attributs suivants :

    • ID d'entité – ID d'entité ou ID d'entité principale (PE) pour l'envoi de messages SMS à des destinataires en Inde. Cet ID est une chaîne unique de 1 à 50 caractères fournie par la Telecom Regulatory Authority of India (TRAI) pour identifier l'entité que vous avez enregistrée auprès de la TRAI.

    • ID de modèle – ID de modèle pour l'envoi de messages SMS à des destinataires en Inde. Cet ID est une chaîne unique de 1 à 50 caractères fournie par la TRAI qui identifie le modèle que vous avez enregistré auprès de la TRAI. L'ID du modèle doit être associé à l'ID de l'expéditeur que vous avez spécifié pour le message.

    Pour plus d'informations sur l'envoi de messages SMS à des destinataires en Inde, consultez Exigences particulières pour l'envoi de messages SMS à des destinataires en Inde.

  10. Choisissez Publier le message.

Astuce

Pour envoyer des messages SMS à partir d'un numéro d'origine, vous pouvez également choisir Numéros d'origine dans le panneau de navigation de la console Amazon SNS. Choisissez un numéro d'origine qui inclut SMS dans la colonne Capacités, puis choisissez Publier un message texte.

Envoi d'un message (AWS kits SDK)

Pour envoyer un message SMS à l'aide de l'un des kits SDK AWS, utilisez l'opération API de ce kit SDK qui correspond à la demande Publish dans l'API Amazon SNS. Cette demande vous permet d'envoyer un SMS directement à un numéro de téléphone. Vous pouvez également utiliser le paramètre MessageAttributes pour définir les valeurs des noms d'attributs suivants :

AWS.SNS.SMS.SenderID

Un ID personnalisé contenant entre 3 et 11 caractères alphanumériques ou des traits d’union (-), dont au moins une lettre et aucun espace. L'ID de l'expéditeur s'affiche en tant qu'expéditeur du message sur l'appareil de réception. Par exemple, vous pouvez utiliser votre marque d'entreprise pour permettre de faciliter la reconnaissance de la source du message.

La prise en charge des ID expéditeur varie selon les pays ou les régions. Par exemple, les messages diffusés à des numéros de téléphone américains n'affichent pas l'ID d'expéditeur. Pour les pays et régions qui prennent en charge les ID de l'expéditeur, consultez Régions et pays pris en charge.

Si vous ne spécifiez pas d'ID d'expéditeur, un code long s'affiche comme l'ID d'expéditeur dans les régions ou pays pris en charge. Pour les pays ou régions qui requièrent un ID d'expéditeur sous forme alphabétique, AVIS s'affiche en tant qu'ID d'expéditeur.

Cet attribut au niveau du message remplace l'attribut au niveau du compte DefaultSenderID, que vous pouvez définir à l'aide de la demande SetSMSAttributes.

AWS.MM.SMS.OriginationNumber

Une chaîne personnalisée de 5 à 14 nombres, qui peut inclure un signe plus initial en option (+). Cette chaîne de nombres apparaît comme le numéro de téléphone de l'expéditeur sur le périphérique de réception. La chaîne doit correspondre à un numéro d'origine configuré dans votre compte AWS pour le pays de destination. Le numéro d'origine peut être un numéro 10DLC, un numéro sans frais, un code de personne à personne (P2P) long ou un code court. Pour plus d'informations, consultez Numéros d'origine.

Si vous ne spécifiez pas de numéro d'origine, Amazon SNS choisit un numéro d'origine en fonction de la configuration de votre compte AWS.

AWS.SNS.SMS.MaxPrice

Le prix maximum en USD que vous êtes prêt à payer pour envoyer le message SMS. Si Amazon SNS détermine que l'envoi du message entraînerait un coût supérieur à votre prix maximum, il n'envoie pas le message.

Cet attribut n'a aucun effet si vos coûts SMS du mois actuel ont déjà dépassé le quota défini pour l'attribut MonthlySpendLimit. Vous pouvez définir l'attribut MonthlySpendLimit à l'aide de la demande SetSMSAttributes.

Si vous envoyez le message à une rubrique Amazon SNS, le prix maximum s'applique à chaque distribution de message envoyée sur chaque numéro de téléphone abonné à la rubrique.

AWS.SNS.SMS.SMSType

Le type de message que vous envoyez :

  • Promotional (par défaut) – Messages non stratégiques, tels que messages marketing.

  • Transactional – Messages stratégiques qui prennent en charge les transactions clients, comme des codes secrets uniques pour l'authentification multifacteur.

Cet attribut au niveau du message remplace l'attribut au niveau du compte DefaultSMSType, que vous pouvez définir à l'aide de la demande SetSMSAttributes.

AWS.MM.SMS.EntityId

Cet attribut est requis uniquement pour l'envoi de messages SMS à des destinataires en Inde.

Il s'agit de votre ID d'entité ou ID d'entité principale (PE) pour l'envoi de messages SMS aux destinataires en Inde. Cet ID est une chaîne unique de 1 à 50 caractères fournie par la Telecom Regulatory Authority of India (TRAI) pour identifier l'entité que vous avez enregistrée auprès de la TRAI.

AWS.MM.SMS.TemplateId

Cet attribut est requis uniquement pour l'envoi de messages SMS à des destinataires en Inde.

Ceci est votre modèle pour l'envoi de messages SMS à des destinataires en Inde. Cet ID est une chaîne unique de 1 à 50 caractères fournie par TRAI qui identifie le modèle que vous avez enregistré auprès de la TRAI. L'ID du modèle doit être associé à l'ID de l'expéditeur que vous avez spécifié pour le message.

Envoi d'un message

Les exemples de code suivants montrent comment publier des messages SMS à l'aide d'Amazon SNS.

.NET
AWS SDK for .NET
Note

Il y en a plus sur 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.

using Amazon; using Amazon.SimpleNotificationService; using Amazon.SimpleNotificationService.Model; using System; using System.Threading.Tasks; namespace SNSMessageExample { class SNSMessage { private AmazonSimpleNotificationServiceClient snsClient; /// <summary> /// Constructs a new SNSMessage object initializing the Amazon Simple /// Notification Service (Amazon SNS) client using the supplied /// Region endpoint. /// </summary> /// <param name="regionEndpoint">The Amazon Region endpoint to use in /// sending test messages with this object.</param> public SNSMessage(RegionEndpoint regionEndpoint) { snsClient = new AmazonSimpleNotificationServiceClient(regionEndpoint); } /// <summary> /// Sends the SMS message passed in the text parameter to the phone number /// in phoneNum. /// </summary> /// <param name="phoneNum">The ten-digit phone number to which the text /// message will be sent.</param> /// <param name="text">The text of the message to send.</param> /// <returns></returns> public async Task SendTextMessageAsync(string phoneNum, string text) { if (string.IsNullOrEmpty(phoneNum) || string.IsNullOrEmpty(text)) { return; } // Now actually send the message. var request = new PublishRequest { Message = text, PhoneNumber = phoneNum }; try { var response = await snsClient.PublishAsync(request); } catch (Exception ex) { Console.WriteLine($"Error sending message: {ex}"); } } } }
  • Pour de plus amples informations sur l’API, consultez Publier dans AWS SDK for .NET Référence de l’API.

C++
Kit SDK pour C++
Note

Voir cet exemple sur 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.

/** * Publish SMS: use Amazon SNS to send an SMS text message to a phone number. * Note: This requires additional AWS configuration prior to running example. * * NOTE: When you start using Amazon SNS to send SMS messages, your AWS account is in the SMS sandbox and you can only * use verified destination phone numbers. See https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html. * NOTE: If destination is in the US, you also have an additional restriction that you have use a dedicated * origination ID (phone number). You can request an origination number using Amazon Pinpoint for a fee. * See https://aws.amazon.com/blogs/compute/provisioning-and-using-10dlc-origination-numbers-with-amazon-sns/ * for more information. * * <phone_number_value> input parameter uses E.164 format. * For example, in United States, this input value should be of the form: +12223334444 */ int main(int argc, char ** argv) { if (argc != 3) { std::cout << "Usage: publish_sms <message_value> <phone_number_value> " << std::endl; return 1; } Aws::SDKOptions options; Aws::InitAPI(options); { Aws::SNS::SNSClient sns; Aws::String message = argv[1]; Aws::String phone_number = argv[2]; Aws::SNS::Model::PublishRequest psms_req; psms_req.SetMessage(message); psms_req.SetPhoneNumber(phone_number); auto psms_out = sns.Publish(psms_req); if (psms_out.IsSuccess()) { std::cout << "Message published successfully " << psms_out.GetResult().GetMessageId() << std::endl; } else { std::cout << "Error while publishing message " << psms_out.GetError().GetMessage() << std::endl; } } Aws::ShutdownAPI(options); return 0; }
  • Pour de plus amples informations sur l’API, consultez Publier dans AWS SDK for C++ Référence de l’API.

Java
Kit SDK pour Java 2.x
Note

Il y en a plus sur 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.

public static void pubTextSMS(SnsClient snsClient, String message, String phoneNumber) { try { PublishRequest request = PublishRequest.builder() .message(message) .phoneNumber(phoneNumber) .build(); PublishResponse result = snsClient.publish(request); System.out.println(result.messageId() + " Message sent. Status was " + result.sdkHttpResponse().statusCode()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }
  • Pour de plus amples informations sur l’API, consultez Publier dans AWS SDK for Java 2.x Référence de l’API.

Kotlin
Kit SDK pour Kotlin
Note

Ceci est une documentation préliminaire pour une fonctionnalité en version de prévisualisation. Elle est susceptible d’être modifiée.

Note

Voir cet exemple sur 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.

suspend fun pubTextSMS(messageVal: String?, phoneNumberVal: String?) { val request = PublishRequest { message = messageVal phoneNumber = phoneNumberVal } SnsClient { region = "us-east-1" }.use { snsClient -> val result = snsClient.publish(request) println("${result.messageId} message sent.") } }
  • Pour plus d’informations sur l’API, consultez la section Publier de la référence du kit SDK AWS pour l’API Kotlin.

PHP
Kit SDK pour PHP
Note

Il y en a plus sur 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.

require 'vendor/autoload.php'; use Aws\Sns\SnsClient; use Aws\Exception\AwsException; /** * Sends a a text message (SMS message) directly to a phone number using Amazon SNS. * * This code expects that you have AWS credentials set up per: * https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html */ $SnSclient = new SnsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2010-03-31' ]); $message = 'This message is sent from a Amazon SNS code sample.'; $phone = '+1XXX5550100'; try { $result = $SnSclient->publish([ 'Message' => $message, 'PhoneNumber' => $phone, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }
Python
Kit SDK pour Python (Boto3)
Note

Il y en a plus sur 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.

class SnsWrapper: """Encapsulates Amazon SNS topic and subscription functions.""" def __init__(self, sns_resource): """ :param sns_resource: A Boto3 Amazon SNS resource. """ self.sns_resource = sns_resource def publish_text_message(self, phone_number, message): """ Publishes a text message directly to a phone number without need for a subscription. :param phone_number: The phone number that receives the message. This must be in E.164 format. For example, a United States phone number might be +12065550101. :param message: The message to send. :return: The ID of the message. """ try: response = self.sns_resource.meta.client.publish( PhoneNumber=phone_number, Message=message) message_id = response['MessageId'] logger.info("Published message to %s.", phone_number) except ClientError: logger.exception("Couldn't publish message to %s.", phone_number) raise else: return message_id
  • Pour de plus amples informations sur l’API, consultez Publier dans AWS Référence de l’API du kit SDK for Python (Boto3).