View a markdown version of this page

Ricezione di messaggi RCS in entrata - AWS SMS di messaggistica per l'utente finale

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Ricezione di messaggi RCS in entrata

AWS End User Messaging supporta la messaggistica RCS bidirezionale, che consente di ricevere messaggi di testo dai clienti. I messaggi RCS in entrata seguono lo stesso schema della messaggistica bidirezionale SMS: i messaggi in entrata vengono recapitati a un argomento Amazon SNS configurato dall'utente e vengono elaborati utilizzando le funzioni Lambda o altri abbonati SNS.

Importante

Per utilizzare i messaggi RCS in entrata, devi impostare un argomento SNS di messaggistica bidirezionale sul tuo agente AWS RCS. La messaggistica bidirezionale è disabilitata per impostazione predefinita quando crei un agente. Dopo averlo abilitato e configurato un argomento SNS, i messaggi in entrata vengono recapitati a quell'argomento. Ai clienti vengono addebitati i costi per tutti i messaggi RCS in entrata secondo le tariffe standard.

Questa sezione spiega come funziona la messaggistica RCS bidirezionale, come abilitarla per il tuo agente AWS RCS, il formato del payload dei messaggi in entrata e come gestire le parole chiave. Per informazioni sulla gestione degli agenti AWS RCS, consultaGestione degli agenti RCS. Per informazioni sull'invio di messaggi RCS, consulta. Invio di messaggi RCS

Come funziona la messaggistica RCS bidirezionale

Quando un cliente invia un messaggio di testo al tuo agente AWS RCS, AWS End User Messaging riceve il messaggio e lo pubblica su un argomento Amazon SNS da te indicato. Da lì, puoi elaborare il messaggio utilizzando qualsiasi abbonato SNS, come una funzione Lambda, una coda Amazon SQS o un endpoint. HTTP/HTTPS

Il flusso di messaggistica RCS bidirezionale funziona come segue:

  1. Un cliente invia un messaggio di testo al tuo agente AWS RCS dal suo dispositivo compatibile con RCS.

  2. AWS End User Messaging riceve il messaggio in entrata e lo valuta in base alle parole chiave configurate. Se il messaggio corrisponde a una parola chiave, il servizio invia la risposta automatica configurata (se presente).

  3. AWS End User Messaging pubblica il payload del messaggio come oggetto JSON nell'argomento Amazon SNS che hai configurato per la messaggistica bidirezionale sull'agente AWS RCS.

  4. I tuoi abbonati SNS (ad esempio, una funzione Lambda) ricevono il payload del messaggio e lo elaborano in base alla logica dell'applicazione.

RCS in AWS End User Messaging attualmente supporta i messaggi di testo in entrata. Se un cliente invia un messaggio multimediale (come un'immagine o un video) al tuo agente AWS RCS, il messaggio viene registrato con lo stato IGNORATO. L'applicazione non riceve messaggi multimediali tramite l'argomento SNS.

Configurazione della destinazione di messaggistica bidirezionale

Per ricevere ed elaborare i messaggi RCS in entrata nella tua applicazione, devi abilitare la messaggistica bidirezionale e configurare una destinazione sul tuo agente AWS RCS. La messaggistica bidirezionale è disabilitata per impostazione predefinita. Quando lo abiliti, specifichi un argomento di Amazon SNS in cui AWS End User Messaging recapita i messaggi in entrata. Puoi configurare la destinazione utilizzando la console di messaggistica dell'utente AWS finale o l'API.

Console
Per configurare la destinazione di messaggistica bidirezionale utilizzando la console
  1. Apri la console di messaggistica per l'utente AWS finale.

  2. Nel riquadro di navigazione, scegli Agenti RCS.

  3. Scegli l'agente AWS RCS che desideri configurare.

  4. Scegli la scheda Messaggistica bidirezionale.

  5. Seleziona Modifica impostazioni.

  6. Attiva Abilita la messaggistica bidirezionale.

  7. Per l'argomento SNS, scegli un argomento Amazon SNS esistente o creane uno nuovo. Questo è l'argomento in cui vengono pubblicati i messaggi in entrata.

  8. Scegli Save (Salva).

AWS CLI

Per configurare la destinazione di messaggistica bidirezionale utilizzando l'API, chiama l'UpdateRcsAgentAPI con i seguenti parametri:

  • two-way-enabled— Impostato per true abilitare la messaggistica bidirezionale.

  • two-way-channel-arn— L'ARN dell'argomento Amazon SNS in cui vengono pubblicati i messaggi in entrata.

  • two-way-channel-role— L'ARN del ruolo IAM che concede l'autorizzazione AWS End User Messaging a pubblicare messaggi sull'argomento SNS.

L'esempio seguente configura la destinazione di messaggistica bidirezionale utilizzando 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

Autorizzazioni per gli argomenti SNS

L'argomento Amazon SNS che configuri per la messaggistica RCS bidirezionale deve consentire a AWS End User Messaging di pubblicare messaggi su di esso. Hai due opzioni per concedere l'accesso.

Opzione 1: utilizza un ruolo IAM

Crea un ruolo IAM che AWS End User Messaging possa assumere per pubblicare messaggi sul tuo argomento SNS. Il ruolo richiede sia una politica di fiducia che una politica di autorizzazione.

Di seguito è riportata la politica di fiducia per il ruolo IAM. Sostituiscila accountId con l'ID univoco del tuo Account AWS.

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

Di seguito è riportata la politica di autorizzazione per il ruolo IAM. Il SMSVoiceAllowSNSPublish Sid consente la pubblicazione su argomenti Amazon SNS e SMSVoiceAllowEncryptedSNSTopics il Sid è opzionale per gli argomenti crittografati di Amazon SNS. Apporta le seguenti modifiche:

  • partitionSostituiscilo con la AWS partizione in cui utilizzi AWS End User Messaging.

  • regionSostituiscila con Regione AWS quella in cui utilizzi la messaggistica con l'utente AWS finale.

  • Sostituiscilo accountId con l'ID univoco del tuo Account AWS.

  • Sostituisci snsTopicName con il nome dell'argomento Amazon SNS che riceve i messaggi in entrata.

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

Opzione 2: utilizza una policy tematica SNS

In alternativa, aggiungi una dichiarazione politica direttamente all'argomento SNS che consenta a AWS End User Messaging di pubblicare messaggi. Sostituisci snsTopicArn con l'ARN del tuo argomento SNS.

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

Formato del payload dei messaggi in entrata

Quando il tuo agente AWS RCS riceve un messaggio di testo in entrata, AWS End User Messaging pubblica un payload JSON sull'argomento Amazon SNS configurato. Il payload dei messaggi in entrata RCS utilizza lo stesso formato della messaggistica bidirezionale SMS:

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

Il payload dei messaggi in entrata contiene i seguenti campi:

Campi di payload dei messaggi RCS in entrata
Campo Description

originationNumber

Il numero di telefono che ha inviato il messaggio in entrata (il numero di telefono del cliente).

destinationNumber

L'identificatore dell'agente AWS RCS che ha ricevuto il messaggio.

messageKeyword

La parola chiave registrata che corrisponde al messaggio in entrata, se presente. Le parole chiave vengono valutate rispetto all'inizio del corpo del messaggio.

messageBody

Il contenuto testuale del messaggio in entrata.

inboundMessageId

Un identificatore univoco per il messaggio in entrata.

previousPublishedMessageId

L'identificatore univoco del messaggio in uscita a cui il cliente sta rispondendo, se il messaggio in entrata è una risposta a un messaggio in uscita precedente.

Tipi di messaggi supportati

RCS in AWS End User Messaging attualmente supporta la ricezione di messaggi di testo in entrata. Quando un cliente invia un messaggio di testo al tuo agente AWS RCS, il messaggio viene recapitato all'argomento Amazon SNS configurato per l'elaborazione.

Se un cliente invia un messaggio multimediale (come un'immagine, un video o un file) al tuo agente AWS RCS, AWS End User Messaging registra il messaggio con lo stato IGNORATO. I messaggi multimediali non vengono recapitati all'argomento SNS e non vengono elaborati dall'applicazione. Nessun errore viene restituito al mittente.

Gestione delle parole chiave per RCS

Le parole chiave consentono di configurare risposte automatiche quando i clienti inviano parole o frasi specifiche al tuo agente AWS RCS. Quando un messaggio in entrata corrisponde a una parola chiave configurata, AWS End User Messaging invia il messaggio di risposta automatica associato al cliente.

Per RCS, le parole chiave sono configurate sull'agente RCS di AWS e si applicano a tutti gli RCS for Business associati IDs (agente di test e agenti di lancio nazionali). Puoi configurare fino a 30 parole chiave per agente AWS RCS.

Per gestire le parole chiave per il tuo agente AWS RCS, usa la console AWS End User Messaging o l'API. Per informazioni generali sulla gestione delle parole chiave, consultaParole chiave negli SMS di messaggistica per gli utenti AWS finali.

Nota

Le parole chiave configurate sull'agente AWS RCS si applicano a tutte le registrazioni associate. Non puoi impostare parole chiave diverse per il tuo agente di test e gli agenti di lancio nazionali in modo indipendente.

Elaborazione dei messaggi in entrata con Lambda

Un modello comune per l'elaborazione dei messaggi RCS in entrata consiste nel sottoscrivere una funzione Lambda all'argomento Amazon SNS configurato per la messaggistica bidirezionale. La funzione Lambda riceve il payload dei messaggi in entrata e può implementare la logica dell'applicazione, ad esempio rispondere alle richieste dei clienti, elaborare comandi o instradare messaggi verso altri sistemi.

Il seguente esempio di Python mostra una funzione Lambda che elabora i messaggi RCS in entrata e invia una risposta utilizzando l'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}

In questo esempio, la funzione Lambda:

  1. Analizza il payload dei messaggi in entrata dall'evento SNS.

  2. Controlla il messageKeyword campo per determinare l'intenzione del cliente.

  3. Invia una risposta utilizzando l'invio basato sul pool (consigliato) tramite l'SendTextMessageAPI. Il pool gestisce automaticamente la selezione dei canali.

Nota

Quando inviate risposte ai messaggi in entrata, utilizzate l'invio basato sul pool per garantire il fallback automatico degli SMS se il dispositivo del cliente non supporta più RCS. Per i dettagli sugli schemi di invio, consulta. Invio di messaggi RCS

Le migliori pratiche per la messaggistica RCS in entrata

Segui queste best practice per implementare la messaggistica RCS bidirezionale:

  • Implementa la gestione degli errori: la tua funzione Lambda o l'abbonato SNS dovrebbe gestire gli errori con garbo. Se la tua funzione non riesce a elaborare un messaggio, configura una coda di lettere morte (DLQ) sull'abbonamento SNS per acquisire i messaggi non elaborati e riprovare in un secondo momento.

  • Invia risposte di riserva: quando l'applicazione riceve un messaggio che non può essere elaborato, invia una risposta alternativa utile anziché lasciare il cliente senza risposta. Ad esempio, rispondi con i comandi disponibili o indirizza il cliente verso un canale di assistenza alternativo.

  • Utilizza l'invio basato sul pool per le risposte: quando invii risposte ai messaggi in entrata, utilizza l'invio basato sul pool per garantire il fallback automatico degli SMS. Ciò garantisce che la risposta raggiunga il cliente anche se il suo dispositivo non supporta più RCS.

  • Monitora l'elaborazione dei messaggi: utilizza i CloudWatch parametri di Amazon per monitorare il volume dei messaggi in entrata e la percentuale di successo dell'elaborazione. Imposta allarmi per situazioni insolite, come un aumento improvviso dei messaggi in entrata o un elevato tasso di errori di elaborazione. Per i dettagli sulle metriche RCS, consulta. CloudWatch Metriche e monitoraggio RCS

  • Gestisci le risposte alle parole chiave in modo coerente: assicurati che le risposte automatiche alle parole chiave e le risposte programmatiche dell'applicazione non siano in conflitto. Se configuri una risposta automatica per una parola chiave specifica, la funzione Lambda riceve comunque il messaggio. Progetta la tua funzione per evitare di inviare una risposta duplicata per le parole chiave che hanno già configurato le risposte automatiche.