Pubblicazione in un argomento - 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 in un argomento

Puoi inviare un singolo messaggio SMS a più numeri di telefono contemporaneamente sottoscrivendo tali numeri in un argomento Amazon SNS. Un argomento SNS è un canale di comunicazione dove è possibile aggiungere gli abbonati ai quali si vogliono indirizzare determinati messaggi. Un utente riceve tutti i messaggi pubblicati in tale argomento fino a quando l'iscrizione non verrà annullata o l'utente non rinuncerà alla loro ricezione da parte del tuo account AWS.

Invio di un messaggio SMS in un argomento (console)

Per creare un argomento

Se ancora non disponi di un argomento al quale inviare messaggi SMS, completa i seguenti passaggi.

  1. Accedi alla console Amazon SNS.

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

  3. Nel pannello di navigazione, scegli Topics (Argomenti).

  4. Nella pagina Topics (Argomenti), seleziona Create new topic (Crea nuovo argomento).

  5. Nella pagina Create topic (Crea argomento), in Details (Dettagli), effettuare le seguenti operazioni:

    1. Per Tipo, scegliere Standard.

    2. In Name (Nome), immettere un nome.

    3. (Facoltativo) In Display name (Nome visualizzato), inserisci un prefisso personalizzato per il messaggio SMS. Quando invii un messaggio all'argomento, Amazon SNS antepone il nome visualizzato a una parentesi angolare destra (>) e uno spazio. I nomi visualizzati non sono sensibili alle maiuscole/minuscole, in quanto sarà poi Amazon SNS a convertirli in caratteri maiuscoli. Ad esempio, se il nome visualizzato di un argomento è MyTopic e il messaggio è Hello World!, il messaggio appare in questo formato:

      MYTOPIC> Hello World!
  6. Scegliere Create topic (Crea argomento). Il nome dell'argomento e l'Amazon Resource Name (ARN) vengono visualizzati nella pagina Topics (Argomenti)

Per creare una sottoscrizione SMS

Con le sottoscrizioni puoi inviare un messaggio SMS a più destinatari pubblicandolo una volta sola nel tuo argomento.

Nota

Quando inizi a utilizzare Amazon SNS per inviare messaggi SMS, l'account AWS si trova nella Sandbox SMS. La sandbox SMS offre un ambiente sicuro per provare le funzionalità Amazon SNS senza rischiare la reputazione del mittente SMS. Quando il tuo account è nella sandbox SMS, puoi utilizzare tutte le caratteristiche di Amazon SNS, ma puoi inviare SMS solo a numeri di telefono di destinazione verificati. Per ulteriori informazioni, consulta Sandbox SMS.

  1. Accedi alla console Amazon SNS.

  2. Nel riquadro di navigazione scegli Subscriptions (Sottoscrizioni).

  3. Nella pagina Sottoscrizioni scegli Crea sottoscrizione.

  4. Nella pagina Create subscription (Crea sottoscrizione), nella sezione Details (Dettagli), eseguire queste operazioni:

    1. Per Topic ARN (ARN argomento), inserisci o seleziona l'Amazon Resource Name (ARN) dell'argomento a cui desideri inviare messaggi SMS.

    2. In Protocol (Protocollo), scegli SMS.

    3. Per Endpoint, inserisci il numero di telefono a cui desideri iscriverti all'argomento.

  5. Scegli Create Subscription (Crea sottoscrizione). Le informazioni sull'abbonamento vengono visualizzate nella pagina Subscriptions (Abbonamenti).

    Per aggiungere altri numeri di telefono, ripetere questi passaggi. Puoi anche aggiungere altri tipi di sottoscrizione, ad esempio le e-mail.

Per inviare un messaggio

Quando pubblichi un messaggio in un argomento, Amazon SNS prova a consegnare il messaggio a tutti i numeri di telefono che hanno effettuato la sottoscrizione a un dato argomento.

  1. Nella Console Amazon SNS, nella pagina Topics (Argomenti), scegli il nome dell'argomento a cui desideri inviare messaggi SMS.

  2. Nella pagina dettagli, seleziona Publish message (Pubblica messaggio).

  3. Nella pagina Publish message to topic (Pubblica messaggio nell'argomento), alla sezione Message details (Dettagli messaggio) procedi come indicato di seguito:

    1. Per Subject (Oggetto), lascia il campo vuoto a meno che il tuo argomento non contenga anche sottoscrizioni e-mail e tu non voglia pubblicare il messaggio sulle sottoscrizioni e-mail ed SMS. Amazon SNS utilizza il Subject (Oggetto) che inserisci come oggetto dell'e-mail.

    2. (Facoltativo) Per Time to Live (TTL) (Durata), inserisci un numero di secondi che Amazon SNS deve inviare il tuo messaggio SMS a tutti gli abbonati agli endpoint delle applicazioni mobili.

  4. Su Message body (Corpo del messaggio), procedere come segue:

    1. Per Message structure (Struttura dei messaggi), scegliere Identical payload for all delivery protocols (Payload identico per tutti i protocolli di consegna) per inviare lo stesso messaggio a tutti i tipi di protocollo sottoscritti all'argomento. In alternativa, scegliere Custom payload for each delivery protocol (Payload personalizzato per ogni protocollo di consegna) per personalizzare il messaggio per i sottoscrittori di diversi tipi di protocollo. Ad esempio, è possibile immettere un messaggio predefinito per gli abbonati al numero di telefono e un messaggio personalizzato per i sottoscrittori di posta elettronica.

    2. Per Message body to send to the endpoint (Corpo del messaggio da inviare all'endpoint), immettere il messaggio o i messaggi personalizzati per protocollo di recapito.

      Se il tuo argomento ha un nome visualizzato, Amazon SNS lo aggiunge al messaggio, aumentando così la lunghezza del messaggio. La lunghezza del nome visualizzato dipende dal numero di caratteri nel nome più due per la parentesi angolare destra (>) e lo spazio aggiunto da Amazon SNS.

      Per informazioni sulle dimensioni massime degli SMS, consulta Pubblicazione su un telefono cellulare.

  5. (Facoltativo) Per Message attributes (Attributi di messaggio), aggiungere metadati dei messaggi quali timestamp, firme e ID.

  6. Seleziona Publish message (Pubblica messaggio). Amazon SNS invia il messaggio SMS e ne visualizza quindi la conferma.

Invio di un messaggio a un argomento (SDK AWS)

Per utilizzare un SDK AWS, è necessario configurarlo con le proprie credenziali. Per ulteriori informazioni, consulta The shared config and credentials files (File di configurazione e credenziali condivisi) nella Guida per l'utente SDK e strumenti AWS.

Il codice di esempio seguente mostra come fare per:

  • Creazione di un argomento Amazon SNS.

  • Sottoscrivere un numero di telefono cellulare all'argomento.

  • Pubblicazione di messaggi SMS nell'argomento in modo che tutti i numeri di telefono sottoscritti ricevano il messaggio in una sola volta.

Java
SDK per Java 2.x
Nota

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

Creare un argomento e restituire il suo ARN.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.CreateTopicRequest; import software.amazon.awssdk.services.sns.model.CreateTopicResponse; 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 CreateTopic { public static void main(String[] args) { final String usage = """ Usage: <topicName> Where: topicName - The name of the topic to create (for example, mytopic). """; if (args.length != 1) { System.out.println(usage); System.exit(1); } String topicName = args[0]; System.out.println("Creating a topic with name: " + topicName); SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); String arnVal = createSNSTopic(snsClient, topicName); System.out.println("The topic ARN is" + arnVal); snsClient.close(); } public static String createSNSTopic(SnsClient snsClient, String topicName) { CreateTopicResponse result; try { CreateTopicRequest request = CreateTopicRequest.builder() .name(topicName) .build(); result = snsClient.createTopic(request); return result.topicArn(); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; } }

Sottoscrivere un endpoint a un argomento.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.SnsException; import software.amazon.awssdk.services.sns.model.SubscribeRequest; import software.amazon.awssdk.services.sns.model.SubscribeResponse; /** * 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 SubscribeTextSMS { public static void main(String[] args) { final String usage = """ Usage: <topicArn> <phoneNumber> Where: topicArn - The ARN of the topic to subscribe. phoneNumber - A mobile phone number that receives notifications (for example, +1XXX5550100). """; if (args.length < 2) { System.out.println(usage); System.exit(1); } String topicArn = args[0]; String phoneNumber = args[1]; SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); subTextSNS(snsClient, topicArn, phoneNumber); snsClient.close(); } public static void subTextSNS(SnsClient snsClient, String topicArn, String phoneNumber) { try { SubscribeRequest request = SubscribeRequest.builder() .protocol("sms") .endpoint(phoneNumber) .returnSubscriptionArn(true) .topicArn(topicArn) .build(); SubscribeResponse result = snsClient.subscribe(request); System.out.println("Subscription ARN: " + result.subscriptionArn() + "\n\n Status is " + result.sdkHttpResponse().statusCode()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } }

Impostare gli attributi del messaggio, ad esempio l'ID del mittente, il prezzo massimo e il relativo tipo. Gli attributi del messaggio sono facoltativi.

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); } } }

Pubblicare un messaggio in un argomento. Il messaggio viene inviato a ogni abbonato.

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); } } }