Pubblicazione di messaggi SMS su un telefono cellulare tramite Amazon SNS - Amazon Simple Notification Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Pubblicazione di messaggi SMS su un telefono cellulare tramite Amazon SNS

Puoi utilizzare Amazon SNS per inviare messaggi SMS direttamente a un telefono cellulare senza sottoscrivere il numero di telefono a un argomento Amazon SNS.

Nota

La sottoscrizione di numeri di telefono a un argomento è utile se desideri inviare un messaggio a più numeri di telefono contemporaneamente. Per istruzioni sulla pubblicazione di un messaggio SMS in un argomento, consulta Pubblicazione di messaggi SMS su un argomento di Amazon SNS.

Quando invii un messaggio, puoi controllare se è ottimizzato relativamente al costo e all'affidabilità della consegna. È anche possibile specificare un sender ID or origination number (ID mittente o numero di origine). Se invii il messaggio in modo programmatico utilizzando l'API Amazon SNS o AWS gli SDK, puoi specificare un prezzo massimo per la consegna del messaggio.

Ogni messaggio SMS può contenere fino a 140 byte, mentre la quota di caratteri dipende dallo schema di codifica. Ad esempio, un messaggio SMS può contenere:

  • 160 caratteri GSM

  • 140 caratteri ASCII

  • 70 caratteri UCS-2

Se il messaggio supera la quota della dimensione, Amazon SNS lo invia sotto forma di più messaggi, ciascuno nel rispetto della quota della dimensione indicata. I messaggi non vengono troncati nel mezzo di una parola ma tra una parola e l'altra. Le quota della dimensione totale massima di una singola pubblicazione SMS è di 1600 byte.

Quando invii un SMS, specifichi il numero di telefono utilizzando il formato E.164, una struttura di numerazione standard utilizzata per le telecomunicazioni internazionali. I numeri di telefono che seguono questo formato possono avere un massimo di 15 cifre oltre al prefisso con il segno più (+) e il prefisso del paese. Ad esempio, un numero di telefono negli Stati Uniti nel formato E.164 verrà visualizzato come +1XXX5550100.

Invio di un messaggio (Console)

  1. Accedi alla console Amazon SNS.

  2. Nel menu della console, scegli un'area AWS che supporti la messaggistica SMS.

  3. Nel riquadro di navigazione seleziona Text messaging (SMS) (SMS).

  4. Nella pagina Messaggi di testo per dispositivi mobili (SMS) scegli Pubblicazione di testo.

  5. Nella pagina Pubblicazione di messaggi SMS, per Tipo di messaggio scegliere una delle opzioni seguenti:

    • Promotional (Promozionali) - Messaggi non critici, come i messaggi di marketing.

    • Transactional (Transazionali) - Messaggi critici che supportano le transazioni dei clienti, come le password monouso per l'autenticazione a più fattori.

    Nota

    Questa impostazione a livello di messaggio sostituisce il tipo di messaggio predefinito a livello di account. È possibile impostare un tipo di messaggio predefinito a livello di account dalla sezione Preferenze di messaggistica della pagina Messaggi di testo per dispositivi mobili (SMS).

    Per informazioni sulle tariffe relative a messaggi promozionali e transazionali, consulta la pagina relativa alle tariffe SMS globali.

  6. In Number (Numero), inserisci il numero di telefono al quale vuoi inviare il messaggio.

  7. In Message (Messaggio), inserisci il testo da inviare.

  8. (Facoltativo) Su Identità di origine, specificare come identificarsi ai destinatari:

    • Per specificare l'ID mittente, digita un ID personalizzato contenente da 3 a 11 caratteri alfanumerici, tra cui almeno una lettera e nessuno spazio. L'ID mittente viene visualizzato come mittente del messaggio sul dispositivo ricevente. Ad esempio, puoi utilizzare il tuo marchio commerciale per rendere più facilmente riconoscibile l'origine del messaggio.

      Il supporto per gli ID mittente varia in base al paese e/o alla regione. Ad esempio, i messaggi consegnati a numeri di telefono statunitensi non visualizzeranno l'ID mittente. Per i paesi e le regioni che supportano gli ID mittente, consulta Regioni e paesi supportati.

      Se non specifichi un ID mittente, una delle seguenti identità verrà visualizzata come identità di origine:

      • Nei paesi che supportano codici lunghi, verrà visualizzato il codice lungo.

      • Nei paesi in cui sono supportati solo gli ID mittente, verrà visualizzato NOTICE (PREAVVISO).

      Tale ID mittente a livello di messaggio sovrascrive l'ID mittente predefinito, che è stato impostato sulla pagina Text messaging preferences (Preferenze messaggi di testo).

    • Per specificare un Numero di origine, inserisci una stringa di 5-14 numeri da visualizzare come numero di telefono del mittente sul dispositivo del ricevitore. Questa stringa deve corrispondere a un numero di origine configurato nel tuo Account AWS paese di destinazione. Il numero di origine può essere un numero da 10 DLC, un numero verde, un codice person-to-person lungo o codici brevi. Per ulteriori informazioni, consulta Identità di origine per i messaggi SMS.

      Se non specifichi un numero di origine, Amazon SNS seleziona un numero di origine da utilizzare per il messaggio di testo SMS, in base alla configurazione di Account AWS .

  9. Se invii messaggi SMS ai destinatari in India, espandi Attributi specifici del paese e specifica gli attributi seguenti:

    • ID entità — L'ID entità o l'ID entità principale (PE) per l'invio di messaggi SMS ai destinatari in India. Questo ID è una stringa univoca di 1-50 caratteri fornita dalla Telecom Regulatory Authority of India (TRAI) per identificare l'entità registrata presso il TRAI.

    • ID modello — L'ID modello per l'invio di messaggi SMS ai destinatari in India. Questo ID è una stringa univoca fornita da TRAI di 1-50 caratteri che identificherà il modello registrato con TRAI. L'ID modello deve essere associato all'ID mittente specificato per il messaggio.

    Per ulteriori informazioni sull'invio di messaggi SMS ai destinatari in India, consulta Requisiti per la registrazione dell'ID mittente per l'India.

  10. Seleziona Publish message (Pubblica messaggio).

Suggerimento

Per inviare messaggi SMS da un numero di origine, puoi anche scegliere Numeri di origine nel pannello di navigazione della console Amazon SNS. Scegliere un numero di origine che includa SMS nella colonna Capabilities (Funzionalità), quindi scegliere Pubblicazione di testo.

Invio di un messaggio (SDK)AWS

Per inviare un messaggio SMS utilizzando uno degli AWS SDK, utilizza l'operazione API in quell'SDK che corrisponde alla Publish richiesta nell'API Amazon SNS. Con questa richiesta, puoi inviare un messaggio SMS direttamente a un numero di telefono. Puoi anche utilizzare il parametro MessageAttributes per impostare i valori per i seguenti nomi attributo:

AWS.SNS.SMS.SenderID

Un ID personalizzato che contiene da 3 a 11 caratteri alfanumerici o caratteri trattino (-), tra cui almeno una lettera e nessuno spazio. L'ID mittente viene visualizzato come mittente del messaggio sul dispositivo ricevente. Ad esempio, puoi utilizzare il tuo marchio commerciale per aiutare a rendere più facilmente riconoscibile l'origine del messaggio.

Il supporto per gli ID mittente varia in base al paese o alla Regione. Nei messaggi recapitati a numeri di telefono degli Stati Uniti, ad esempio, non viene visualizzato l'ID mittente. Per un elenco di paesi e regioni che supportano gli ID mittente, consulta Regioni e paesi supportati.

Se non specifichi un ID mittente, il messaggio visualizzerà un codice lungo come ID mittente nei paesi o nelle regioni supportati. Per i paesi o le regioni che richiedono un ID mittente in forma alfabetica, il messaggio visualizza NOTICE (PREAVVISO) come ID mittente.

Questo attributo a livello di messaggio sovrascrive l'attributo a livello di account DefaultSenderID, che può essere impostato tramite la richiesta SetSMSAttributes.

AWS.MM.SMS.OriginationNumber

Una stringa personalizzata di 5-14 numeri, che può includere un segno + iniziale opzionale (+). Questa stringa di numeri viene visualizzata come numero di telefono del mittente sul dispositivo ricevente. La stringa deve corrispondere a un numero di origine configurato nel tuo AWS account per il paese di destinazione. Il numero di origine può essere un numero da 10 DLC, un numero verde, un codice lungo person-to-person (P2P) o un codice breve. Per ulteriori informazioni, consulta Numeri di origine.

Se non specifichi un numero di origine, Amazon SNS sceglie un numero di origine in base alla configurazione del tuo account. AWS

AWS.SNS.SMS.MaxPrice

L'importo massimo in dollari che sei disposto a spendere per inviare il messaggio SMS. Amazon SNS non invierà il messaggio nel caso in cui il costo dovesse superare il prezzo massimo.

Questo attributo non ha effetto se i costi month-to-date degli SMS hanno già superato la quota impostata per l'attributo. MonthlySpendLimit È possibile impostare MonthlySpendLimit utilizzando l'attributo SetSMSAttributes.

Quando invii il messaggio a un argomento Amazon SNS, a ogni messaggio inviato viene applicato il prezzo massimo a ognuno dei numeri di telefono sottoscritti a un dato argomento.

AWS.SNS.SMS.SMSType

Tipo di messaggio che intendi inviare:

  • Promotional (impostazione predefinita) - Messaggi non critici, come i messaggi di marketing.

  • Transactional – Messaggi critici che supportano le transazioni dei clienti, come i passcode monouso per l'autenticazione a più fattori.

Questo attributo a livello di messaggio sovrascrive l'attributo a livello di account DefaultSMSType, che può essere impostato tramite la richiesta SetSMSAttributes.

AWS.MM.SMS.EntityId

Questo attributo è necessario solo per l'invio di messaggi SMS ai destinatari in India.

ID entità o ID entità principale (PE) per l'invio di messaggi SMS ai destinatari in India. Questo ID è una stringa univoca di 1-50 caratteri fornita dalla Telecom Regulatory Authority of India (TRAI) per identificare l'entità registrata presso il TRAI.

AWS.MM.SMS.TemplateId

Questo attributo è necessario solo per l'invio di messaggi SMS ai destinatari in India.

Questo è il modello per inviare messaggi SMS ai destinatari in India. Questo ID è una stringa univoca fornita da TRAI di 1-50 caratteri che identificherà il modello registrato con il TRAI. L'ID modello deve essere associato all'ID mittente specificato per il messaggio.

Invio di un messaggio

Negli esempi di codice seguenti viene illustrato come pubblicare messaggi SMS utilizzando Amazon SNS.

.NET
AWS SDK for .NET
Nota

C'è altro su. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

namespace SNSMessageExample { using System; using System.Threading.Tasks; using Amazon; using Amazon.SimpleNotificationService; using Amazon.SimpleNotificationService.Model; public class SNSMessage { private AmazonSimpleNotificationServiceClient snsClient; /// <summary> /// Initializes a new instance of the <see cref="SNSMessage"/> class. /// 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>Async task.</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}"); } } } }
  • Per informazioni dettagliate sulle API, consulta Pubblicazione nella Documentazione di riferimento per le API AWS SDK for .NET .

C++
SDK per C++
Nota

C'è dell'altro GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

/** * Publish SMS: use Amazon Simple Notification Service (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 */ //! Send an SMS text message to a phone number. /*! \param message: The message to publish. \param phoneNumber: The phone number of the recipient in E.164 format. \param clientConfiguration: AWS client configuration. \return bool: Function succeeded. */ bool AwsDoc::SNS::publishSms(const Aws::String &message, const Aws::String &phoneNumber, const Aws::Client::ClientConfiguration &clientConfiguration) { Aws::SNS::SNSClient snsClient(clientConfiguration); Aws::SNS::Model::PublishRequest request; request.SetMessage(message); request.SetPhoneNumber(phoneNumber); const Aws::SNS::Model::PublishOutcome outcome = snsClient.Publish(request); if (outcome.IsSuccess()) { std::cout << "Message published successfully with message id, '" << outcome.GetResult().GetMessageId() << "'." << std::endl; } else { std::cerr << "Error while publishing message " << outcome.GetError().GetMessage() << std::endl; } return outcome.IsSuccess(); }
  • Per informazioni dettagliate sulle API, consulta Pubblicazione nella Documentazione di riferimento per le API AWS SDK for C++ .

Java
SDK per Java 2.x
Nota

C'è dell'altro GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.PublishRequest; import software.amazon.awssdk.services.sns.model.PublishResponse; import software.amazon.awssdk.services.sns.model.SnsException; /** * 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 PublishTextSMS { public static void main(String[] args) { final String usage = """ Usage: <message> <phoneNumber> Where: message - The message text to send. phoneNumber - The mobile phone number to which a message is sent (for example, +1XXX5550100).\s """; if (args.length != 2) { System.out.println(usage); System.exit(1); } String message = args[0]; String phoneNumber = args[1]; SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); pubTextSMS(snsClient, message, phoneNumber); snsClient.close(); } 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); } } }
  • Per informazioni dettagliate sulle API, consulta Pubblicazione nella Documentazione di riferimento per le API AWS SDK for Java 2.x .

Kotlin
SDK per Kotlin
Nota

C'è dell'altro GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice 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.") } }
  • Per informazioni dettagliate sulle API, consulta Pubblicazione nella Documentazione di riferimento per le API di SDK AWS per Kotlin.

PHP
SDK per PHP
Nota

C'è dell'altro GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

require 'vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\Sns\SnsClient; /** * Sends 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
SDK per Python (Boto3)
Nota

C'è dell'altro GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice 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
  • Per informazioni dettagliate sulle API, consulta Pubblicazione nella Documentazione di riferimento per l’API SDK for Python (Boto3)AWS .