Ricezione di messaggi

Gli agenti RBM ricevono messaggi ed eventi tramite un webhook. Quando un utente invia un messaggio al tuo agente, il servizio RBM di Google invia il messaggio al tuo webhook configurato. L'agente può quindi decodificare il messaggio, elaborarlo ed emettere una risposta all'utente.

L'utente invia un messaggio all'agente

Gli utenti possono inviare qualsiasi testo, posizioni o file consentito dal loro client RCS. L'agente deve gestire il testo, la posizione o i file che l'utente potrebbe inviare, nonché gli eventuali stati di errore che potrebbero attivare.

Gestire i messaggi in arrivo

Il modo in cui l'agente gestisce e risponde ai messaggi degli utenti dipende molto dalla logica di business. In genere, tuttavia, i passaggi per rispondere a un messaggio dell'utente sono coerenti.

Passaggio 1: identifica il tipo di messaggio inviato dall'utente

Gli utenti possono inviare quattro tipi di messaggi:

  • I messaggi di testo sono risposte in formato libero.
  • I messaggi di suggerimenti includono i dati postback e il testo dell'azione suggerita o della risposta suggerita che l'utente ha toccato.
  • I messaggi Posizione includono i valori di latitudine e longitudine.

  • I messaggi file includono l'URI di un file e i dati associati.

Passaggio 2: elabora i contenuti del messaggio

I contenuti del messaggio utente devono guidare la logica dell'agente e la risposta successiva nella conversazione.

Il modo più semplice per identificare l'intenzione dell'utente è utilizzare i dati postback da una risposta suggerita o un'azione suggerita. Indipendentemente dal testo associato al suggerimento, i dati postback sono leggibili dalla macchina.

Se un utente invia un messaggio, l'agente potrebbe analizzare la risposta per individuare le parole chiave supportate o utilizzare una NLU (ad esempio Dialogflow) per elaborare il messaggio dell'utente e identificare un percorso di inoltro.

I messaggi relativi a posizione e file non includono dati di testo o postback, quindi l'agente deve considerare il contesto della conversazione e i messaggi recenti prima di rispondere.

Se l'agente non sa come rispondere al messaggio dell'utente, deve rispondere con uno stato di errore e provare a continuare la conversazione richiedendo all'utente ulteriori informazioni, chiedendo input in modo diverso o presentando risposte suggerite e azioni suggerite a cui l'agente sa come rispondere.

Passaggio 3: soddisfa la logica di business per l'interazione

Una volta che l'agente identifica la risposta corretta al messaggio dell'utente, raccoglie le informazioni necessarie dalla tua infrastruttura e interagisce con altri sistemi secondo necessità per soddisfare la logica di business dell'interazione.

Passaggio 4: rispondi all'utente

Dopo aver completato la logica di business per l'interazione, l'agente invia un altro messaggio e continua la conversazione con l'utente.

Esempi

Il codice seguente mostra in che modo l'agente riceve i messaggi. Per informazioni sulla formattazione e sul valore, consulta UserMessage.

L'agente riceve SMS

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "text": "Hello, world!"
}

L'agente riceve un messaggio da un suggerimento

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "suggestionResponse": {
    "postbackData": "suggestion_1",
    "text": "Suggestion #1"
  }
}

L'agente riceve una posizione

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "location": {
    "latitude": 37.422000,
    "longitude": -122.084056
  }
}

L'agente riceve un file

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "userFile": {
    "category": "IMAGE",
    "thumbnail": {
      "mimeType": "image/jpeg",
      "fileSizeBytes": 1280,
      "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c8",
      "fileName": "4_animated.jpeg"
    },
    "payload": {
      "mimeType": "image/gif",
      "fileSizeBytes": 127806,
      "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c9",
      "fileName": "4_animated.gif"
    }
  }
}

Gestire gli eventi in arrivo

L'agente riceve notifiche quando i messaggi che invia agli utenti vengono recapitati e letti.

Il codice seguente mostra in che modo l'agente riceve i messaggi. Per informazioni sulla formattazione e sui valori, consulta UserEvent.

Messaggio consegnato all'utente

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "eventType": "DELIVERED"
}

Messaggio letto dall'utente

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "eventType": "READ"
}

L'utente sta scrivendo…

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventType": "IS_TYPING",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "agentId": "AGENT_ID"
}