Inviare messaggi

Gli agenti RCS for Business comunicano con gli utenti inviando e ricevendo messaggi. Per inviare messaggi agli utenti, l'agente invia richieste di messaggi all'API RCS Business Messaging. Una singola richiesta può includere testo, schede avanzate, file multimediali e PDF, risposte suggerite e azioni suggerite.

La piattaforma RCS for Business restituisce errori in determinate situazioni per aiutarti a gestire il recapito 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 tentare di 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 lanciato o su una rete che non ha attivato il traffico RCS, la piattaforma RCS for Business restituisce un errore 404 NOT_FOUND.
  • Se invii un messaggio con funzionalità non supportate dal dispositivo di un 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 che non vengono recapitati dopo un periodo di tempo ragionevole e inviarli tramite un canale diverso. Per revocare automaticamente i messaggi a un'ora predefinita, imposta una scadenza del messaggio.

Il destinatario è offline

La piattaforma RCS for Business accetta comunque un messaggio per la consegna se il destinatario è offline. Ricevi una risposta 200 OK e la piattaforma RCS for Business conserva il messaggio e tenta di inviarlo nuovamente per 30 giorni. Non è necessario chiedere a RCS for Business di inviare nuovamente il messaggio.

RCS for Business elimina i messaggi non consegnati 30 giorni dopo l'invio.

A seconda del caso d'uso dell'agente, potresti voler revocare un messaggio non consegnato prima di questo timeout di 30 giorni. La revoca può impedire agli utenti offline di ricevere un messaggio obsoleto quando tornano online. Esistono diversi modi per revocare un messaggio:

Impostare la scadenza di un messaggio

Il messaggio dell'agente è urgente? Ad esempio, gli OTP sono validi solo per un breve periodo. Le offerte a tempo limitato scadono. Inoltre, i promemoria per gli appuntamenti non sono più pertinenti dopo la data dell'appuntamento. Per mantenere i messaggi tempestivi e pertinenti, imposta una data di scadenza. In questo modo, gli utenti offline non riceveranno contenuti obsoleti quando torneranno online. La scadenza è anche un buon segnale per richiamare la strategia di messaggistica di riserva, in modo che gli utenti ricevano le informazioni di cui hanno bisogno in tempo.

Per impostare una scadenza del messaggio, specifica uno dei seguenti campi nel messaggio dell'agente:

  • expireTime: l'ora esatta in UTC in cui il messaggio scade.
  • ttl(durata TTL): la quantità di tempo prima della scadenza del messaggio.

Per le opzioni di formattazione e valore, vedi AgentMessage.

Il valore massimo per ttl e expireTime è 15 giorni dopo l'invio del messaggio.

Sebbene non esista un valore minimo per ttl e expireTime, si consiglia di attendere almeno 10 secondi dopo l'invio del messaggio per ridurre significativamente la possibilità di ricevere la notifica sia di revoca che di consegna.

Durata (TTL) di un messaggio

Quando imposti un TTL per un messaggio RCS for Business, specifichi per quanto tempo il messaggio deve essere considerato valido e consegnabile. Se il messaggio non viene recapitato correttamente al dispositivo dell'utente entro questo periodo TTL, la piattaforma RCS for Business tenta automaticamente di revocarlo.

Quando avvii la revoca di un messaggio, richiedi alla piattaforma RCS for Business di interrompere i tentativi di consegna di quel messaggio specifico. Tuttavia, questa azione influisce solo sui tentativi di consegna futuri. Se il dispositivo di un utente ha già recuperato correttamente il messaggio, questo è in fase di elaborazione e la piattaforma RCS for Business non può revocare il messaggio dal dispositivo dell'utente.

Ecco cosa aspettarsi in merito alle notifiche:

  • Messaggio recapitato entro il TTL:se il dispositivo dell'utente si connette a internet e riceve il messaggio prima della scadenza del TTL, ricevi una notifica DELIVERED. Non verrà inviata alcuna notifica di revoca, in quanto il messaggio è stato recapitato 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, il dispositivo è offline), la piattaforma RCS for Business tenta di revocare il messaggio. Ricevi una notifica TTL_EXPIRATION_REVOKED che indica che il messaggio è stato rimosso correttamente dalla coda di distribuzione. In questo caso, l'utente non riceverà il messaggio.

Consigli per la gestione dei casi limite

Il nostro sistema elabora la consegna dei messaggi RCS for Business e le scadenze TTL in parallelo. Per questo motivo, in casi molto rari, potresti riscontrare casi limite in cui la tempistica delle notifiche è inaspettata. Ad esempio, potresti ricevere sia una notifica di consegna che una TTL oppure nessuna delle due.

Ecco i nostri consigli per la gestione delle notifiche dei messaggi RCS for Business:

  • Notifica DELIVERED:se ricevi una notifica DELIVERED per un messaggio, significa che il messaggio è stato recapitato all'utente. Puoi ignorare le notifiche TTL successive per quel messaggio specifico.

  • Notifica TTL_EXPIRATION_REVOKED:se ricevi una notifica TTL con lo stato TTL_EXPIRATION_REVOKED, significa che il sistema RCS for Business interrompe i tentativi di consegna di quel messaggio specifico. Devi considerare questo messaggio come non recapitato e procedere con la strategia di riserva, se necessario.

  • Notifica TTL con qualsiasi altro stato:se ricevi una notifica TTL con qualsiasi altro stato, significa che il tentativo di revoca non è andato a buon fine.

    • Per i messaggi critici, come le password monouso (OTP), avvia il metodo di fallback.
    • Per i messaggi non critici, decidi se avviare o meno il fallback.
  • Nessuna notifica:in rari casi limite, il sistema potrebbe non riuscire a inviare una notifica TTL e il client potrebbe non riuscire a 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 classificare i messaggi. Sebbene i casi d'uso degli agenti definiscano ancora il comportamento degli agenti e le regole aziendali da applicare, messageTrafficType consente una classificazione più dettagliata dei contenuti dei messaggi. In definitiva, ciò consente a un singolo agente di gestire più casi d'uso. Al momento, non ci sono impatti sui casi d'uso o sulle regole aziendali esistenti degli agenti.

Questo campo è facoltativo, ma ti consigliamo di impostarlo ora per non ricevere un errore quando il campo diventerà obbligatorio.

Per impostare il tipo di traffico dei messaggi, assegna il messageTrafficType appropriato per ogni messaggio in base al suo contenuto. RCS for Business supporta i seguenti tipi di traffico.

Tipo di traffico Contenuto messaggio Caso d'uso dell'agente
AUTHENTICATION Per i messaggi di autenticazione. OTP
TRANSACTION Per i messaggi relativi a servizi o prodotti esistenti di un utente. Ad esempio, conferme, ricevute di pagamento o dettagli della 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 richiesto esplicitamente. OTP, transazionale, promozionale o multiuso
ACKNOWLEDGEMENT Per i messaggi utilizzati per confermare l'azione di un utente, in particolare una richiesta di annullamento dell'iscrizione. per confermare che la richiesta dell'utente è stata ricevuta ed è in fase di elaborazione. OTP, transazionale, promozionale o multiuso

Se non è impostato 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
Multi-uso MESSAGE_TRAFFIC_TYPE_UNSPECIFIED

Gli agenti multiuso non hanno un tipo di traffico predefinito. Devi impostare il tipo di traffico in modo esplicito per ogni messaggio in base al suo contenuto. Se non sostituisci il valore MESSAGE_TRAFFIC_TYPE_UNSPECIFIED, si verifica un errore.

Limiti di dimensione dei messaggi

La dimensione massima dell'intera stringa AgentMessage è 250 kB. La parte di testo del messaggio ha un limite di 3072 caratteri.

Per evitare un consumo imprevisto di dati per gli utenti, la dimensione massima di un file che può essere inviato tramite RCS for Business è 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 saperne di più, consulta la sezione File multimediali e PDF.

Testo

I messaggi più semplici sono composti da testo. I messaggi sono più adatti per comunicare informazioni senza la necessità di immagini, interazioni complesse o risposte.

Esempio

Il seguente codice invia un messaggio di testo normale. Per le opzioni di formattazione e valore, vedi phones.agentMessages.create.

cURL

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);
});
Questo codice è un estratto di un agente campione RBM.

Java

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();
}
Questo codice è un estratto di un agente campione RBM.

Python

# 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')
Questo codice è un estratto di un agente campione RBM.

C#

using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                             projectId);

rbmApiHelper.SendTextMessage(
    "Hello, world!",
    "+12223334444",
);
Questo codice è un estratto di un agente campione RBM.

Contenuti del messaggio di base - Conversione di SMS

Gli operatori hanno introdotto modelli di fatturazione per supportare il passaggio dei messaggi SMS a RCS for Business. Un messaggio RCS for Business contenente fino a 160 caratteri UTF-8 è chiamato messaggio di base.

Quando crei una richiesta per inviare un messaggio di base, ricorda che i caratteri vengono conteggiati come 1 byte (UTF-8). Se invii 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:

I client RCS potrebbero implementare le anteprime dei link. Se un messaggio RCS for Business solo di testo include un URL per un sito web con tag Open Graph, il client può generare un'anteprima (immagine, titolo e così via), offrendo un'esperienza più ricca. Ad esempio, vedi un messaggio di base con un'anteprima dell'URL.

Tieni presente che il client RCS potrebbe consentire all'utente di disattivare le anteprime dei link.

Password monouso per la verifica dell'utente

Puoi utilizzare RCS for Business per inviare password monouso (OTP) per la verifica automatica dell'utente con l'API SMS Retriever. Non esiste un'API dedicata per leggere gli OTP che arrivano tramite RCS for Business.

Come funziona per Android

Per le app per Android registrate con l'API SMS Retriever, l'API ascolta un messaggio RCS for Business formattato correttamente. Questo messaggio deve contenere sia l'OTP sia un hash univoco che identifica la tua app.

Quando viene ricevuto un messaggio RCS for Business con il formato corretto, l'API SMS Retriever lo elabora come se fosse un OTP via SMS. Una volta che l'hash corrisponde alla tua app, l'OTP viene estratto e inoltrato alla tua app per la verifica automatica dell'utente.

  • Esempio di messaggio RCS for Business per la verifica dell'utente: Your code is <OTP><app hash>.
  • Esempio: Your code is 123456 M8tue43FGT.

Per scoprire di più su SMS Retriever e sulle API correlate, consulta la documentazione di SMS Retriever. Per informazioni dettagliate sulla verifica automatica degli utenti nelle app registrate con l'API SMS Retriever, consulta questo diagramma di flusso.

Come funziona per iOS

Per iOS, la gestione OTP integrata del sistema rileva e suggerisce automaticamente le OTP RCS for Business per la compilazione automatica, proprio come le OTP SMS. Non è necessaria alcuna integrazione API specifica perché l'app per iOS legga l'OTP.

File multimediali e PDF

Quando invii un messaggio con un file immagine, video, audio o PDF, il tuo agente deve fornire un URL accessibile pubblicamente per i contenuti o caricare direttamente il file.

La dimensione massima di un file che può essere inviato è 100 MiB e la dimensione totale combinata di tutti gli allegati multimediali e PDF all'interno di un singolo messaggio non deve superare 100 MiB.

Specifiche delle miniature

Per i file multimediali, puoi anche specificare un'immagine in miniatura che consenta agli utenti di visualizzare l'anteprima dei contenuti prima di farci clic sopra. Per i file audio, viene utilizzato il widget audio predefinito come segnaposto.

  • La dimensione massima del file di una miniatura è 100 kB. Per un'esperienza utente ottimale, ti consigliamo di non superare i 50 kB.
  • Le proporzioni della miniatura devono corrispondere a quelle del file originale.

Memorizzazione nella cache e gestione degli URL

La piattaforma RCS for Business memorizza nella cache i file per 60 giorni e l'API restituisce un ID file che l'agente può includere nei messaggi agli utenti. Dopo 60 giorni, RCS for Business rimuove i file dalla cache.

Quando specifichi i file per URL, la best practice prevede di impostare contentMessage.forceRefresh su false. Se imposti contentMessage.forceRefresh su true, RCS for Business recupera nuovi contenuti dall'URL specificato, anche se i contenuti dell'URL sono memorizzati nella cache, il che aumenta i tempi di recapito dei messaggi per gli utenti.

Esempio di URL del file

Il seguente codice invia un'immagine. Per le opzioni di formattazione e valore, vedi AgentContentMessage.

cURL

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);
});
Questo codice è un estratto di un agente campione RBM.

Java

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();
}
Questo codice è un estratto di un agente campione RBM.

Python

# 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')
Questo codice è un estratto di un agente campione RBM.

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");
Questo codice è un estratto di un agente campione RBM.

In alternativa, puoi caricare i contenuti multimediali prima di inviarli in un messaggio con files.create.

Esempio di caricamento di file

Il seguente codice carica un file video e un file miniatura, quindi invia entrambi i file in un messaggio. Per le opzioni di formattazione e valore, vedi files.create e AgentContentMessage.

cURL

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 JSON


curl -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 JSON


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": {
    "uploadedRbmFile": {
      "fileName": "SERVER-SPECIFIED_VIDEO_FILE_NAME",
      "thumbnailName": "SERVER-SPECIFIED_THUMBNAIL_FILE_NAME"
    }
  }
}'

Tipi di contenuti multimediali supportati

RCS for Business supporta i seguenti tipi di contenuti multimediali. 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 le schede interattive
application/ogg Audio OGG .ogx No
application/pdf PDF .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 MPG .mp3 No
audio/mp4 MP4 audio .mp4 No
audio/mp4-latm MP4-latm audio .mp4 No
audio/3gpp Audio 3GPP .3gp No
image/jpeg JPEG .jpeg, .jpg
image/gif GIF .gif
image/png PN .png
video/h263 Video H263 .h263
video/m4v Video M4V .m4v
video/mp4 Video MP4 .mp4
video/mpeg4 Video MPEG-4 .mp4, .m4p
video/mpeg Video MPEG .mpeg
video/webm Video WEBM .webm

Suggerimenti

L'agente invia suggerimenti (risposte suggerite e azioni suggerite) in elenchi di chip di suggerimenti (massimo 11 suggerimenti) o in schede avanzate (massimo 4 suggerimenti).

Ogni suggerimento può contenere un massimo di 25 caratteri.

Risposte suggerite

Le risposte suggerite guidano gli utenti nelle conversazioni fornendo risposte a cui il tuo 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 un massimo di 2048 caratteri.

Esempio

Il seguente codice invia un testo con due risposte suggerite. Per le opzioni di formattazione e valore, vedi SuggestedReply.

cURL

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);
});
Questo codice è un estratto di un agente campione RBM.

Java

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();
}
Questo codice è un estratto di un agente campione RBM.

Python

# 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')
Questo codice è un estratto di un agente campione RBM.

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
);
Questo codice è un estratto di un agente campione RBM.

Azioni suggerite

Le azioni suggerite guidano gli utenti nelle conversazioni sfruttando la funzionalità integrata dei loro dispositivi. L'agente può suggerire agli utenti di chiamare un numero, aprire una posizione su una mappa, condividere una posizione, aprire un URL o creare un evento di calendario.

Per ogni azione suggerita, puoi fornire facoltativamente un URL di riserva (massimo 2048 caratteri). Questo URL si apre in una nuova finestra del browser se il dispositivo dell'utente non supporta l'azione suggerita.

Quando un utente tocca un'azione suggerita, l'agente riceve un evento che contiene i dati di postback dell'azione.

Per le opzioni di formattazione e valore, vedi SuggestedAction.

Componi un numero

L'azione Chiamata guida l'utente a comporre un numero di telefono specificato dall'agente. I numeri di telefono possono includere solo cifre (0-9), il segno più (+), l'asterisco (*) e il simbolo del numero (#). Il formato internazionale E.164 (ad esempio, +14155555555) è supportato, ma non obbligatorio. ovvero sia +14155555555 che 1011 sono voci valide.

Esempio

Il seguente codice invia un'azione di chiamata. Per le opzioni di formattazione e valore, vedi DialAction.

cURL

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);
});
Questo codice è un estratto di un agente campione RBM.

Java

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();
}
Questo codice è un estratto di un agente campione RBM.

Python

# 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')
Questo codice è un estratto di un agente campione RBM.

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
);
Questo codice è un estratto di un agente campione RBM.

Visualizzare una posizione

L'azione Visualizza posizione mostra una posizione nell'app di mappe predefinita dell'utente. Puoi specificare la posizione in base alla latitudine e alla longitudine o con una query basata sulla posizione attuale dell'utente. Puoi anche impostare un'etichetta personalizzata per il segnaposto visualizzato nell'app di mappe.

Esempio

Il seguente codice invia un'azione di visualizzazione della posizione. Per le opzioni di formattazione e valore, vedi ViewLocationAction.

cURL

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);
});
Questo codice è un estratto di un agente campione RBM.

Java

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();
}
Questo codice è un estratto di un agente campione RBM.

Python

# 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')
Questo codice è un estratto di un agente campione RBM.

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
);
Questo codice è un estratto di un agente campione RBM.

Condividi la posizione

L'azione Condividi posizione consente all'utente di condividere una posizione con il tuo agente. L'utente può condividere la propria posizione attuale o una posizione selezionata manualmente dall'app Maps.

Esempio

Il seguente codice invia un'azione di condivisione della posizione. Per le opzioni di formattazione e valore, vedi ShareLocationAction.

cURL

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);
});
Questo codice è un estratto di un agente campione RBM.

Java

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();
}
Questo codice è un estratto di un agente campione RBM.

Python

# 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')
Questo codice è un estratto di un agente campione RBM.

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
);
Questo codice è un estratto di un agente campione RBM.

Aprire un URL

L'azione Apri URL ti consente di indirizzare gli utenti a una pagina web specificata dall'agente. Per impostazione predefinita, la pagina web si apre nel browser dell'utente. Puoi anche impostare l'apertura della pagina web in una webview. Per maggiori dettagli, consulta Aprire l'URL con webview.

Solo in Google Messaggi:se un utente ha configurato un'app predefinita per la pagina web, si apre l'app anziché il browser o la webview e il pulsante dei suggerimenti mostra l'icona dell'app. Affinché l'icona dell'app venga visualizzata in Google Messaggi, devi fornire l'URL completo e diretto. Se utilizzi un URL abbreviato, viene visualizzata l'icona predefinita Apri URL.

Icona dell&#39;app in un pulsante di suggerimento.
Icona dell'app in un pulsante di suggerimento
Esempio

Il seguente codice invia un'azione di apertura dell'URL. Per le opzioni di formattazione e valore, vedi OpenUrlAction.

cURL

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);
});
Questo codice è un estratto di un agente campione RBM.

Java

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();
}
Questo codice è un estratto di un agente campione RBM.

Python

# 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')
Questo codice è un estratto di un agente campione RBM.

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
);
Questo codice è un estratto di un agente campione RBM.

Aprire un URL con WebView

L'azione Apri URL con visualizzazione web carica la pagina web specificata all'interno dell'app di messaggistica con il motore di rendering del browser predefinito. In questo modo l'utente può interagire con la pagina web senza uscire dalla conversazione RCS for Business. Se il dispositivo dell'utente non supporta le webview, la pagina web si apre nel browser dell'utente. Per attivare le webview, consulta OpenURLApplication.

Le webview hanno tre modalità di visualizzazione. Per le opzioni di formattazione e valore, vedi WebviewViewMode.

  • Completa:la pagina web occupa tutto lo schermo.
  • Metà:la pagina web occupa metà dello schermo
  • Verticale:la pagina web occupa tre quarti dello schermo
Esempio

Il seguente codice invia un'azione Apri URL con webview. Per le opzioni di formattazione e valore, vedi OpenURLAction.

cURL

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

Java

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;
    }

Creare un evento nel calendario

L'azione Crea evento nel calendario apre l'app di calendario dell'utente e inizia a creare un nuovo evento con le informazioni specificate.

È obbligatorio un titolo per l'evento nel calendario. Contiene un massimo di 100 caratteri. La descrizione dell'evento del calendario è facoltativa e può contenere al massimo 500 caratteri.

Esempio

Il seguente codice invia un'azione di creazione di un evento nel calendario. Per le opzioni di formattazione e valore, vedi CreateCalendarEventAction.

cURL

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);
});
Questo codice è un estratto di un agente campione RBM.

Java

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();
}
Questo codice è un estratto di un agente campione RBM.

Python

# 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')
Questo codice è un estratto di un agente campione RBM.

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
);
Questo codice è un estratto di un agente campione RBM.

Elenco dei chip di suggerimento

L'agente invia elenchi di chip di suggerimento con i messaggi per guidare le azioni successive degli utenti. L'elenco dei chip viene visualizzato solo quando il messaggio associato si trova in fondo alla conversazione. I messaggi successivi nella conversazione (inviati da un utente o dal tuo agente) sovrascrivono l'elenco di chip.

I chip nell'elenco sono risposte suggerite e azioni suggerite.

Gli elenchi di chip contengono un massimo di 11 chip di suggerimento e ogni etichetta del chip può contenere un massimo di 25 caratteri.

Per le opzioni di formattazione e valore, vedi AgentContentMessage.

Schede interattive

Le schede avanzate combinano contenuti multimediali, testo e suggerimenti interattivi in un unico messaggio. Sono ideali per presentare informazioni correlate (ad esempio, un prodotto con la sua immagine, il nome e il prezzo) e guidare gli utenti con un passaggio successivo chiaro come il suggerimento "Visualizza dettagli".

Una scheda interattiva può contenere:

Ciascuno di questi campi è facoltativo, ma almeno uno dei campi 1-3 deve essere incluso nella scheda avanzata.

È possibile inviare più schede insieme in un carosello a scorrimento orizzontale.

Tieni presente che il payload totale di una scheda interattiva è di 250 KB.

Per tutti i dettagli tecnici, consulta la documentazione sulle schede avanzate.

Altezza scheda

Le schede interattive si espandono verticalmente per adattarsi ai contenuti. Hanno un'altezza minima di 112 dp e un'altezza massima di 344 dp. Se i contenuti della scheda non sono abbastanza grandi da riempire l'altezza minima della scheda, la scheda si espande e riempie l'altezza aggiuntiva con uno spazio vuoto.

I contenuti multimediali nelle schede avanzate devono rientrare in una delle tre altezze:

  • Short: 112 dp
  • Media: 168 dp
  • Grandi: 264 dp

Se i contenuti multimediali non rientrano nelle dimensioni della scheda in base all'altezza selezionata, l'anteprima dei contenuti multimediali viene scelta tramite zoom e ritaglio.

Esempio

Il seguente codice invia una scheda informativa con un'immagine e risposte suggerite. Per le opzioni di formattazione e valore, vedi RichCard.

cURL

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);
});
Questo codice è un estratto di un agente campione RBM.

Java

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();
}
Questo codice è un estratto di un agente campione RBM.

Python

# 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')
Questo codice è un estratto di un agente campione RBM.

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");
Questo codice è un estratto di un agente campione RBM.

Caroselli di schede interattive

I caroselli uniscono più schede avanzate, consentendo agli utenti di confrontare gli elementi e reagire a ciascuno singolarmente.

I caroselli possono contenere un minimo di due e un massimo di dieci schede avanzate. Le schede interattive all'interno dei caroselli devono essere conformi ai requisiti generali delle schede interattive per contenuti e altezza, come descritto nella documentazione sulle schede interattive. Per ulteriori informazioni sul layout e sulle specifiche del carosello, consulta la documentazione relativa al carosello.

Esempio

Il seguente codice invia un carosello di schede interattive. Per le opzioni di formattazione e valore, vedi RichCard.

cURL

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);
});
Questo codice è un estratto di un agente campione RBM.

Java

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();
        }
Questo codice è un estratto di un agente campione RBM.

Python

# 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')
Questo codice è un estratto di un agente campione RBM.

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);
Questo codice è un estratto di un agente campione RBM.