View a markdown version of this page

Recebendo mensagens RCS de entrada - AWS SMS de mensagens para o usuário final

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

Recebendo mensagens RCS de entrada

AWS O End User Messaging suporta mensagens RCS bidirecionais, permitindo que você receba mensagens de texto de seus clientes. As mensagens RCS de entrada seguem o mesmo padrão das mensagens bidirecionais SMS: as mensagens recebidas são entregues a um tópico do Amazon SNS que você configura e você as processa usando funções Lambda ou outros assinantes do SNS.

Importante

Para consumir mensagens RCS de entrada, você deve configurar um tópico de SNS de mensagens bidirecionais em seu AWS RCS Agent. As mensagens bidirecionais são desativadas por padrão quando você cria um agente. Depois de habilitá-lo e configurar um tópico do SNS, as mensagens de entrada são enviadas para esse tópico. Os clientes são cobrados por todas as mensagens RCS recebidas com taxas padrão.

Esta seção explica como as mensagens RCS bidirecionais funcionam, como habilitá-las para seu AWS RCS Agent, o formato da carga útil da mensagem de entrada e como gerenciar palavras-chave. Para obter informações sobre o gerenciamento de agentes do AWS RCS, consulteGerenciando agentes RCS. Para obter informações sobre o envio de mensagens RCS, consulteEnviando mensagens RCS.

Como funcionam as mensagens RCS bidirecionais

Quando um cliente envia uma mensagem de texto para seu agente do AWS RCS, o AWS End User Messaging recebe a mensagem e a publica em um tópico do Amazon SNS que você designar. A partir daí, você pode processar a mensagem usando qualquer assinante do SNS, como uma função Lambda, uma fila do Amazon SQS ou um endpoint. HTTP/HTTPS

O fluxo bidirecional de mensagens RCS funciona da seguinte maneira:

  1. Um cliente envia uma mensagem de texto para seu agente do AWS RCS a partir de seu dispositivo compatível com RCS.

  2. AWS O End User Messaging recebe a mensagem de entrada e a avalia em relação às palavras-chave configuradas. Se a mensagem corresponder a uma palavra-chave, o serviço enviará a resposta automática configurada (se houver).

  3. AWS O End User Messaging publica a carga da mensagem como um objeto JSON no tópico do Amazon SNS que você configurou para mensagens bidirecionais no AWS RCS Agent.

  4. Seus assinantes do SNS (por exemplo, uma função Lambda) recebem a carga útil da mensagem e a processam de acordo com a lógica do seu aplicativo.

O RCS no AWS End User Messaging atualmente suporta mensagens de texto recebidas. Se um cliente enviar uma mensagem de mídia (como uma imagem ou vídeo) para seu agente do AWS RCS, a mensagem será registrada com o status IGNORADO. Seu aplicativo não recebe mensagens de mídia por meio do tópico SNS.

Configurando seu destino de mensagens bidirecionais

Para receber e processar mensagens RCS de entrada em seu aplicativo, você deve habilitar mensagens bidirecionais e configurar um destino em seu AWS RCS Agent. As mensagens bidirecionais estão desativadas por padrão. Ao habilitá-lo, você especifica um tópico do Amazon SNS em que o AWS End User Messaging entrega mensagens de entrada. Você pode configurar o destino usando o console AWS End User Messaging ou a API.

Console
Para configurar seu destino de mensagens bidirecionais usando o console
  1. Abra o console AWS End User Messaging.

  2. No painel de navegação, escolha agentes RCS.

  3. Escolha o AWS RCS Agent que você deseja configurar.

  4. Escolha a guia Mensagens bidirecionais.

  5. Escolha Edit Settings.

  6. Ative a opção Ativar mensagens bidirecionais.

  7. Para o tópico do SNS, escolha um tópico existente do Amazon SNS ou crie um novo. Esse é o tópico em que as mensagens recebidas são publicadas.

  8. Escolha Salvar.

AWS CLI

Para configurar seu destino de mensagens bidirecionais usando a API, chame a UpdateRcsAgent API com os seguintes parâmetros:

  • two-way-enabled— Defina como true para ativar mensagens bidirecionais.

  • two-way-channel-arn— O ARN do tópico do Amazon SNS em que as mensagens recebidas são publicadas.

  • two-way-channel-role— O ARN da função do IAM que concede permissão AWS ao End User Messaging para publicar mensagens no tópico do SNS.

O exemplo a seguir configura o destino de mensagens bidirecionais usando a CLI AWS :

aws pinpoint-sms-voice-v2 update-rcs-agent \ --rcs-agent-id rcs-a1b2c3d4 \ --two-way-enabled \ --two-way-channel-arn arn:aws:sns:us-east-1:123456789012:MyRCSInboundTopic \ --two-way-channel-role arn:aws:iam::123456789012:role/SMSVoiceSNSPublishRole

Permissões de tópicos do SNS

O tópico do Amazon SNS que você configura para mensagens RCS bidirecionais deve permitir que o AWS End User Messaging publique mensagens nele. Você tem duas opções para conceder acesso.

Opção 1: usar uma função do IAM

Crie uma função do IAM que o AWS End User Messaging possa assumir para publicar mensagens em seu tópico do SNS. A função precisa de uma política de confiança e de uma política de permissão.

A seguir, apresentamos a política de confiança para o perfil do IAM. accountIdSubstitua pelo ID exclusivo do seu Conta da AWS.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SMSVoice", "Effect": "Allow", "Principal": { "Service": "sms-voice.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "accountId" } } } ] }

A seguir está a política de permissões para o perfil do IAM. O SMSVoiceAllowSNSPublish Sid permite a publicação em tópicos do Amazon SNS e SMSVoiceAllowEncryptedSNSTopics o Sid é opcional para tópicos criptografados do Amazon SNS. Faça as seguintes alterações em:

  • partitionSubstitua pela AWS partição na qual você usa o AWS End User Messaging.

  • regionSubstitua por Região da AWS aquela em que você usa o AWS End User Messaging.

  • accountIdSubstitua pelo ID exclusivo do seu Conta da AWS.

  • snsTopicNameSubstitua pelo nome do tópico do Amazon SNS que recebe mensagens de entrada.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SMSVoiceAllowSNSPublish", "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:partition:sns:region:accountId:snsTopicName", "Condition": { "StringEquals": { "aws:ResourceAccount": "accountId" } } }, { "Sid": "SMSVoiceAllowEncryptedSNSTopics", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:sns:topicArn": "arn:partition:sns:region:accountId:snsTopicName", "aws:CalledViaLast": "sns.amazonaws.com" } } } ] }

Opção 2: usar uma política de tópicos do SNS

Como alternativa, adicione uma declaração de política diretamente ao tópico do SNS que permita que o AWS End User Messaging publique mensagens. snsTopicArnSubstitua pelo ARN do seu tópico do SNS.

{ "Effect": "Allow", "Principal": { "Service": "sms-voice.amazonaws.com" }, "Action": "sns:Publish", "Resource": "snsTopicArn" }

Formato de carga útil da mensagem de entrada

Quando seu AWS RCS Agent recebe uma mensagem de texto de entrada, o AWS End User Messaging publica uma carga JSON no tópico configurado do Amazon SNS. A carga útil da mensagem de entrada do RCS usa o mesmo formato das mensagens bidirecionais SMS:

{ "originationNumber": "+14255550182", "destinationNumber": "+12125550101", "messageKeyword": "JOIN", "messageBody": "EXAMPLE", "inboundMessageId": "cae173d2-66b9-564c-8309-21f858e9fb84", "previousPublishedMessageId": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" }

O payload da mensagem de entrada contém os seguintes campos:

Campos de carga útil de mensagens RCS de entrada
Campo Description

originationNumber

O número de telefone que enviou a mensagem de entrada (o número de telefone do cliente).

destinationNumber

O identificador do AWS RCS Agent que recebeu a mensagem.

messageKeyword

A palavra-chave registrada que corresponde à mensagem de entrada, se houver. As palavras-chave são avaliadas em relação ao início do corpo da mensagem.

messageBody

O conteúdo do texto da mensagem de entrada.

inboundMessageId

Um identificador exclusivo para a mensagem de entrada.

previousPublishedMessageId

O identificador exclusivo da mensagem de saída à qual o cliente está respondendo, se a mensagem de entrada for uma resposta a uma mensagem de saída anterior.

Tipos de mensagens com suporte

O RCS no AWS End User Messaging atualmente suporta o recebimento de mensagens de texto recebidas. Quando um cliente envia uma mensagem de texto para seu agente do AWS RCS, a mensagem é entregue ao tópico configurado do Amazon SNS para processamento.

Se um cliente enviar uma mensagem de mídia (como imagem, vídeo ou arquivo) para seu agente do AWS RCS, o AWS End User Messaging registrará a mensagem com o status IGNORADO. As mensagens de mídia não são enviadas ao tópico do SNS e não são processadas pelo seu aplicativo. Nenhum erro é retornado ao remetente.

Gerenciamento de palavras-chave para RCS

As palavras-chave permitem que você configure respostas automáticas quando os clientes enviam palavras ou frases específicas para seu agente do AWS RCS. Quando uma mensagem de entrada corresponde a uma palavra-chave configurada, o AWS End User Messaging envia a mensagem de resposta automática associada de volta ao cliente.

Para o RCS, as palavras-chave são configuradas no AWS RCS Agent e se aplicam a todos os RCS for Business associados IDs (agente de teste e agentes de lançamento do país). Você pode configurar até 30 palavras-chave por AWS RCS Agent.

Para gerenciar palavras-chave para seu AWS RCS Agent, use o console AWS End User Messaging ou a API. Para obter informações gerais sobre gerenciamento de palavras-chave, consultePalavras-chave em SMS de mensagens para usuários AWS finais.

nota

As palavras-chave configuradas no AWS RCS Agent se aplicam a todos os registros associados. Você não pode definir palavras-chave diferentes para seu agente de teste e para os agentes de lançamento do país de forma independente.

Processamento de mensagens recebidas com o Lambda

Um padrão comum para o processamento de mensagens RCS de entrada é inscrever uma função Lambda no tópico do Amazon SNS configurado para mensagens bidirecionais. A função Lambda recebe a carga útil da mensagem de entrada e pode implementar a lógica do seu aplicativo, como responder às consultas dos clientes, processar comandos ou rotear mensagens para outros sistemas.

O exemplo de Python a seguir mostra uma função Lambda que processa mensagens RCS de entrada e envia uma resposta usando a API: SendTextMessage

import json import boto3 sms_client = boto3.client('pinpoint-sms-voice-v2') def lambda_handler(event, context): # Parse the SNS message for record in event['Records']: sns_message = json.loads(record['Sns']['Message']) origination_number = sns_message['originationNumber'] message_body = sns_message['messageBody'] keyword = sns_message.get('messageKeyword', '') print(f"Received message from {origination_number}: {message_body}") # Process the message and determine a response if keyword.upper() == 'HELP': response_text = 'Available commands: HELP, STATUS, STOP' elif keyword.upper() == 'STATUS': response_text = 'Your account is active. No action needed.' else: response_text = ( f'Thanks for your message. ' f'Reply HELP for available commands.' ) # Send a response back to the customer try: response = sms_client.send_text_message( DestinationPhoneNumber=origination_number, OriginationIdentity='pool-a1b2c3d4e5f6g7h8i', MessageBody=response_text, MessageType='TRANSACTIONAL' ) print(f"Response sent. Message ID: {response['MessageId']}") except Exception as e: print(f"Failed to send response: {str(e)}") return {'statusCode': 200}

Neste exemplo, a função Lambda:

  1. Analisa a carga útil da mensagem de entrada do evento SNS.

  2. Verifica o messageKeyword campo para determinar a intenção do cliente.

  3. Envia uma resposta usando o envio baseado em pool (recomendado) por meio da SendTextMessage API. O pool gerencia a seleção de canais automaticamente.

nota

Ao enviar respostas às mensagens recebidas, use o envio baseado em pool para garantir o retorno automático de SMS se o dispositivo do cliente não suportar mais o RCS. Para obter detalhes sobre padrões de envio, consulteEnviando mensagens RCS.

Práticas recomendadas para mensagens RCS de entrada

Siga estas melhores práticas ao implementar mensagens RCS bidirecionais:

  • Implemente o tratamento de erros — Sua função Lambda ou assinante do SNS deve lidar com os erros normalmente. Se sua função falhar ao processar uma mensagem, configure uma fila de cartas mortas (DLQ) na assinatura do SNS para capturar mensagens não processadas para tentar novamente mais tarde.

  • Envie respostas alternativas — Quando seu aplicativo receber uma mensagem que não consegue processar, envie uma resposta alternativa útil em vez de deixar o cliente sem uma resposta. Por exemplo, responda com os comandos disponíveis ou direcione o cliente para um canal de suporte alternativo.

  • Use o envio baseado em pool para respostas — Ao enviar respostas às mensagens recebidas, use o envio baseado em pool para garantir o retorno automático de SMS. Isso garante que sua resposta chegue ao cliente mesmo que o dispositivo não ofereça mais suporte ao RCS.

  • Monitore o processamento de mensagens — Use CloudWatch as métricas da Amazon para monitorar o volume de mensagens recebidas e a taxa de sucesso do processamento. Configure alarmes para padrões incomuns, como um aumento repentino nas mensagens recebidas ou uma alta taxa de falhas de processamento. Para obter detalhes sobre as métricas do RCS, consulteCloudWatch Métricas e monitoramento do RCS.

  • Lide com respostas de palavras-chave de forma consistente — garanta que as respostas automáticas de palavras-chave e as respostas programáticas do seu aplicativo não entrem em conflito. Se você configurar uma resposta automática de palavra-chave para uma palavra-chave específica, sua função Lambda ainda receberá a mensagem. Crie sua função para evitar o envio de uma resposta duplicada para palavras-chave que já tenham respostas automáticas configuradas.