As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Esta seção descreve como enviar mensagens SMS usando o Amazon SNS, incluindo publicar em um tópico, inscrever números de telefone em tópicos, definir atributos em mensagens e publicar diretamente em telefones celulares.
Publicar mensagens de SMS em um tópico do Amazon SNS
É possível publicar uma única mensagem SMS em vários números de telefone de uma só vez inscrevendo esses números de telefone em um tópico do Amazon SNS. Um tópico do Amazon SNS é um canal de comunicação para o qual é possível adicionar inscritos e publicar mensagens para todos esses inscritos. Um assinante recebe todas as mensagens publicadas no tópico até que você cancele a assinatura ou até que o assinante opte por não receber mensagens SMS da sua conta. AWS
Enviar uma mensagem para um tópico usando o console da AWS
Para criar um tópico
Realize as seguintes etapas se você ainda não tiver um tópico para o qual deseja enviar mensagens SMS.
Faça login no console do Amazon SNS
. -
No menu do console, selecione uma região compatível com mensagens SMS.
-
No painel de navegação, escolha Tópicos.
-
Na página Topics (Tópicos), escolha Create topic (Criar tópico).
-
Na página Create topic (Criar tópico), em Details (Detalhes), faça o seguinte:
-
Em Tipo, escolha Padrão.
-
Em Name (Nome), insira um nome para o tópico.
-
(Opcional) Para Display name (Nome de exibição), digite um prefixo personalizado para suas mensagens SMS. Quando você envia uma mensagem para o tópico, o Amazon SNS acrescenta o nome de exibição seguido por uma seta para a direita (>) e um espaço. Os nomes de exibição não fazem distinção entre maiúsculas e minúsculas e o Amazon SNS converte os nomes de exibição para caracteres maiúsculos. Por exemplo, se o nome de exibição de um tópico é
MyTopic
e a mensagem éHello World!
, a mensagem é exibida como:MYTOPIC> Hello World!
-
-
Escolha Criar tópico. O nome do tópico e o nome do recurso da Amazon (ARN) aparecem na página Topics (Tópicos).
Para criar uma assinatura de SMS
Use assinaturas para enviar uma mensagem SMS para vários destinatários publicando a mensagem somente uma vez em seu tópico.
nota
Quando você começa a usar o Amazon SNS para enviar mensagens SMS, sua AWS conta está na sandbox de SMS. A sandbox de SMS oferece um ambiente seguro para testar os recursos do Amazon SNS sem arriscar a reputação como remetente do SMS. Enquanto sua conta estiver na sandbox de SMS, é possível usar todos os recursos do Amazon SNS, mas as mensagens SMS podem ser enviadas somente para números de telefone de destino verificados. Para obter mais informações, consulte Usar sandbox de SMS do Amazon SNS.
Faça login no console do Amazon SNS
. -
No painel de navegação, escolha Assinaturas.
-
Na página Assinaturas, escolha Criar assinatura.
-
Na página Create subscription (Criar assinatura), na seção Details (Detalhes), faça o seguinte:
-
Em Topic ARN (ARN do tópico), insira ou escolha o nome do recurso da Amazon (ARN) do tópico para o qual você deseja enviar mensagens SMS.
-
Para Protocol (Protocolo), escolha SMS.
-
Para Endpoint digite o número de telefone que você deseja assinar para seu tópico.
-
-
Selecione Create subscription. As informações da assinatura são exibidas na página Subscriptions (Assinaturas).
Para adicionar mais números de telefone, repita essas etapas. Também é possível adicionar outros tipos de assinaturas, como e-mail.
Para enviar uma mensagem
Quando você publica uma mensagem em um tópico, o Amazon SNS tenta entregar essa mensagem para cada número de telefone inscrito no tópico.
-
No console do Amazon SNS
, na página Topics (Tópicos), escolha o nome do tópico para o qual você deseja enviar mensagens SMS. -
Na página de detalhes do tópico, selecione Publicar mensagem.
-
Na página Publish message to topic (Publicar mensagem no tópico), em Message details (Detalhes da mensagem), faça o seguinte:
-
Em Subject (Assunto), deixe o campo em branco, a menos que o tópico contenha inscrições de e-mail e você queira publicar nas inscrições por e-mail e por SMS. O Amazon SNS usará o Subject (Assunto) que você inserir como linha de assunto do e-mail.
-
(Opcional) ParaTime to Live (TTL) (Vida útil (TTL)), insira o número de segundos que o Amazon SNS tem para enviar sua mensagem SMS para qualquer assinante de endpoint de aplicação móvel.
-
-
Em Message body (Corpo da mensagem), faça o seguinte:
-
Em Message structure (Estrutura de mensagem), escolha Identical payload for all delivery protocols (Carga útil idêntica para todos os protocolos de entrega) para enviar a mesma mensagem para todos os tipos de protocolo inscritos no tópico. Ou escolha Custom payload for each delivery protocol (Carga útil personalizada para cada protocolo de entrega) para personalizar a mensagem direcionada a assinantes de diferentes tipos de protocolo. Por exemplo, é possível inserir uma mensagem padrão para assinantes de número de telefone e uma mensagem personalizada para assinantes de e-mail.
-
Em Message body to send to the endpoint (Corpo da mensagem a ser enviada para o endpoint), insira sua mensagem ou suas mensagens personalizadas por protocolo de entrega.
Se o tópico tem um nome de exibição, o Amazon SNS adiciona-o à mensagem, o que aumenta o tamanho da mensagem. O tamanho do nome de exibição é o número de caracteres no nome, mais dois caracteres para a seta (>) e o espaço adicionado pelo Amazon SNS.
Para obter mais informações sobre as cotas de tamanho de mensagens SMS, consulte Publicação de mensagens SMS em um telefone celular usando o Amazon SNS.
-
-
(Opcional) Para atributos de mensagem, adicione metadados de mensagem, como carimbos de data/hora, assinaturas e. IDs
-
Selecione Publish message (Publicar mensagem). O Amazon SNS envia a mensagem SMS e exibe uma mensagem de êxito.
Enviar uma mensagem para um tópico usando o AWS SDKs
Para usar um AWS SDK, você deve configurá-lo com suas credenciais. Para obter mais informações, consulte Os arquivos compartilhados de configuração e credenciais no Guia de referência de ferramentas AWS SDKs e ferramentas.
O exemplo de código a seguir mostra como:
Criar um tópico do Amazon SNS.
Inscrever números de telefone no tópico.
Publicar mensagens SMS no tópico para que todos os números de telefone inscritos recebam a mensagem de uma só vez.
- SDK para Java 2.x
-
nota
Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS
. Criar um tópico e retorne seu 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 ""; } }
Inscreva um endpoint em um tópico.
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); } } }
Defina atributos na mensagem, como o ID do remetente, o preço máximo e seu tipo. Os atributos de mensagem são opcionais.
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); } } }
Publique uma mensagem em um tópico. A mensagem é enviada para todos os assinantes.
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); } } }
Publicação de mensagens SMS em um telefone celular usando o Amazon SNS
É possível usar o Amazon SNS para enviar mensagens SMS diretamente para um telefone celular sem inscrever o número de telefone em um tópico do Amazon SNS.
nota
A inscrição de números de telefone em um tópico é útil se você quer enviar uma mensagem para vários números de telefone de uma só vez. Para obter instruções sobre como publicar uma mensagem SMS em um tópico, consulte Publicar mensagens de SMS em um tópico do Amazon SNS.
Ao enviar uma mensagem, é possível controlar se a mensagem é otimizada para custos ou confiabilidade de entrega. Também é possível especificar um ID do remetente ou número de origem. Se você enviar a mensagem programaticamente usando a API do Amazon SNS ou AWS SDKs a, você pode especificar um preço máximo para a entrega da mensagem.
Cada mensagem SMS pode ter até 140 bytes, e a cota de caracteres depende do esquema de codificação. Por exemplo, uma mensagem SMS pode incluir:
-
160 caracteres GSM
-
140 caracteres ASCII
-
70 caracteres UCS-2
Se você publicar uma mensagem que exceda a cota de tamanho, o Amazon SNS a enviará como várias mensagens, cada uma delas respeitando a cota de tamanho. Para isso, as palavras são mantidas inteiras na mensagem, não cortadas. O tamanho total da cota de uma única ação de publicação de SMS é de 1.600 bytes.
Ao enviar uma mensagem SMS, você especifica o número de telefone com o formato E.164, que é uma estrutura padrão de numeração de telefones para telecomunicação internacional. Os números de telefone que seguem esse formato podem conter no máximo 15 dígitos junto como prefixo de um sinal de adição (+) e o código do país. Por exemplo, um número de telefone dos EUA no formato E.164 aparece como +1 XXX555 0100.
Enviar uma mensagem (console)
Faça login no console do Amazon SNS
. -
No menu do console, selecione uma região compatível com mensagens SMS.
-
No painel de navegação, escolha Mensagens de texto (SMS).
-
Na página Mobile text messaging (SMS) (Mensagens de texto para dispositivos móveis (SMS)), selecione Publish text message (Publicar mensagem de texto).
-
Na página Publish SMS message (Publicar mensagem SMS), para Message type (Tipo de mensagem), escolha uma das seguintes opções:
-
Promotional (Promocional): mensagens não essenciais, como mensagens de marketing.
-
Transactional (Transacional): mensagens urgentes que oferecem suporte para transações do cliente, como senhas únicas para autenticação multifator.
nota
Essa configuração em nível de mensagem substitui o tipo de mensagem padrão em nível de conta. É possível definir um tipo de mensagem padrão em nível de conta na seção Text messaging preferences (Opções de mensagens de texto) da página Mobile text messaging (SMS) (Mensagens de texto para dispositivos móveis (SMS)).
Para obter informações sobre mensagens promocionais e transacionais, consulte Worldwide SMS Pricing
(Preço global para SMS). -
-
Em Destination phone number (Número de telefone de destino), digite o número de telefone para o qual você deseja enviar a mensagem.
-
Em Message (Mensagem), digite a mensagem a ser enviada.
-
(Opcional) Em Origination identities (Identidades de origem), especifique como você se identificará para seus destinatários:
-
Para especificar um Sender ID (ID do remetente), digite um ID personalizado que contenha de 3 a 11 caracteres alfanuméricos sem espaços, com pelo menos uma letra. O ID do remetente é exibido como o remetente da mensagem no dispositivo receptor. Por exemplo, é possível usar a marca de sua empresa para tornar a origem da mensagem mais fácil de reconhecer.
Support para remetente IDs varia de acordo com o país e/ou região. Por exemplo, as mensagens enviadas para os números de telefone dos EUA não exibirão o ID do remetente. Para os países e regiões que oferecem suporte ao remetente IDs, consulte Países e regiões com suporte para mensagens SMS AWS End User Messaging SMS no Guia do AWS End User Messaging SMS usuário.
Se você não especificar um ID do remetente, uma das seguintes informações será exibida como identidade de origem:
-
Em países com suporte para códigos longos, o código longo será exibido.
-
Em países onde somente o remetente IDs é suportado, o AVISO é exibido.
Esse ID do remetente no nível de mensagem substitui o ID de remetente padrão, que você define na página Preferências de mensagens de texto.
-
-
Para especificar um Origination number (Número de origem), insira uma string de 5 a 14 números para ser exibida como número de telefone do remetente no dispositivo do receptor. Essa sequência de caracteres deve corresponder a um número de origem configurado em seu Conta da AWS para o país de destino. O número de origem pode ser um número 10DLC, número gratuito, código person-to-person longo ou códigos curtos. Para obter mais informações, consulte Identidades de origem para mensagens do Amazon SNS SMS.
Se você não especificar um número de origem, o Amazon SNS selecionará um número de origem a ser usado para a mensagem de texto SMS, com base na configuração de sua Conta da AWS .
-
-
Se você estiver enviando mensagens SMS para destinatários na Índia, expanda Country-specific attributes (Atributos específicos do país) e especifique estes atributos:
-
Entity ID (ID da entidade): o ID da entidade ou ID da Principal Entity (PE – Entidade principal) para enviar mensagens SMS a destinatários na Índia. Esse ID é uma string exclusiva de 1 a 50 caracteres que a Telecom Regulatory Authority of India (TRAI) fornece para identificar a entidade que você registrou junto a ela.
-
Template ID (ID do modelo): o ID de modelo para enviar mensagens SMS a destinatários na Índia. Esse ID é uma string exclusiva de 1 a 50 caracteres fornecida pela TRAI que identifica o modelo que você registrou junto a ela. O ID do modelo deve ser associado ao ID do remetente que você especificou para a mensagem.
Para obter mais informações sobre como enviar mensagens SMS para destinatários na Índia, consulte o processo de registro de IDs do remetente no Guia do Usuário do AWS End User Messaging SMS .
-
-
Selecione Publish message (Publicar mensagem).
dica
Para enviar mensagens SMS de um número de origem, você também pode escolher Origination numbers (Números de origem) no painel de navegação do console do Amazon SNS. Escolha um número de origem que inclua SMS na coluna Capacities (Recursos) e, em seguida, escolha Publish text message (Publicar mensagem de texto).
Enviando uma mensagem (AWS SDKs)
Para enviar uma mensagem SMS usando um dos AWS SDKs, use a operação de API nesse SDK que corresponde à Publish
solicitação na API do Amazon SNS. Com essa solicitação, você pode enviar uma mensagem SMS diretamente para um número de telefone. Você também pode usar o parâmetro MessageAttributes
para definir valores para os seguintes nomes de atributos:
AWS.SNS.SMS.SenderID
-
Um ID personalizado que contenha de 3 a 11 caracteres alfanuméricos ou caracteres de hífen (-) sem espaços, com pelo menos uma letra. O ID do remetente é exibido como o remetente da mensagem no dispositivo receptor. Por exemplo, é possível usar a marca de sua empresa para ajudar a tornar a origem da mensagem mais fácil de reconhecer.
Support para remetente IDs varia de acordo com o país ou a região. Por exemplo, as mensagens enviadas para os números de telefone dos EUA não exibem o ID do remetente. Para obter uma lista dos países ou regiões que oferecem suporte ao remetente IDs, consulte Países e regiões com suporte para mensagens SMS AWS End User Messaging SMS no Guia do AWS End User Messaging SMS usuário.
Se você não especificar um ID do remetente, um código longo será exibido como o ID do remetente nos países ou regiões compatíveis. Para países ou regiões que exigem um ID do remetente alfabético, um AVISO será exibido como o ID do remetente.
Esse atributo de mensagem substitui o atributo no nível da contas
DefaultSenderID
que você pode definir usando a solicitaçãoSetSMSAttributes
. AWS.MM.SMS.OriginationNumber
-
Uma string personalizada de 5 a 14 números, que pode incluir um sinal de adição opcional à esquerda (
+
). Essa string numérica aparece como o número de telefone do remetente no dispositivo receptor. A sequência de caracteres deve corresponder a um número de origem configurado na sua AWS conta para o país de destino. O número de origem pode ser um número 10DLC, número gratuito, código longo person-to-person (P2P) ou código curto. Para obter mais informações, consulte Números de telefone no Guia do usuário do AWS End User Messaging SMS .Se você não especificar um número de origem, o Amazon SNS escolherá um número de origem com base na configuração da sua conta. AWS
AWS.SNS.SMS.MaxPrice
-
O preço máximo em USD que você está disposto a gastar para enviar a mensagem SMS. Se o Amazon SNS determinar que enviar a mensagem pode gerar um custo que ultrapassaria o preço máximo, ele não enviará a mensagem.
Esse atributo não tem efeito se seus custos de month-to-date SMS já tiverem excedido a cota definida para o
MonthlySpendLimit
atributo. É possível definir o atributoMonthlySpendLimit
usando a solicitaçãoSetSMSAttributes
.Se você está enviando a mensagem para um tópico do Amazon SNS, o preço máximo se aplica a cada entrega de mensagem para cada número de telefone inscrito no tópico.
AWS.SNS.SMS.SMSType
-
O tipo de mensagem que você está enviando:
-
Promotional
(padrão): mensagens não essenciais, como mensagens de marketing. -
Transactional
: mensagens essenciais que oferecem suporte a transações do cliente, como senhas únicas para autenticação multifator.
Esse atributo de mensagem substitui o atributo no nível da contas
DefaultSMSType
que você pode definir usando a solicitaçãoSetSMSAttributes
. -
AWS.MM.SMS.EntityId
-
Esse atributo é necessário somente para enviar mensagens SMS a destinatários na Índia.
Esse é o ID da entidade ou ID da Principal Entity (PE – Entidade principal) para enviar mensagens SMS a destinatários na Índia. Esse ID é uma string exclusiva de 1 a 50 caracteres que a Telecom Regulatory Authority of India (TRAI) fornece para identificar a entidade que você registrou junto a ela.
AWS.MM.SMS.TemplateId
-
Esse atributo é necessário somente para enviar mensagens SMS a destinatários na Índia.
Este é o seu modelo para enviar mensagens SMS a destinatários na Índia. Esse ID é uma string exclusiva de 1 a 50 caracteres fornecida pela TRAI que identifica o modelo que você registrou junto a ela. O ID do modelo deve ser associado ao ID do remetente que você especificou para a mensagem.
Enviar uma mensagem
Os exemplos de código a seguir mostram como publicar mensagens SMS usando o Amazon SNS.
- AWS SDK for .NET
-
nota
Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da 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}"); } } } }
-
Para obter detalhes da API, consulte Publish na Referência da API AWS SDK for .NET .
-