View a markdown version of this page

Recepción de mensajes RCS entrantes - AWS SMS de mensajería para el usuario final

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Recepción de mensajes RCS entrantes

AWS La mensajería para el usuario final admite la mensajería RCS bidireccional, lo que le permite recibir mensajes de texto de sus clientes. Los mensajes RCS entrantes siguen el mismo patrón que la mensajería bidireccional SMS: los mensajes entrantes se entregan en un tema de Amazon SNS que usted configure y usted los procesa mediante funciones de Lambda u otros suscriptores de SNS.

importante

Para consumir los mensajes RCS entrantes, debe configurar un tema de SNS de mensajería bidireccional en su agente RCS de AWS. La mensajería bidireccional está deshabilitada de forma predeterminada al crear un agente. Después de habilitarla y configurar un tema de SNS, los mensajes entrantes se envían a ese tema. A los clientes se les cobra por todos los mensajes RCS entrantes según las tarifas estándar.

En esta sección se explica cómo funciona la mensajería RCS bidireccional, cómo habilitarla para su agente RCS de AWS, el formato de carga útil de los mensajes entrantes y cómo administrar las palabras clave. Para obtener información sobre la administración de los agentes de AWS RCS, consulteAdministrar los agentes de RCS. Para obtener información sobre el envío de mensajes de RCS, consulte. Envío de mensajes RCS

Cómo funciona la mensajería RCS bidireccional

Cuando un cliente envía un mensaje de texto a su agente de AWS RCS, AWS End User Messaging recibe el mensaje y lo publica en un tema de Amazon SNS que usted designe. Desde allí, puede procesar el mensaje con cualquier suscriptor de SNS, como una función Lambda, una cola de Amazon SQS o un punto final. HTTP/HTTPS

El flujo de mensajería RCS bidireccional funciona de la siguiente manera:

  1. Un cliente envía un mensaje de texto a su agente de AWS RCS desde su dispositivo compatible con RCS.

  2. AWS La mensajería para el usuario final recibe el mensaje entrante y lo evalúa comparándolo con las palabras clave configuradas. Si el mensaje coincide con una palabra clave, el servicio envía la respuesta automática configurada (si la hay).

  3. AWS End User Messaging publica la carga útil del mensaje como un objeto JSON en el tema de Amazon SNS que configuró para la mensajería bidireccional en el agente RCS de AWS.

  4. Sus suscriptores de SNS (por ejemplo, una función Lambda) reciben la carga útil del mensaje y la procesan de acuerdo con la lógica de la aplicación.

En la mensajería de usuario AWS final, el RCS admite actualmente los mensajes de texto entrantes. Si un cliente envía un mensaje multimedia (como una imagen o un vídeo) a su agente de AWS RCS, el mensaje se registra con el estado IGNORADO. Su aplicación no recibe mensajes multimedia relacionados con el tema de las redes sociales.

Configuración del destino de mensajería bidireccional

Para recibir y procesar los mensajes RCS entrantes en su aplicación, debe habilitar la mensajería bidireccional y configurar un destino en su agente RCS de AWS. La mensajería bidireccional está deshabilitada de forma predeterminada. Al habilitarla, especificas un tema de Amazon SNS en el que AWS End User Messaging entregue los mensajes entrantes. Puede configurar el destino mediante la consola de mensajería para el usuario AWS final o la API.

Console
Para configurar el destino de la mensajería bidireccional mediante la consola
  1. Abra la consola de mensajería para el usuario AWS final.

  2. En el panel de navegación, elija los agentes de RCS.

  3. Elija el agente RCS de AWS que desee configurar.

  4. Elija la pestaña de mensajería bidireccional.

  5. Elija Editar configuración.

  6. Activa la opción Habilitar la mensajería bidireccional.

  7. Para el tema de SNS, elija un tema de Amazon SNS existente o cree uno nuevo. Este es el tema en el que se publican los mensajes entrantes.

  8. Seleccione Save.

AWS CLI

Para configurar tu destino de mensajería bidireccional mediante la API, llama a la UpdateRcsAgent API con los siguientes parámetros:

  • two-way-enabled— Configúrelo true para habilitar la mensajería bidireccional.

  • two-way-channel-arn— El ARN del tema Amazon SNS donde se publican los mensajes entrantes.

  • two-way-channel-role— El ARN de la función de IAM que concede permiso a AWS End User Messaging para publicar mensajes en el tema de SNS.

El siguiente ejemplo configura el destino de mensajería bidireccional mediante la 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

Permisos de temas de SNS

El tema de Amazon SNS que configure para la mensajería RCS bidireccional debe permitir que AWS End User Messaging publique mensajes en él. Tiene dos opciones para conceder el acceso.

Opción 1: utilizar un rol de IAM

Cree una función de IAM que la mensajería de usuario AWS final pueda asumir para publicar mensajes en su tema de SNS. El rol necesita una política de confianza y una política de permisos.

Esta es la política de confianza para el rol de IAM. accountIdSustitúyalo por el identificador único de su Cuenta de AWS.

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

Esta es la política de permisos para el rol de IAM. El SMSVoiceAllowSNSPublish Sid permite publicar temas en Amazon SNS y el SMSVoiceAllowEncryptedSNSTopics Sid es opcional para temas cifrados de Amazon SNS. Realice los siguientes cambios:

  • partitionSustitúyalo por la AWS partición en la que utiliza la mensajería de usuario AWS final.

  • regionSustitúyala por la Región de AWS que utilizas la mensajería para el usuario AWS final.

  • accountIdSustitúyalo por el identificador único de su Cuenta de AWS.

  • snsTopicNameSustitúyalo por el nombre del tema de Amazon SNS que recibe los mensajes entrantes.

{ "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" } } } ] }

Opción 2: utilice una política de temas de SNS

Como alternativa, puede añadir directamente al tema del SNS una declaración de política que permita a AWS End User Messaging publicar mensajes. snsTopicArnSustitúyalo por el ARN de su tema de SNS.

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

Formato de carga útil de los mensajes entrantes

Cuando su agente de AWS RCS recibe un mensaje de texto entrante, AWS End User Messaging publica una carga útil JSON en el tema de Amazon SNS configurado. La carga útil de los mensajes entrantes de RCS utiliza el mismo formato que la mensajería bidireccional SMS:

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

La carga útil de los mensajes entrantes contiene los siguientes campos:

Campos de carga útil de mensajes RCS entrantes
Campo Description (Descripción)

originationNumber

El número de teléfono que envió el mensaje entrante (el número de teléfono del cliente).

destinationNumber

El identificador del agente RCS de AWS que recibió el mensaje.

messageKeyword

La palabra clave registrada que coincide con el mensaje entrante, si existe. Las palabras clave se evalúan al principio del cuerpo del mensaje.

messageBody

El contenido de texto del mensaje entrante.

inboundMessageId

Un identificador único para el mensaje entrante.

previousPublishedMessageId

El identificador único del mensaje saliente al que responde el cliente, si el mensaje entrante es una respuesta a un mensaje saliente anterior.

Tipos de mensajes admitidos

Actualmente, el RCS de la mensajería para usuarios AWS finales admite la recepción de mensajes de texto entrantes. Cuando un cliente envía un mensaje de texto a su agente de AWS RCS, el mensaje se entrega en el tema de Amazon SNS configurado para su procesamiento.

Si un cliente envía un mensaje multimedia (como una imagen, un vídeo o un archivo) a su agente de AWS RCS, AWS End User Messaging registra el mensaje con el estado IGNORADO. Los mensajes multimedia no se envían a su tema de SNS ni los procesa su aplicación. No se devuelve ningún error al remitente.

Administración de palabras clave para RCS

Las palabras clave le permiten configurar respuestas automáticas cuando los clientes envían palabras o frases específicas a su agente de AWS RCS. Cuando un mensaje entrante coincide con una palabra clave configurada, la mensajería del usuario AWS final devuelve al cliente el mensaje de respuesta automática asociado.

En el caso de RCS, las palabras clave se configuran en el agente de AWS RCS y se aplican a todos los RCS for Business asociados IDs (agente de pruebas y agentes de lanzamiento nacionales). Puede configurar hasta 30 palabras clave por agente de AWS RCS.

Para administrar las palabras clave de su agente RCS de AWS, utilice la consola de mensajería para el usuario AWS final o la API. Para obtener información general sobre la administración de palabras clave, consultePalabras clave en los SMS de mensajería para usuarios AWS finales.

nota

Las palabras clave configuradas en el agente RCS de AWS se aplican a todos los registros asociados. No puede establecer palabras clave diferentes para el agente de pruebas y para los agentes de lanzamiento de su país de forma independiente.

Procesamiento de mensajes entrantes con Lambda

Un patrón común para procesar los mensajes RCS entrantes consiste en suscribir una función Lambda al tema Amazon SNS configurado para la mensajería bidireccional. La función Lambda recibe la carga útil de los mensajes entrantes y puede implementar la lógica de la aplicación, como responder a las consultas de los clientes, procesar comandos o enrutar mensajes a otros sistemas.

El siguiente ejemplo de Python muestra una función Lambda que procesa los mensajes RCS entrantes y envía una respuesta mediante la 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}

En este ejemplo, la función Lambda:

  1. Analiza la carga útil del mensaje entrante del evento SNS.

  2. Comprueba el messageKeyword campo para determinar la intención del cliente.

  3. Envía una respuesta mediante un envío basado en grupos (recomendado) a través de la SendTextMessage API. El grupo gestiona la selección de canales automáticamente.

nota

Cuando envíes respuestas a los mensajes entrantes, utiliza el envío por grupos para garantizar que los SMS se envíen automáticamente en caso de que el dispositivo del cliente deje de ser compatible con RCS. Para obtener más información sobre los patrones de envío, consulte. Envío de mensajes RCS

Prácticas recomendadas para la mensajería RCS entrante

Siga estas prácticas recomendadas al implementar la mensajería RCS bidireccional:

  • Implemente la gestión de errores: su función Lambda o suscriptor de SNS debe gestionar los errores correctamente. Si su función no procesa un mensaje, configure una cola de mensajes sin procesar (DLQ) en la suscripción de SNS para capturar los mensajes sin procesar y volver a intentarlo más adelante.

  • Envía respuestas alternativas: cuando tu aplicación reciba un mensaje que no pueda procesar, envía una respuesta alternativa útil en lugar de dejar al cliente sin respuesta. Por ejemplo, responda con los comandos disponibles o dirija al cliente a un canal de asistencia alternativo.

  • Utilice el envío basado en grupos para las respuestas: al enviar respuestas a los mensajes entrantes, utilice el envío basado en grupos para garantizar que los SMS se envíen automáticamente como alternativa. Esto garantiza que tu respuesta llegue al cliente incluso si su dispositivo ya no es compatible con RCS.

  • Supervisa el procesamiento de mensajes: usa CloudWatch las métricas de Amazon para monitorear el volumen de mensajes entrantes y la tasa de éxito del procesamiento. Configura alarmas para detectar patrones inusuales, como un aumento repentino de los mensajes entrantes o una alta tasa de errores de procesamiento. Para obtener más información sobre las métricas de RCS, consulte. Monitorización y CloudWatch métricas de RCS

  • Gestione las respuestas de palabras clave de forma coherente: asegúrese de que las respuestas automáticas de las palabras clave y las respuestas programáticas de su aplicación no entren en conflicto. Si configura una respuesta automática de palabras clave para una palabra clave específica, la función Lambda seguirá recibiendo el mensaje. Diseña tu función para evitar enviar una respuesta duplicada para las palabras clave que ya tienen configuradas las respuestas automáticas.