Gli agenti di RCS for Business comunicano con gli utenti inviando e ricevendo messaggi. Per inviare messaggi agli utenti, l'agente invia richieste di messaggio all'API di messaggistica di RCS Business. Una singola richiesta può includere testo , schede interattive , file multimediali e PDF , risposte suggerite e azioni suggerite .
La piattaforma RCS for Business restituisce errori in determinate situazioni per aiutarti a gestire la consegna dei messaggi:
- Se invii un messaggio a un utente il cui dispositivo non supporta RCS o non ha RCS abilitato, la piattaforma RCS for Business restituisce un errore 404 NOT_FOUND. In questo caso, puoi provare a contattare l'utente tramite i metodi di fallback definiti nella tua infrastruttura.
- Se invii un messaggio a un utente RCS su una rete in cui il tuo agente non è ancora stato avviato o su una rete in cui il traffico RCS non è abilitato, la piattaforma RCS for Business restituisce un errore 404 NOT_FOUND.
- Se invii un messaggio con funzionalità non supportate dal dispositivo dell'utente, la piattaforma RCS for Business restituisce l'errore 400 INVALID_ARGUMENT e non recapita il messaggio.
Nell'ambito della tua strategia di messaggistica multicanale, è consigliabile revocare i messaggi non recapitati dopo un tempo ragionevole e inoltrarli tramite un canale diverso. Per revocare automaticamente i messaggi a un orario predefinito, imposta una data di scadenza .
Il destinatario è offline
La piattaforma RCS for Business accetta comunque un messaggio per la consegna anche se il destinatario è offline. Riceverai una risposta 200 OK e la piattaforma RCS for Business manterrà il messaggio in sospeso, tentando una nuova consegna per 30 giorni. Non è necessario richiedere a RCS for Business di inviare nuovamente il messaggio.
RCS for Business elimina tutti i messaggi non recapitati 30 giorni dopo l'invio.
A seconda del caso d'uso specifico del tuo agente, potresti voler revocare un messaggio non recapitato prima dello scadere dei 30 giorni. La revoca può impedire agli utenti offline di ricevere un messaggio obsoleto al loro ritorno online. Esistono diversi modi per revocare un messaggio:
- Invia una richiesta di revoca per avviare la procedura di revoca.
- Imposta una data di scadenza per i messaggi , in modo che vengano automaticamente revocati al momento opportuno.
Imposta la scadenza dei messaggi
I messaggi del tuo agente sono soggetti a scadenza? Ad esempio, i codici OTP sono validi solo per un breve periodo. Le offerte a tempo limitato scadono. E i promemoria degli appuntamenti non sono più rilevanti dopo la data dell'appuntamento. Per mantenere i messaggi tempestivi e pertinenti, imposta una data di scadenza. Questo può impedire agli utenti offline di ricevere contenuti obsoleti quando tornano online. La scadenza è anche un buon segnale per attivare la tua strategia di messaggistica di riserva, in modo che gli utenti ricevano le informazioni di cui hanno bisogno in tempo.
Per impostare la scadenza di un messaggio, specificare uno dei seguenti campi nel messaggio dell'agente:
-
expireTime: l'ora esatta in UTC in cui il messaggio scade. -
ttl(time to live): il tempo che intercorre prima della scadenza del messaggio.
Per le opzioni di formattazione e di valore, vedere AgentMessage .
Il valore massimo per ttl e expireTime è di 15 giorni dopo l'invio del messaggio.
Sebbene non esista un valore minimo ttl e expireTime , si consiglia di attendere almeno 10 secondi dopo l'invio del messaggio per ridurre significativamente la probabilità di ricevere la notifica sia di revoca che di consegna.
Tempo di vita (TTL) per un messaggio
Quando si imposta un TTL per un messaggio RCS for Business, si specifica per quanto tempo il messaggio deve essere considerato valido e consegnabile. Se il messaggio non viene consegnato correttamente al dispositivo dell'utente entro questo periodo TTL, la piattaforma RCS for Business tenta automaticamente di revocarlo.
Quando si avvia la revoca di un messaggio, si richiede alla piattaforma RCS for Business di interrompere i tentativi di consegna di quello specifico messaggio. Tuttavia, questa azione ha effetto solo sui tentativi di consegna futuri. Se il dispositivo di un utente ha già ricevuto correttamente il messaggio, quest'ultimo è in fase di elaborazione e la piattaforma RCS for Business non può revocarlo dal dispositivo dell'utente.
Ecco cosa aspettarsi in merito alle notifiche:
Messaggio consegnato entro il TTL: se il dispositivo dell'utente si connette a Internet e riceve il messaggio prima della scadenza del TTL, riceverai una notifica
DELIVERED. Non verrà inviata alcuna notifica di revoca, poiché il messaggio è stato consegnato correttamente. Questo è lo scenario più comune e previsto.Messaggio non recapitato prima della scadenza del TTL: se il TTL scade prima che il messaggio raggiunga il dispositivo dell'utente (ad esempio, perché il dispositivo è offline), la piattaforma RCS for Business tenta di revocare il messaggio. Viene visualizzata una notifica
TTL_EXPIRATION_REVOKED, che indica che il messaggio è stato rimosso correttamente dalla coda di consegna. In questo caso, l'utente non riceverà il messaggio.
Raccomandazioni per la gestione dei casi limite
Il nostro sistema elabora in parallelo la consegna dei messaggi RCS for Business e la scadenza dei TTL. Per questo motivo, in casi molto rari, potreste riscontrare situazioni in cui la tempistica delle notifiche non è prevista. Ad esempio, potreste ricevere sia una notifica di consegna che una notifica di scadenza TTL, oppure nessuna delle due.
Ecco i nostri consigli per la gestione delle notifiche dei messaggi di RCS for Business:
Notifica
DELIVERED: Se ricevi una notificaDELIVEREDper un messaggio, significa che il messaggio è stato recapitato all'utente. Puoi quindi ignorare tranquillamente le successive notifiche TTL relative a quel messaggio specifico.Notifica
TTL_EXPIRATION_REVOKED: se ricevi una notifica TTL con lo statoTTL_EXPIRATION_REVOKED, significa che il sistema RCS for Business ha interrotto i tentativi di consegna di quel messaggio specifico. Dovresti considerare questo messaggio come non consegnato e procedere con la tua strategia di fallback, se necessario.Notifica TTL con qualsiasi altro stato: se ricevi una notifica TTL con qualsiasi altro stato, ciò indica un tentativo di revoca non andato a buon fine.
- Per i messaggi critici, come le password monouso (OTP), attiva il tuo metodo di fallback.
- Per i messaggi non critici, decidere se avviare o meno il meccanismo di fallback.
- Nessuna notifica: in rari casi limite, il sistema potrebbe non inviare una notifica TTL e il client potrebbe non generare una notifica di consegna. Si tratta di un caso estremamente raro.
Imposta il tipo di traffico dei messaggi
L'API RBM include un campo messageTrafficType per categorizzare i messaggi. Sebbene i casi d'uso degli agenti definiscano ancora il comportamento degli agenti e le regole aziendali applicabili, messageTrafficType consente una categorizzazione più dettagliata del contenuto dei messaggi. In definitiva, ciò permette a un singolo agente di gestire più casi d'uso. Al momento non vi è alcun impatto sui casi d'uso degli agenti o sulle regole aziendali esistenti.
Questo campo è facoltativo, ma si consiglia di compilarlo ora per evitare di ricevere un errore quando diventerà obbligatorio.
Per impostare il tipo di traffico dei messaggi, assegnare il messageTrafficType appropriato a ciascun messaggio in base al suo contenuto. RCS for Business supporta i seguenti tipi di traffico.
| tipo di traffico | Condividi il contenuto | Caso d'uso dell'agente |
|---|---|---|
AUTHENTICATION | Per i messaggi di autenticazione. | OTP |
TRANSACTION | Per i messaggi relativi ai servizi o ai prodotti già posseduti da un utente. Ad esempio: conferme, ricevute di pagamento o dettagli di prenotazione. | Transazionale o multiuso |
PROMOTION | Per messaggi promozionali come offerte, sconti, annunci o altri contenuti promozionali. | Promozionale o multiuso |
SERVICEREQUEST | Per i messaggi relativi ai servizi che l'utente ha esplicitamente richiesto. | OTP, Transazionale, Promozionale o Multiuso |
ACKNOWLEDGEMENT | Per i messaggi utilizzati per confermare un'azione dell'utente, in particolare una richiesta di disiscrizione. Ciò conferma che la richiesta dell'utente è stata ricevuta ed è in fase di elaborazione. | OTP, Transazionale, Promozionale o Multiuso |
Se non viene specificato alcun tipo di traffico, il sistema assegna il tipo predefinito per il caso d'uso dell'agente .
| Caso d'uso dell'agente | Tipo di traffico predefinito |
|---|---|
| OTP | AUTHENTICATION |
| Transazionale | TRANSACTION |
| Promozionale | PROMOTION |
| Multiuso | MESSAGE_TRAFFIC_TYPE_UNSPECIFIED |
Gli agenti multiuso non hanno un tipo di traffico predefinito. È necessario impostare esplicitamente il tipo di traffico per ogni messaggio in base al suo contenuto. Se non si sostituisce il valore MESSAGE_TRAFFIC_TYPE_UNSPECIFIED , si verifica un errore.
Limiti di dimensione dei messaggi
La dimensione massima dell'intero messaggio AgentMessage, convertito in stringa, è di 250 KB. La parte testuale del messaggio ha un limite di 3072 caratteri.
Per evitare un consumo di dati imprevisto per gli utenti, la dimensione massima di un file che può essere inviato tramite RCS for Business è di 100 MiB e la dimensione totale combinata di tutti gli allegati multimediali e PDF all'interno di un singolo messaggio RCS for Business non deve superare i 100 MiB (1 MiB = 1.048.576 byte). Per ulteriori informazioni, consultare la sezione relativa ai file multimediali e PDF .
Testo
I messaggi più semplici sono costituiti da testo. I messaggi di testo sono ideali per comunicare informazioni senza bisogno di elementi visivi, interazioni complesse o risposte.
Esempio
Il codice seguente invia un messaggio di testo semplice. Per le opzioni di formattazione e valore, vedere phones.agentMessages.create .
arricciare
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!" }, "messageTrafficType": "PROMOTION" }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); let params = { messageText: 'Hello, world!', msisdn: '+12223334444', }; // Send a simple message to the device rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
Giava
import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Send simple text message to user rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444" ); } catch(Exception e) { e.printStackTrace(); }
Pitone
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create a simple RBM text message message_text = messages.TextMessage('Hello, world!') # Send text message to the device messages.MessageCluster().append_message(message_text).send_to_msisdn('+12223334444')
C#
using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", );
Contenuto base del messaggio - conversione di SMS
Gli operatori telefonici hanno introdotto modelli di fatturazione per supportare la migrazione dei messaggi SMS al sistema RCS for Business. Un messaggio RCS for Business contenente fino a 160 caratteri UTF-8 è definito "Messaggio base".
Quando si crea una richiesta per inviare un messaggio di base, ricordate che i caratteri vengono conteggiati come 1 byte (UTF-8). Se inviate un messaggio contenente caratteri speciali come emoji o un set di caratteri multibyte, ogni carattere viene conteggiato come 2-4 caratteri UTF-8 o più.
Inserisci del testo nella casella per verificarne la lunghezza:
Anteprime del contenuto dei messaggi di testo e dei link
I client RCS possono implementare anteprime dei link. Se un messaggio RCS for Business di solo testo include un URL di un sito Web con tag openGraph , il client può generare un'anteprima (immagine, titolo, ecc.), offrendo un'esperienza più completa. Ad esempio, vedere un messaggio di base con un'anteprima dell'URL .
Tieni presente che il client RCS potrebbe consentire all'utente di disabilitare l'anteprima dei link.
Password monouso per la verifica dell'utente
È possibile utilizzare RCS for Business per inviare password monouso (OTP) per la verifica automatica degli utenti tramite l'API SMS Retriever. Non esiste un'API dedicata per la lettura delle OTP ricevute tramite RCS for Business.
Come funziona per Android
Per le app Android che si sono registrate con l' API SMS Retriever , l'API è in ascolto di un messaggio RCS for Business formattato correttamente. Questo messaggio deve contenere sia l'OTP che un hash univoco che identifica la tua app.
Quando un messaggio RCS for Business viene ricevuto nel formato corretto, l'API SMS Retriever lo elabora esattamente come farebbe con un codice OTP via SMS. Dopo che l'hash è stato associato alla tua app, l'OTP viene estratto e inoltrato alla tua app per la verifica automatica dell'utente.
- Esempio di messaggio di testo RCS for Business per la verifica dell'utente:
Your code is <OTP><app hash>. - Esempio:
Your code is 123456 M8tue43FGT.
Per ulteriori informazioni su SMS Retriever e le API correlate, consultare la documentazione di SMS Retriever . Per dettagli sulla verifica automatica degli utenti nelle app registrate con l'API SMS Retriever, consultare questo diagramma di flusso .
Come funziona per iOS
Per iOS, la gestione OTP integrata del sistema rileva e suggerisce automaticamente gli OTP di RCS for Business per il riempimento automatico, proprio come per gli OTP via SMS. Non è necessaria alcuna integrazione API specifica affinché l'app iOS legga l'OTP.
File multimediali e PDF
Quando invii un messaggio con un'immagine, un video, un file audio o un file PDF, il tuo agente deve fornire un URL accessibile pubblicamente per il contenuto o caricare direttamente il file.
La dimensione massima di un file che può essere inviato è di 100 MiB e la dimensione totale combinata di tutti gli allegati multimediali e PDF all'interno di un singolo messaggio non deve superare i 100 MiB.
Compressione e transcodifica dei media
La piattaforma RCS for Business transcodifica e comprime automaticamente i file multimediali (come immagini e video) prima di inviarli, per garantire un caricamento rapido e un funzionamento ottimale su diverse reti e dispositivi.
La compressione si basa sulla qualità del supporto di input piuttosto che sui limiti di dimensione del file. Ciò significa che un file può essere compresso anche se le sue dimensioni sono ben al di sotto del limite massimo di 100 MiB. Gli standard di transcodifica cambiano costantemente, quindi non esiste un limite fisso di dimensione del file che determini quando la transcodifica viene bypassata. Sperimenta con diversi formati multimediali, dimensioni e tassi di compressione per trovare il giusto equilibrio per i tuoi contenuti.
Specifiche dell'anteprima
Per i file multimediali, è possibile specificare anche un'immagine in miniatura che consente agli utenti di visualizzare un'anteprima del contenuto prima di cliccarci sopra. Per i file audio, viene utilizzato il widget audio predefinito come segnaposto.
- La dimensione massima consentita per un'anteprima è di 100 kB. Per un'esperienza utente ottimale, consigliamo una dimensione di 50 kB o inferiore.
- Le proporzioni dell'anteprima devono corrispondere a quelle del file originale.
Gestione della cache e degli URL
La piattaforma RCS for Business memorizza i file nella cache per 60 giorni e l'API restituisce un ID file che il tuo agente può includere nei messaggi agli utenti. Dopo 60 giorni, RCS for Business rimuove i file dalla cache.
Quando si specificano i file tramite URL, la procedura consigliata è impostare contentMessage.forceRefresh su false . Impostando contentMessage.forceRefresh su true , RCS for Business è costretto a recuperare i nuovi contenuti dall'URL specificato, anche se il contenuto dell'URL è già memorizzato nella cache, il che aumenta i tempi di consegna dei messaggi per gli utenti.
Esempio di URL del file
Il codice seguente invia un'immagine. Per le opzioni di formattazione e valore, vedere AgentContentMessage .
arricciare
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "contentInfo": { "fileUrl": "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif", "forceRefresh": false } } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); let params = { fileUrl: 'http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif', msisdn: '+12223334444', }; // Send an image/video to a device rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
Giava
import com.google.api.services.rcsbusinessmessaging.v1.model.AgentContentMessage; import com.google.api.services.rcsbusinessmessaging.v1.model.AgentMessage; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); String fileUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif"; // create media only message AgentContentMessage agentContentMessage = new AgentContentMessage(); agentContentMessage.setContentInfo(new ContentInfo().setFileUrl(fileUrl)); // attach content to message AgentMessage agentMessage = new AgentMessage(); agentMessage.setContentMessage(agentContentMessage); rbmApiHelper.sendAgentMessage(agentMessage, "+12223334444"); } catch(Exception e) { e.printStackTrace(); }
Pitone
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create media file attachment file_message = messages.FileMessage('http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif') messages.MessageCluster().append_message(file_message).send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); string fileUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif"; // Create content info with the file url ContentInfo contentInfo = new ContentInfo { FileUrl = fileUrl }; // Attach content info to a message AgentContentMessage agentContentMessage = new AgentContentMessage { ContentInfo = contentInfo, }; // Attach content to message AgentMessage agentMessage = new AgentMessage { ContentMessage = agentContentMessage }; rbmApiHelper.SendAgentMessage(agentMessage, "+12223334444");
In alternativa, è possibile caricare i file multimediali prima di inviarli tramite il metodo files.create .
Esempio di caricamento file
Il codice seguente carica un file video e un file di miniatura, quindi invia entrambi i file in un messaggio. Per le opzioni di formattazione e i valori, vedere files.create e AgentContentMessage .
arricciare
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/upload/v1/files?agentId=AGENT_ID" \ -H "Content-Type: video/mp4" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ --upload-file "FULL_PATH_TO_VIDEO_MEDIA_FILE"# Capture server-specified video file name from response body JSONcurl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/upload/v1/files?agentId=AGENT_ID" \ -H "Content-Type: image/jpeg" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ --upload-file "FULL_PATH_TO_THUMBNAIL_MEDIA_FILE"# Capture server-specified image file name from response body JSONcurl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "uploadedRbmFile": { "fileName": "SERVER-SPECIFIED_VIDEO_FILE_NAME", "thumbnailName": "SERVER-SPECIFIED_THUMBNAIL_FILE_NAME" } } }'
Tipi di media supportati
RCS for Business supporta i seguenti tipi di media. Per le miniature, sono supportati solo i formati image/jpeg, image/jpg, image/gif e image/png.
| Tipo di media | Tipo di documento | Estensione | Funziona con carte di credito avanzate |
|---|---|---|---|
| applicazione/ogg | OGGaudio | .ogx | NO |
| applicazione/pdf | Sì (solo per Google Messaggi in India) | ||
| audio/aac | Audio AAC | .aac | NO |
| audio/mp3 | audio MP3 | .mp3 | NO |
| audio/mpeg | audio MPEG | .mpeg | NO |
| audio/mpg | Audio MPG | .mp3 | NO |
| audio/mp4 | audio MP4 | .mp4 | NO |
| audio/mp4-latm | Audio MP4-latm | .mp4 | NO |
| audio/3gpp | Audio 3GPP | .3gp | NO |
| immagine/jpeg | JPEG | .jpeg, .jpg | SÌ |
| immagine/gif | GIF | .gif | SÌ |
| immagine/png | PNG | .png | SÌ |
| video/h263 | Video H263 | h263 | SÌ |
| video/m4v | Video M4V | .m4v | SÌ |
| video/mp4 | video MP4 | .mp4 | SÌ |
| video/mpeg4 | Video MPEG-4 | .mp4, m4p | SÌ |
| video/mpeg | Video MPEG | .mpeg | SÌ |
| video/webm | Video WEBM | .webm | SÌ |
Suggerimenti
Il tuo agente invia suggerimenti (risposte suggerite e azioni suggerite) in elenchi di suggerimenti o in schede interattive .
Risposte suggerite
Le risposte suggerite guidano gli utenti attraverso le conversazioni fornendo risposte a cui l'agente sa come reagire.
Quando un utente tocca una risposta suggerita, il tuo agente riceve un evento che contiene il testo della risposta e i dati di postback . Il payload ha una lunghezza massima di 2048 caratteri.
Esempio
Il codice seguente invia del testo con due risposte suggerite. Per le opzioni di formattazione e valore, vedere SuggestedReply .
arricciare
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "reply": { "text": "Suggestion #1", "postbackData": "suggestion_1" } }, { "reply": { "text": "Suggestion #2", "postbackData": "suggestion_2" } } ] } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); let suggestions = [ { reply: { 'text': 'Suggestion #1', 'postbackData': 'suggestion_1', }, }, { reply: { 'text': 'Suggestion #2', 'postbackData': 'suggestion_2', }, }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with suggestion chips to the device rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
Giava
import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; import com.google.rbm.SuggestionHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); suggestions.add( new SuggestionHelper("Suggestion #1", "suggestion_1").getSuggestedReply()); suggestions.add( new SuggestionHelper("Suggestion #2", "suggestion_2").getSuggestedReply()); // Send simple text message to user rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
Pitone
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggested replies for the message to send to the user cluster.append_suggestion_chip(messages.SuggestedReply('Suggestion #1', 'reply:suggestion_1')) cluster.append_suggestion_chip(messages.SuggestedReply('Suggestion #2', 'reply:suggestion_2')) # Send a simple message with suggestion chips to the device cluster.send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); List<Suggestion> suggestions = new List<Suggestion> { // Create suggestion chips new SuggestionHelper("Suggestion #1", "suggestion_1").SuggestedReply(), new SuggestionHelper("Suggestion #2", "suggestion_2").SuggestedReply() }; // Send simple text message with suggestions to user rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
Azioni suggerite
Le azioni suggerite guidano gli utenti attraverso le conversazioni sfruttando le funzionalità integrate dei loro dispositivi. Il tuo agente può suggerire agli utenti di comporre un numero, aprire una posizione su una mappa, condividere una posizione, aprire un URL o creare un evento sul calendario.
Per ogni azione suggerita, è possibile fornire facoltativamente un URL di fallback (massimo 2048 caratteri). Questo URL si aprirà in una nuova finestra del browser se il dispositivo dell'utente non supporta l'azione suggerita.
Quando un utente tocca un'azione suggerita, il tuo agente riceve un evento che contiene i dati di postback dell'azione .
Per le opzioni di formattazione e di valore, vedere SuggestedAction .
Visualizzazione dei suggerimenti
Esistono due modi per visualizzare i suggerimenti:
- Persistenti : azioni o risposte suggerite che vengono visualizzate all'interno della bolla del messaggio e rimangono fisse per tutta la durata della conversazione.
- Transitori : Suggerimenti visualizzati al di fuori della bolla del messaggio che scompaiono al proseguire della conversazione.
Formati di messaggio supportati
- Suggerimenti ricorrenti: Utilizzare messaggi di testo singoli e schede interattive.
- Suggerimenti temporanei: lavora con messaggi di testo autonomi, messaggi multimediali e schede interattive.
Unire i suggerimenti
È possibile combinare suggerimenti persistenti e temporanei nello stesso messaggio o nella stessa scheda interattiva.
- Messaggi di testo: i suggerimenti sono temporanei per impostazione predefinita. Per far sì che rimangano all'interno della bolla, è necessario configurarli come permanenti.
- Schede interattive: queste supportano fino a quattro suggerimenti permanenti per impostazione predefinita. È possibile aggiungere suggerimenti temporanei come "elenco di suggerimenti" sotto la scheda.
limiti dei suggerimenti
Un singolo messaggio di testo supporta un massimo di 11 suggerimenti in totale. Tutti i suggerimenti permanenti che includi vengono conteggiati nel limite totale. Ad esempio, se includi 4 suggerimenti permanenti, puoi aggiungere fino a 7 suggerimenti temporanei.
| Tipo di suggerimento | Limite | Dove appaiono |
|---|---|---|
| Persistente | Fino a 4 | All'interno della bolla del messaggio |
| Transitorio | Fino a 11 | Fuori dalla bolla (come patatine) |
Limite di caratteri
Ogni suggerimento ha un massimo di 25 caratteri.
Trasparenza degli URL nelle azioni suggerite
Per infondere fiducia negli utenti, l'URL sottostante viene visualizzato come seconda riga di testo all'interno del pulsante di suggerimento per l'azione "Apri un URL". Questo comportamento coerente si applica a messaggi di testo autonomi, schede interattive e caroselli.
Clienti supportati per suggerimenti persistenti
- Applicazioni supportate: Google Messaggi (versione
20260225.00o successiva). - Non sono supportate le seguenti versioni di Google Messaggi precedenti alla
20260225.00: iOS e Samsung Messaggi.
Componi un numero
L'azione "Componi" guida l'utente a comporre un numero di telefono specificato dall'agente. I numeri di telefono possono contenere solo cifre ( 0-9 ), il segno più ( + ), l'asterisco ( * ) e il simbolo del cancelletto ( # ). Il formato internazionale E.164 (ad esempio, +14155555555 ) è supportato ma non obbligatorio. Pertanto, sia +14155555555 che 1011 sono valori validi.
Esempio
Il codice seguente invia un'azione di chiamata. Per le opzioni di formattazione e valore, vedere DialAction .
arricciare
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "Call", "postbackData": "postback_data_1234", "fallbackUrl": "https://www.google.com/contact/", "dialAction": { "phoneNumber": "+15556667777" } } } ] } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Define a dial suggested action let suggestions = [ { action: { text: 'Call', postbackData: 'postback_data_1234', dialAction: { phoneNumber: '+15556667777' } } }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with a dial suggested action rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
Giava
import com.google.api.services.rcsbusinessmessaging.v1.model.DialAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // creating a dial suggested action DialAction dialAction = new DialAction(); dialAction.setPhoneNumber("+15556667777"); // creating a suggested action based on a dial action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setText("Call"); suggestedAction.setPostbackData("postback_data_1234"); suggestedAction.setDialAction(dialAction); // attaching action to a suggestion Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); suggestions.add(suggestion); // Send simple text message with the suggestion action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
Pitone
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create a dial suggested action suggestions = [ messages.DialAction('Call', 'reply:postback_data_1234', '+15556667777') ] # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggestions for the message to send to the user for suggestion in suggestions: cluster.append_suggestion_chip(suggestion) # Send a simple message with suggested action to the device cluster.send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Create a dial an agent suggested action DialAction dialAction = new DialAction { PhoneNumber = "+15556667777" }; // Creating a suggested action based on a dial action SuggestedAction suggestedAction = new SuggestedAction { Text = "Call", PostbackData = "postback_data_1234", DialAction = dialAction }; // Attach action to a suggestion Suggestion suggestion = new Suggestion { Action = suggestedAction }; List<Suggestion> suggestions = new List<Suggestion> { suggestion }; rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
Visualizza una posizione
L'azione "Visualizza posizione" mostra una posizione nell'app di mappe predefinita dell'utente. È possibile specificare la posizione tramite latitudine e longitudine oppure tramite una query basata sulla posizione corrente dell'utente. È inoltre possibile impostare un'etichetta personalizzata per il segnaposto visualizzato nell'app di mappe.
Esempio
Il codice seguente invia un'azione di posizione della vista. Per le opzioni di formattazione e valore, vedere ViewLocationAction .
arricciare
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "View map", "postbackData": "postback_data_1234", "fallbackUrl": "https://www.google.com/maps/@37.4220188,-122.0844786,15z", "viewLocationAction": { "latLong": { "latitude": "37.4220188", "longitude": "-122.0844786" }, "label": "Googleplex" } } } ] } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Define a view location suggested action let suggestions = [ { action: { text: 'View map', postbackData: 'postback_data_1234', viewLocationAction: { latLong: { latitude: 37.4220188, longitude: -122.0844786 }, label: 'Googleplex' } } }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with a view location suggested action rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
Giava
import com.google.api.services.rcsbusinessmessaging.v1.model.ViewLocationAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // creating a view location suggested action ViewLocationAction viewLocationAction = new ViewLocationAction(); viewLocationAction.setQuery("Googleplex, Mountain View, CA"); // creating a suggested action based on a view location action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setText("View map"); suggestedAction.setPostbackData("postback_data_1234"); suggestedAction.setViewLocationAction(viewLocationAction); // attaching action to a suggestion Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); suggestions.add(suggestion); // Send simple text message with the suggestion action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
Pitone
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create a view location suggested action suggestions = [ messages.ViewLocationAction('View map', 'reply:postback_data_1234', query='Googleplex, Mountain View, CA') ] # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggestions for the message to send to the user for suggestion in suggestions: cluster.append_suggestion_chip(suggestion) # Send a simple message with suggested action to the device cluster.send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // create an view location action ViewLocationAction viewLocationAction = new ViewLocationAction { Query = "Googleplex Mountain View, CA" }; // Attach the view location action to a suggested action SuggestedAction suggestedAction = new SuggestedAction { ViewLocationAction = viewLocationAction, Text = "View map", PostbackData = "postback_data_1234" }; // Attach the action to a suggestion object Suggestion suggestion = new Suggestion { Action = suggestedAction }; List<Suggestion> suggestions = new List<Suggestion> { suggestion }; rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
Condividi una posizione
La funzione Condividi posizione consente all'utente di condividere la propria posizione con l'agente. L'utente può condividere la propria posizione attuale oppure una posizione selezionata manualmente dall'app Mappe.
Esempio
Il codice seguente invia un'azione di condivisione della posizione. Per le opzioni di formattazione e valore, vedere ShareLocationAction .
arricciare
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "Share your location", "postbackData": "postback_data_1234", "shareLocationAction": {} } } ] } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Define a share location suggested action let suggestions = [ { action: { text: 'Share your location', postbackData: 'postback_data_1234', shareLocationAction: { } } }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with a share location suggested action rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
Giava
import com.google.api.services.rcsbusinessmessaging.v1.model.ShareLocationAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // creating a share location suggested action ShareLocationAction shareLocationAction = new ShareLocationAction(); // creating a suggested action based on a share location action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setText("Share location"); suggestedAction.setPostbackData("postback_data_1234"); suggestedAction.setShareLocationAction(shareLocationAction); // attaching action to a suggestion Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); suggestions.add(suggestion); // Send simple text message with the suggestion action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
Pitone
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create a share location suggested action suggestions = [ messages.ShareLocationAction('Share location', 'reply:postback_data_1234') ] # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggestions for the message to send to the user for suggestion in suggestions: cluster.append_suggestion_chip(suggestion) # Send a simple message with suggested action to the device cluster.send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Create a share location action ShareLocationAction shareLocationAction = new ShareLocationAction(); // Attach the share location action to a suggested action SuggestedAction suggestedAction = new SuggestedAction { ShareLocationAction = shareLocationAction, Text = "Share location", PostbackData = "postback_data_1234" }; // Attach the action to a suggestion object Suggestion suggestion = new Suggestion { Action = suggestedAction }; List<Suggestion> suggestions = new List<Suggestion> { suggestion }; rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
Apri un'immagine
L'azione Apri URL consente di indirizzare gli utenti a una pagina web specificata dall'agente. Per impostazione predefinita, la pagina web si apre nel browser dell'utente. È anche possibile impostare l'apertura della pagina web in una WebView. Per ulteriori dettagli, consultare la sezione Apri un URL con WebView .
Solo in Google Messaggi
Visualizzazione dell'URL sottostante : per una maggiore trasparenza nella messaggistica A2P, Google Messaggi visualizza l'indirizzo URL sottostante nei suggerimenti di azione "Apri un URL". Questa modifica riguarda i suggerimenti di azione nelle schede avanzate standard e nei caroselli di schede avanzate .

Visualizzazione dell'icona dell'app per i link web : se un utente ha un'app predefinita configurata per la pagina web, tale app si apre al posto del browser o della visualizzazione web e il pulsante di suggerimento mostra l'icona dell'app. Affinché l'icona dell'app venga visualizzata in Google Messaggi, è necessario fornire l'URL completo e diretto. Se si utilizza un URL abbreviato, viene visualizzata l'icona predefinita "Apri URL".

Esempio
Il codice seguente invia un'azione di apertura URL. Per le opzioni di formattazione e valore, vedere OpenUrlAction .
arricciare
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "Open Google", "postbackData": "postback_data_1234", "openUrlAction": { "url": "https://www.google.com" } } } ] } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Define an open URL suggested action let suggestions = [ { action: { text: 'Open Google', postbackData: 'postback_data_1234', openUrlAction: { url: 'https://www.google.com' } } }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with an open URL suggested action rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
Giava
import com.google.api.services.rcsbusinessmessaging.v1.model.OpenUrlAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // creating an open url suggested action OpenUrlAction openUrlAction = new OpenUrlAction(); openUrlAction.setUrl("https://www.google.com"); // creating a suggested action based on an open url action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setText("Open Google"); suggestedAction.setPostbackData("postback_data_1234"); suggestedAction.setOpenUrlAction(openUrlAction); // attaching action to a suggestion Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); suggestions.add(suggestion); // Send simple text message with the suggestion action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
Pitone
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create an open url suggested action suggestions = [ messages.OpenUrlAction('Open Google', 'reply:postback_data_1234', 'https://www.google.com') ] # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggestions for the message to send to the user for suggestion in suggestions: cluster.append_suggestion_chip(suggestion) # Send a simple message with suggested action to the device cluster.send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Create an open url action OpenUrlAction openUrlAction = new OpenUrlAction { Url = "https://www.google.com" }; // Attach the open url action to a suggested action SuggestedAction suggestedAction = new SuggestedAction { OpenUrlAction = openUrlAction, Text = "Open Google", PostbackData = "postback_data_1234" }; // Attach the action to a suggestion object Suggestion suggestion = new Suggestion { Action = suggestedAction }; List<Suggestion> suggestions = new List<Suggestion> { suggestion }; rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
Apri un URL con WebView
L'azione Apri URL con WebView carica la pagina web specificata all'interno dell'app di messaggistica utilizzando il motore di rendering del browser predefinito. Ciò consente all'utente di interagire con la pagina web senza uscire dalla conversazione di RCS for Business. Se il dispositivo dell'utente non supporta le WebView, la pagina web si apre nel browser dell'utente. Per abilitare le WebView, vedere OpenURLApplication .
Le Webview hanno tre modalità di visualizzazione. Per le opzioni di formattazione e i valori, vedere WebviewViewMode .
- Schermo intero: la pagina web occupa l'intero schermo.
- Metà: La pagina web occupa metà dello schermo
- Verticale: la pagina web occupa tre quarti dello schermo
Esempio
Il codice seguente invia un'azione Apri URL con visualizzazione web. Per le opzioni di formattazione e valore, vedere OpenURLAction .
arricciare
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "Open Google", "postbackData": "postback_data_1234", "openUrlAction": { "url": "https://www.google.com", "application": "WEBVIEW", "webviewViewMode": "FULL", "description": "Accessibility description" } } } ] } }'
Giava
import com.google.api.services.rcsbusinessmessaging.v1.model.OpenUrlAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { String URL = "https://www.google.com"; // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // Create suggestion to view webpage in full mode Suggestion viewInFullMode = getUrlActionInWebview(URL, "FULL") suggestions.add(viewInFullMode); // create suggestion to view webpage in half mode Suggestion viewInHalfMode = getUrlActionInWebview(URL, "HALF") suggestions.add(viewInHalfMode); // create suggestion to view webpage in tall mode Suggestion viewInTallMode = getUrlActionInWebview(URL, "TALL") suggestions.add(viewInTallMode); // Send simple text message with the suggested action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); } /** * Creates a suggested action to open URL in webview. * * @return a suggestion object for an open URL in webview action . */ private Suggestion getUrlActionInWebview(String url, String viewMode) { // create an open url action OpenUrlAction openUrlAction = new OpenUrlAction(); openUrlAction.setUrl(url); openUrlAction.setApplication("WEBVIEW"); openUrlAction.setWebviewViewMode(viewMode); openUrlAction.setDescription("Accessibility description"); // attach the open url action to a suggested action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setOpenUrlAction(openUrlAction); suggestedAction.setText('display_text'); suggestedAction.setPostbackData('postback_data_123'); // attach the action to a suggestion object Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); return suggestion; }
Crea un evento del calendario
L'azione "Crea evento del calendario" apre l'app del calendario dell'utente e inizia a creare un nuovo evento con le informazioni specificate.
È necessario inserire un titolo per l'evento del calendario, con un massimo di 100 caratteri. La descrizione dell'evento è facoltativa e ha un massimo di 500 caratteri.
Esempio
Il codice seguente invia un'azione di creazione evento del calendario. Per le opzioni di formattazione e valore, vedere CreateCalendarEventAction .
arricciare
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "text": "Hello, world!", "suggestions": [ { "action": { "text": "Save to calendar", "postbackData": "postback_data_1234", "fallbackUrl": "https://www.google.com/calendar", "createCalendarEventAction": { "startTime": "2020-06-30T19:00:00Z", "endTime": "2020-06-30T20:00:00Z", "title": "My calendar event", "description": "Description of the calendar event" } } } ] } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Define a create calendar event suggested action let suggestions = [ { action: { text: 'Save to calendar', postbackData: 'postback_data_1234', createCalendarEventAction: { startTime: '2020-06-30T19:00:00Z', endTime: '2020-06-30T20:00:00Z', title: 'My calendar event', description: 'Description of the calendar event', }, } }, ]; let params = { messageText: 'Hello, world!', msisdn: '+12223334444', suggestions: suggestions, }; // Send a simple message with a create calendar event suggested action rbmApiHelper.sendMessage(params, function(response) { console.log(response); });
Giava
import com.google.api.services.rcsbusinessmessaging.v1.model.CreateCalendarEventAction; import com.google.api.services.rcsbusinessmessaging.v1.model.SuggestedAction; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.RbmApiHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); // creating a create calendar event suggested action CreateCalendarEventAction createCalendarEventAction = new CreateCalendarEventAction(); calendarEventAction.setTitle("My calendar event"); calendarEventAction.setDescription("Description of the calendar event"); calendarEventAction.setStartTime("2020-06-30T19:00:00Z"); calendarEventAction.setEndTime("2020-06-30T20:00:00Z"); // creating a suggested action based on a create calendar event action SuggestedAction suggestedAction = new SuggestedAction(); suggestedAction.setText("Save to calendar"); suggestedAction.setPostbackData("postback_data_1234"); suggestedAction.setCreateCalendarEventAction(createCalendarEventAction); // attaching action to a suggestion Suggestion suggestion = new Suggestion(); suggestion.setAction(suggestedAction); suggestions.add(suggestion); // Send simple text message with the suggestion action rbmApiHelper.sendTextMessage( "Hello, world!", "+12223334444", suggestions ); } catch(Exception e) { e.printStackTrace(); }
Pitone
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Create a calendar event suggested action suggestions = [ messages.CreateCalendarEventAction('Save to Calendar', 'reply:postback_data_1234', '2020-06-30T19:00:00Z', '2020-06-30T20:00:00Z', 'My calendar event', 'Description of the calendar event') ] # Create text message to send to user text_msg = messages.TextMessage('Hello, world!') cluster = messages.MessageCluster().append_message(text_msg) # Append suggestions for the message to send to the user for suggestion in suggestions: cluster.append_suggestion_chip(suggestion) # Send a simple message with suggested action to the device cluster.send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Create a calendar event action CreateCalendarEventAction calendarEventAction = new CreateCalendarEventAction { Title = "My calendar event", Description = "Description of the calendar event", StartTime = "2020-06-30T19:00:00Z", EndTime = "2020-06-30T20:00:00Z" }; // Attach the calendar event action to a suggested action SuggestedAction suggestedAction = new SuggestedAction { CreateCalendarEventAction = calendarEventAction, Text = "Save to calendar", PostbackData = "postback_data_1234" }; // Attach the action to a suggestion object Suggestion suggestion = new Suggestion { Action = suggestedAction }; List<Suggestion> suggestions = new List<Suggestion> { suggestion }; rbmApiHelper.SendTextMessage( "Hello, world!", "+12223334444", suggestions );
Elenco di suggerimenti per i chip
Il tuo agente invia elenchi di suggerimenti con i messaggi per guidare le azioni successive degli utenti. L'elenco di suggerimenti viene visualizzato solo quando il messaggio associato si trova in fondo alla conversazione. Qualsiasi messaggio successivo nella conversazione (sia da parte dell'utente che del tuo agente) sovrascrive l'elenco di suggerimenti.
I chip nell'elenco rappresentano risposte e azioni suggerite .
Gli elenchi di chip possono contenere un massimo di 11 chip di suggerimento e ogni etichetta di chip può avere un massimo di 25 caratteri.
Per le opzioni di formattazione e di valore, vedere AgentContentMessage .
Carte ricche
Le Rich Card combinano contenuti multimediali, testo e suggerimenti interattivi in un unico messaggio. Sono ideali per presentare informazioni correlate (ad esempio, un prodotto con immagine, nome e prezzo) e per guidare gli utenti con indicazioni chiare sul passo successivo, come un suggerimento "Visualizza dettagli".
Una scheda ricca può contenere quanto segue:
- Contenuti multimediali (immagini, GIF o video)
- Testo del titolo
- Testo descrittivo
- Risposte suggerite e azioni suggerite (massimo 4)
Ciascuno di questi campi è facoltativo, ma almeno uno dei campi da 1 a 3 deve essere incluso nella scheda avanzata.
È possibile inviare più cartoline contemporaneamente in un carosello a scorrimento orizzontale.
Si noti che il carico utile totale per una scheda ricca è di 250 KB.
Per i dettagli tecnici completi, consultare la documentazione delle Rich Cards .
Altezza della carta
Le schede interattive si espandono verticalmente per adattarsi al loro contenuto. Hanno un'altezza minima di 112 DP e un'altezza massima di 344 DP. Se il contenuto della scheda non è sufficientemente grande da riempire l'altezza minima, la scheda si espande e riempie l'altezza in eccesso con spazi bianchi.
I contenuti multimediali nelle rich card devono adattarsi a una delle tre altezze seguenti:
- Breve: 112 DP
- Medio: 168 DP
- Altezza: 264 DP
Se il contenuto multimediale non rientra nelle dimensioni della scheda in base all'altezza selezionata, viene visualizzata l'anteprima ingrandendo e ritagliando il contenuto.
Esempio
Il codice seguente invia una scheda interattiva con un'immagine e risposte suggerite. Per le opzioni di formattazione e i valori, vedere RichCard .
arricciare
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "richCard": { "standaloneCard": { "thumbnailImageAlignment": "RIGHT", "cardOrientation": "VERTICAL", "cardContent": { "title": "Hello, world!", "description": "RBM is awesome!", "media": { "height": "TALL", "contentInfo":{ "fileUrl": "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif", "forceRefresh": false } }, "suggestions": [ { "reply": { "text": "Suggestion #1", "postbackData": "suggestion_1" } }, { "reply": { "text": "Suggestion #2", "postbackData": "suggestion_2" } } ] } } } } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Suggested replies to be used in the card let suggestions = [ { reply: { 'text': 'Suggestion #1', 'postbackData': 'suggestion_1', }, }, { reply: { 'text': 'Suggestion #2', 'postbackData': 'suggestion_2', }, }, ]; // Image to be displayed by the card let imageUrl = 'http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif'; // Definition of the card parameters let params = { messageText: 'Hello, world!', messageDescription: 'RBM is awesome!', msisdn: '+12223334444', suggestions: suggestions, imageUrl: imageUrl, height: 'TALL', }; // Send rich card to device rbmApiHelper.sendRichCard(params, function(response) { console.log(response); });
Giava
import com.google.api.services.rcsbusinessmessaging.v1.model.StandaloneCard; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.cards.CardOrientation; import com.google.rbm.cards.MediaHeight; import com.google.rbm.RbmApiHelper; import com.google.rbm.SuggestionHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Create suggestions for chip list List<Suggestion> suggestions = new ArrayList<Suggestion>(); suggestions.add( new SuggestionHelper("Suggestion #1", "suggestion_1").getSuggestedReply()); suggestions.add( new SuggestionHelper("Suggestion #2", "suggestion_2").getSuggestedReply()); String imageUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif"; // Create a standalone rich card to send to the user StandaloneCard standaloneCard = rbmApiHelper.createStandaloneCard( "Hello, world!", "RBM is awesome!", imageUrl, MediaHeight.MEDIUM, CardOrientation.VERTICAL, suggestions ); rbmApiHelper.sendStandaloneCard(standaloneCard, "+12223334444"); } catch(Exception e) { e.printStackTrace(); }
Pitone
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Suggested replies to be used in the card suggestions = [ messages.SuggestedReply('Suggestion #1', 'reply:suggestion_1'), messages.SuggestedReply('Suggestion #2', 'reply:suggestion_2') ] # Image to be displayed by the card image_url = 'http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif'; # Define rich card structure rich_card = messages.StandaloneCard('VERTICAL', 'Hello, world!', 'RBM is awesome!', suggestions, image_url, None, None, 'MEDIUM') # Append rich card and send to the user cluster = messages.MessageCluster().append_message(rich_card) cluster.send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; using RCSBusinessMessaging.Cards; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); List<Suggestion> suggestions = new List<Suggestion> { // Create suggestion chips new SuggestionHelper("Suggestion #1", "suggestion_1").SuggestedReply(), new SuggestionHelper("Suggestion #2", "suggestion_2").SuggestedReply() }; string imageUrl = "http://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif"; // Create rich card with suggestions StandaloneCard standaloneCard = rbmApiHelper.CreateStandaloneCard( "Hello, world!", "RBM is awesome", imageUrl, MediaHeight.TALL, CardOrientation.VERTICAL, suggestions ); // Send rich card to user rbmApiHelper.SendStandaloneCard(standaloneCard, "+12223334444");
Caroselli di carte ricchi
I caroselli collegano tra loro diverse schede interattive , consentendo agli utenti di confrontare gli elementi e interagire con ciascuno di essi individualmente.
I caroselli possono contenere un minimo di due e un massimo di dieci Rich Card. Le Rich Card all'interno dei caroselli devono essere conformi ai requisiti generali delle Rich Card per quanto riguarda contenuto e altezza, come descritto nella documentazione relativa alle Rich Card . Per ulteriori informazioni sul layout e sulle specifiche dei caroselli, consultare la documentazione relativa ai caroselli .
Esempio
Il codice seguente invia un carosello di schede interattive. Per le opzioni di formattazione e valore, vedere RichCard .
arricciare
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentMessages?messageId=MESSAGE_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d '{ "contentMessage": { "richCard": { "carouselCard": { "cardWidth": "MEDIUM", "cardContents": [ { "title": "Card #1", "description": "The description for card #1", "suggestions": [ { "reply": { "text": "Card #1", "postbackData": "card_1" } } ], "media": { "height": "MEDIUM", "contentInfo": { "fileUrl": "https://storage.googleapis.com/welcome-bot-sample-images/200.jpg", "forceRefresh": false } } }, { "title": "Card #2", "description": "The description for card #2", "suggestions": [ { "reply": { "text": "Card #2", "postbackData": "card_2" } } ], "media": { "height": "MEDIUM", "contentInfo": { "fileUrl": "https://storage.googleapis.com/welcome-bot-sample-images/201.jpg", "forceRefresh": false } } } ] } } } }'
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Images for the carousel cards let card1Image = 'https://storage.googleapis.com/welcome-bot-sample-images/200.jpg'; let card2Image = 'https://storage.googleapis.com/welcome-bot-sample-images/201.jpg'; // Define the card contents for a carousel with two cards, each with one suggested reply let cardContents = [ { title: 'Card #1', description: 'The description for card #1', suggestions: [ { reply: { text: 'Card #1', postbackData: 'card_1', } } ], media: { height: 'MEDIUM', contentInfo: { fileUrl: card1Image, forceRefresh: false, }, }, }, { title: 'Card #2', description: 'The description for card #2', suggestions: [ { reply: { text: 'Card #2', postbackData: 'card_2', } } ], media: { height: 'MEDIUM', contentInfo: { fileUrl: card2Image, forceRefresh: false, }, }, }, ]; // Definition of carousel card let params = { msisdn: '+12223334444', cardContents: cardContents, }; // Send the device the carousel card defined above rbmApiHelper.sendCarouselCard(params, function(response) { console.log(response); });
Giava
import com.google.api.services.rcsbusinessmessaging.v1.model.CardContent; import com.google.api.services.rcsbusinessmessaging.v1.model.Suggestion; import com.google.rbm.cards.CardOrientation; import com.google.rbm.cards.CardWidth; import com.google.rbm.cards.MediaHeight; import com.google.rbm.RbmApiHelper; import com.google.rbm.SuggestionHelper; … try { // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); List cardContents = new ArrayList(); // Images for the carousel cards String card1Image = "https://storage.googleapis.com/welcome-bot-sample-images/200.jpg"; // Create suggestions for first carousel card List card1Suggestions = new ArrayList(); card1Suggestions.add( new SuggestionHelper("Card #1", "card_1")); cardContents.add( new StandaloneCardHelper( "Card #1", "The description for card #1", card1Image, card1Suggestions) .getCardContent(MediaHeight.SHORT) ); // Images for the carousel cards String card2Image = "https://storage.googleapis.com/welcome-bot-sample-images/201.jpg"; // Create suggestions for second carousel card List card2Suggestions = new ArrayList(); card2Suggestions.add( new SuggestionHelper("Card #2", "card_2")); cardContents.add( new StandaloneCardHelper( "Card #2", "The description for card #2", card2Image, card2Suggestions) .getCardContent(MediaHeight.SHORT) ); // Send the carousel to the user rbmApiHelper.sendCarouselCards(cardContents, CardWidth.MEDIUM, "+12223334444"); } catch(Exception e) { e.printStackTrace(); }
Pitone
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service from rcs_business_messaging import messages # Images for the carousel cards card_image_1 = 'https://storage.googleapis.com/welcome-bot-sample-images/200.jpg'; card_image_2 = 'https://storage.googleapis.com/welcome-bot-sample-images/201.jpg'; # Suggested replies to be used in the cards suggestions1 = [ messages.SuggestedReply('Card #1', 'reply:card_1') ] suggestions2 = [ messages.SuggestedReply('Card #2', 'reply:card_2') ] # Define the card contents for a carousel with two cards, # each with one suggested reply card_contents = [] card_contents.append(messages.CardContent('Card #1', 'The description for card #1', card_image_1, 'MEDIUM', suggestions1)) card_contents.append(messages.CardContent('Card #2', 'The description for card #2', card_image_2, 'MEDIUM', suggestions2)) # Send the device the carousel card defined above carousel_card = messages.CarouselCard('MEDIUM', card_contents) cluster = messages.MessageCluster().append_message(carousel_card) cluster.send_to_msisdn('+12223334444')
C#
using Google.Apis.RCSBusinessMessaging.v1.Data; using RCSBusinessMessaging; using RCSBusinessMessaging.Cards; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Image references to be used in the carousel cards string card1Image = "https://storage.googleapis.com/welcome-bot-sample-images/200.jpg"; string card2Image = "https://storage.googleapis.com/welcome-bot-sample-images/201.jpg"; // Suggestion chip lists to be used in carousel cards List<Suggestion> suggestions1 = new List<Suggestion> { new SuggestionHelper("Card #1", "card_1").SuggestedReply() }; List<Suggestion> suggestions2 = new List<Suggestion> { new SuggestionHelper("Card #2", "card_2").SuggestedReply() }; // Create the card content for the carousel List<CardContent> cardContents = new List<CardContent> { // Add items as card content new StandaloneCardHelper( "Card #1", "The description for card #1", card1Image, suggestions1).GetCardContent(), new StandaloneCardHelper( "Card #2", "The description for card #2", card2Image, suggestions2).GetCardContent() }; // Send the carousel to the user rbmApiHelper.SendCarouselCards(cardContents, CardWidth.MEDIUM, msisdn);