Definindo preferências de mensagens SMS no Amazon SNS - 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á.

Definindo preferências de mensagens SMS no Amazon SNS

Use o Amazon SNS para especificar preferências para mensagens SMS. Por exemplo, é possível especificar se as entregas serão otimizadas para fins de custo ou confiabilidade, o limite de gastos mensais, como as entregas serão registradas e a inscrição em relatórios diários de uso de SMS.

Essas preferências entrarão em vigor para cada mensagem SMS que você enviar de sua conta, mas será possível substituir algumas delas quando enviar uma mensagem individual. Para ter mais informações, consulte Publicação de mensagens SMS em um telefone celular usando o Amazon SNS.

Definir preferências de mensagens SMS usando o AWS Management Console

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

  2. Escolha uma região que ofereça suporte a mensagens SMS.

  3. No painel de navegação, escolha Mobile (Dispositivo Móvel), Text messaging (SMS) (Mensagens de texto (SMS)).

  4. Na página Mobile text messaging (SMS) [Mensagens de texto (SMS) em dispositivos móveis], na seção Text messaging preferences (Preferências de mensagens de texto), escolha Edit (Editar).

  5. Na página Editar preferências de mensagens SMS, na seção Detalhes, faça o seguinte:

    1. Em Default message type (Tipo de mensagem padrão), selecione uma das seguintes opções:

      • Promocional: mensagens não essenciais (por exemplo, de marketing). O Amazon SNS otimiza a entrega de mensagens para gerar o custo mais baixo.

      • Transnacional (padrão): mensagens urgentes que comportam transações do cliente, como senhas únicas para autenticação multifator. O Amazon SNS otimiza a entrega de mensagens para gerar a mais alta confiabilidade.

      Para obter informações sobre a definição de preços para mensagens promocionais e transacionais, consulte Definição global de preço para SMS.

    2. (Opcional) Em Account spend limit (Limite de gastos da conta), insira a quantidade máxima (em dólares americanos) que você deseja gastar em mensagens SMS a cada mês.

      Importante
      • Por padrão, a cota de gasto é definida como 1,00 USD. Se desejar aumentar a cota de serviço, envie uma solicitação.

      • Se o valor definido no console exceder sua cota de serviço, o Amazon SNS interromperá a publicação de mensagens SMS.

      • Como o Amazon SNS é um sistema distribuído, ele interromperá o envio de mensagens SMS minutos depois que a cota de gasto for excedida. Durante esse intervalo, se você continuar a enviar mensagens SMS, poderá incorrer em custos que excederão sua cota.

  6. (Opcional) Em Default sender ID (ID do remetente padrão), insira um ID personalizado, como a marca de sua empresa, que será exibido como o remetente do dispositivo receptor.

    nota

    O suporte a IDs de remetente varia de acordo com o país.

  7. (Opcional) Digite o Amazon S3 bucket name for usage reports (Nome do bucket do Amazon S3 para relatórios de uso).

    nota

    A política de bucket do S3 deve conceder acesso de gravação ao Amazon SNS.

  8. Escolha Salvar alterações.

Preferências de configuração (AWS SDKs)

Para definir suas preferências de SMS usando um dos AWS SDKs, use a ação nesse SDK que corresponde à SetSMSAttributes solicitação na API do Amazon SNS. Com essa solicitação, você atribui valores para os diferentes atributos de SMS, como sua cota de gasto mensal e seu tipo de SMS padrão (promocional ou transacional). Para todos os atributos de SMS, consulte SetSMSAttributes na Referência de API do Amazon Simple Notification Service.

Os exemplos de códigos a seguir mostram como usar SetSMSAttributes.

C++
SDK para C++
nota

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

Como usar o Amazon SNS para definir o atributo DefaultSMSType.

//! Set the default settings for sending SMS messages. /*! \param smsType: The type of SMS message that you will send by default. \param clientConfiguration: AWS client configuration. \return bool: Function succeeded. */ bool AwsDoc::SNS::setSMSType(const Aws::String &smsType, const Aws::Client::ClientConfiguration &clientConfiguration) { Aws::SNS::SNSClient snsClient(clientConfiguration); Aws::SNS::Model::SetSMSAttributesRequest request; request.AddAttributes("DefaultSMSType", smsType); const Aws::SNS::Model::SetSMSAttributesOutcome outcome = snsClient.SetSMSAttributes( request); if (outcome.IsSuccess()) { std::cout << "SMS Type set successfully " << std::endl; } else { std::cerr << "Error while setting SMS Type: '" << outcome.GetError().GetMessage() << "'" << std::endl; } return outcome.IsSuccess(); }
  • Para receber detalhes da API, consulte SetSMSAttributes na Referência da API AWS SDK for C++ .

CLI
AWS CLI

Para definir atributos de mensagens SMS

O exemplo set-sms-attributes a seguir define o ID do remetente padrão para mensagens SMS como MyName.

aws sns set-sms-attributes \ --attributes DefaultSenderID=MyName

Este comando não produz saída.

  • Para encontrar detalhes da API, consulte SetSMSAttributes na Referência de comandos da AWS CLI .

Java
SDK para Java 2.x
nota

Tem mais sobre GitHub. Encontre o exemplo completo e veja 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.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); } } }
  • Para receber detalhes da API, consulte SetSMSAttributes na Referência da API AWS SDK for Java 2.x .

JavaScript
SDK para JavaScript (v3)
nota

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

Crie o cliente em um módulo separado e exporte-o.

import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});

Importe o SDK e os módulos do cliente e chame a API.

import { SetSMSAttributesCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; /** * @param {"Transactional" | "Promotional"} defaultSmsType */ export const setSmsType = async (defaultSmsType = "Transactional") => { const response = await snsClient.send( new SetSMSAttributesCommand({ attributes: { // Promotional – (Default) Noncritical messages, such as marketing messages. // Transactional – Critical messages that support customer transactions, // such as one-time passcodes for multi-factor authentication. DefaultSMSType: defaultSmsType, }, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '1885b977-2d7e-535e-8214-e44be727e265', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // } // } return response; };
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.

$SnSclient = new SnsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2010-03-31' ]); try { $result = $SnSclient->SetSMSAttributes([ 'attributes' => [ 'DefaultSMSType' => 'Transactional', ], ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }

Configurando preferências de mensagens SMS para entrega específica do país

Você pode gerenciar e controlar seu tráfego de SMS enviando mensagens somente para países de destino específicos. Isso garante que suas mensagens sejam enviadas somente para países aprovados, evitando cobranças indesejadas por SMS. As instruções a seguir usam a configuração do Amazon Pinpoint Protect para especificar os países que você deseja permitir ou bloquear.

  1. Abra o AWS SMS console em https://console.aws.amazon.com/sms-voice/.

  2. No painel de navegação, em Visão geral, na seção Início rápido, escolha Criar uma configuração de proteção.

  3. Em Detalhes da configuração de proteção, insira um nome comercial adequado para sua configuração de proteção (por exemplo, Allow-only-AU).

  4. Em Regras de país do SMS, marque a caixa de seleção Região/País para bloquear o envio de mensagens para todos os países compatíveis.

  5. Desmarque as caixas de seleção dos países para os quais você deseja enviar mensagens. Por exemplo, para permitir mensagens somente para a Austrália, desmarque a caixa de seleção para a Austrália.

  6. Na seção Proteger associações de configuração, em Tipo de associação, selecione Conta padrão. Isso garantirá que a configuração do Amazon Pinpoint SMS Protect afete todas as mensagens enviadas por meio do Amazon SNS, do Amazon Cognito e da chamada de API do Amazon Pinpoint. SendMessages

  7. Escolha Criar configuração de proteção para salvar suas configurações.

    A seguinte mensagem de confirmação é exibida:

    Success Protect configuration protect-abc0123456789 has been created.
  8. Faça login no console do Amazon SNS.

  9. Publique uma mensagem em um dos países bloqueados, como a Índia.

    A mensagem não será entregue. Você pode verificar isso nos registros de falha de entrega usando CloudWatch. Procure o grupo de log SNS/Region/AccountId/ DirectPublishToPhoneNumber /Failure para obter uma resposta semelhante ao exemplo a seguir:

    { "notification": { "messageId": "bd59a509-XXXX-XXXX-82f8-fbdb8cb68217", "timestamp": "YYYY-MM-DD XX:XX:XX.XXXX“ }, "delivery": { "destination": "+91XXXXXXXXXX", "smsType": "Transactional", "providerResponse": "Cannot deliver message to the specified destination country", "dwellTimeMs": 85 }, "status": "FAILURE" }