Ricevere 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 lo invia al 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, posizione o file consentito dal client RCS. L'agente deve gestire qualsiasi testo, posizione o file che l'utente potrebbe inviare, nonché eventuali stati di errore che questi messaggi potrebbero attivare.

Per scoprire in che modo l'agente può gestire le ricevute di consegna, le ricevute di lettura e gli indicatori di digitazione, consulta Ricevere eventi.

Gestire i messaggi in arrivo

Il modo in cui l'agente gestisce e risponde ai messaggi degli utenti dipende in larga misura dalla logica di business. In genere, tuttavia, i passaggi per rispondere a un messaggio 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 disuggerimento includono i dati di postback e il testo dell' azione suggerita o della risposta suggerita che l'utente ha toccato.
  • I messaggi di posizione includono valori di latitudine e longitudine.

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

Passaggio 2: elabora i contenuti del messaggio

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

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

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

I messaggi di posizione e file non includono testo o dati di postback, pertanto 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 chiedendo all'utente ulteriori informazioni, richiedendo l'input in un modo diverso o presentando risposte e azioni suggerite a cui l'agente sa come rispondere.

Passaggio 3: implementa 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, se necessario, per implementare la logica di business per l'interazione.

Passaggio 4: rispondi all'utente

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

Esempi

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

L'agente riceve testo

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