Publicar em um telefone celular - Amazon Simple Notification Service

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á.

Publicar em um telefone celular

É 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 em um tópico.

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 os SDKs, poderá 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 seria exibido como +1XXX5550100.

Enviar uma mensagem (console)

  1. Faça login no console do Amazon SNS.

  2. No menu do console, selecione uma Região da AWS compatível com mensagens SMS.

  3. No painel de navegação, escolha Mensagens de texto (SMS).

  4. Na página Mobile text messaging (SMS) (Mensagens de texto para dispositivos móveis (SMS)), selecione Publish text message (Publicar mensagem de texto).

  5. 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).

  6. Em Destination phone number (Número de telefone de destino), digite o número de telefone para o qual você deseja enviar a mensagem.

  7. Em Message (Mensagem), digite a mensagem a ser enviada.

  8. (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.

      O suporte a IDs de remetentes varia de acordo com o país e/ou a região. Por exemplo, as mensagens enviadas para os números de telefone dos EUA não exibirão o ID do remetente. Para saber quais países e regiões oferecem suporte a IDs de remetentes, consulte Países e regiões compatíveis.

      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 há suporte apenas para IDs do remetente, será exibido um AVISO.

      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 cadeia de caracteres deve corresponder a um número de origem configurado em sua Conta da AWS para o país de destino. O número de origem pode ser um número 10DLC, um número gratuito, um código person-to-person longo ou um código curto. Para ter mais informações, consulte Identidades de origem para mensagens SMS.

      Se você não especificar um número de origem, o Amazon SNS selecionará um número de origem para usar na mensagem de texto SMS, com base na sua configuração. Conta da AWS

  9. 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 Requisitos para registro de ID de remetente da Índia.

  10. 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.

O suporte a IDs de remetentes 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 a IDs do remetente, consulte Países e regiões compatíveis.

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ção SetSMSAttributes.

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 ter mais informações, consulte Números de origem.

Se você não especificar um número de originação, 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 atributo MonthlySpendLimit usando a solicitação SetSMSAttributes.

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ção SetSMSAttributes.

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.

.NET
AWS SDK for .NET
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

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 do AWS SDK for .NET .

C++
SDK for C++
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

/** * 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(); }
  • Para obter detalhes da API, consulte Publish na Referência da API do AWS SDK for C++ .

Java
SDK para Java 2.x
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

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); } } }
  • Para obter detalhes da API, consulte Publish na Referência da API do AWS SDK for Java 2.x .

Kotlin
SDK for Kotlin
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

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.") } }
  • Para obter detalhes da API, consulte Publish na Referência da API do AWS SDK para Kotlin.

PHP
SDK para PHP
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.

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 para Python (Boto3)
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

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
  • Para obter detalhes da API, consulte Publish na Referência da API do AWS SDK for Python (Boto3).