Payload personalizzati dell'agente virtuale

Il payload personalizzato per Dialogflow CX ti consente di migliorare l'esperienza del tuo agente virtuale al di là di chat e interazioni basate su testo normale. Utilizzando payload personalizzati in Dialogflow CX, puoi configurare l'agente virtuale in modo che visualizzi risposte e citazioni personalizzate.

Tipi di messaggi di risposta personalizzati

Le risposte personalizzate ti consentono di visualizzare i seguenti tipi di messaggi:

  • Testo

  • Pulsanti in linea

  • Pulsanti bloccati

  • Immagini

  • Video

  • Documenti

  • Visualizzazioni complesse (combinazione di uno o più tipi di messaggi)

Le azioni personalizzate consentono agli agenti virtuali di eseguire le seguenti azioni:

  • Riassegnazioni agli agenti umani

  • Trasferimenti pianificati ad agenti umani

  • Terminare la sessione di assistenza

Payload di Contact Center AI Platform (CCAI Platform)

Da utilizzare in Dialogflow CX come payload personalizzato. Il seguente esempio mostra il formato delle risposte in webSDK utilizzando Dialogflow CX.

{
  "ujet": {
    "type": "text|inline_button|sticky_button|image|video|document|complex|action",
    "action": "escalation|end",
    "title": "message displayed on the top of the message",
    "escalation_reason": "by_consumer|by_virtual_agent",
    "session_variable": {
      "capture_target": "payload|end_user_response",
      "capture_key": "key",
      "payload": {
      }
    },
    "messages": [
      "Hello",
      "How can I help you?"
    ],
    "buttons": [
      {
        "title": "Button 1",
        "action": "quick_reply"
      },
      {
        "title": "Button 2",
        "action": "quick_reply"
      }
    ],
    "images": [
      {
        "url": "https://image.url",
        "text": "an alternate text for an image for when failed to load an image"
      },
      {
        "url": "https://image.url",
        "text": "an alternate text for an image"
      }
    ],
    "videos": [
      {
        "url": "https://video.url",
        "text": "an alternate text for a video for when failed to load a video"
      },
      {
        "url": "https://video.url",
        "text": "an alternate text for a video"
      }
    ],
    "documents": [
      {
        "url": "https://document.url",
        "text": "an alternate text for a document for when failed to load a document"
      },
      {
        "url": "https://document.url",
        "text": "an alternate text for a document"
      }
    ],
    "components": [
      {
        "type": "text",
        "messages": [
          "We need the information for helping you.",
          "Could you please choose the following options?"
        ]
      },
      {
        "type": "inline_button",
        "buttons": [
          {
            "title": "Button 1",
            "action": "quick_reply"
          },
          {
            "title": "Button 2",
            "action": "quick_reply"
          }
        ]
      },
      {
        "type": "image",
        "images": [
          {
            "url": "https://image.url",
            "text": "an alternate text for an image for when failed to load an image"
          },
          {
            "url": "https://image.url",
            "text": "an alternate text for an image"
          }
        ]
      }
    ]
  }
}

Formato del messaggio di chat per il payload personalizzato

Utilizzato con l'SDK CCAI Platform per mostrare un'interfaccia utente corretta. È lo stesso con il formato del payload personalizzato di Dialogflow CX, ma non ha il campo "ujet" nella radice.

Per maggiori dettagli, consulta i seguenti esempi.

Esempi

Le seguenti sezioni includono payload di esempio che possono essere utilizzati in Dialogflow CX.

Testo

{
  "ujet": {
    "type": "text",
    "messages": [
      "Hello",
      "How can I help you?"
    ]
  }
}

Riassegnazione alla stessa coda

Tramite l'agente virtuale:

{
  "ujet": {
    "type": "action",
    "action": "escalation",
    "escalation_reason": "by_virtual_agent"
  }
}

Per utente finale:

{
  "ujet": {
    "type": "action",
    "action": "escalation",
    "escalation_reason": "by_consumer"
  }
}

Il valore escalation_reason viene riportato nelle dashboard.

Riassegnazione alla coda di destinazione

Tramite l'agente virtuale:

{
  "ujet": {
    "type": "action",
    "action": "escalation",
    "escalation_reason": "by_virtual_agent",
    "menu_id": 100,
    "language": "ko"
  }
}

Per utente finale:

{
  "ujet": {
      "type": "action",
      "action": "escalation",
      "escalation_reason": "by_consumer",
      "menu_id": 100,
      "language": "ko"
  }
}

Il valore escalation_reason viene riportato nelle dashboard.

Termina conversazione

{
  "ujet": {
    "type": "action",
    "action": "end"
  }
}

Pulsante in linea

{
  "ujet": {
    "type": "inline_button",
    "title": "Select a menu",
    "buttons": [
      {
        "title": "Lorem Ipsum",
        "action": "quick_reply"
      },
      {
        "title": "Lorem Ipsum Dolor Sit Amet",
        "action": "escalation"
      }
    ]
  }
}

Esempio

Esempio di pulsante in linea

Pulsante adesivo

{
  "ujet": {
    "type": "sticky_button",
    "title": "Select a menu",
    "buttons": [
      {
        "title": "Lorem Ipsum",
        "action": "quick_reply"
      },
      {
        "title": "Lorem Ipsum Dolor Sit Amet",
        "action": "escalation"
      }
    ]
  }
}

Esempio

Pulsante sticky di esempio

Visualizzazione dell'immagine

{
  "ujet": {
    "type": "image",
    "title": "Please see the following images",
    "images": [
      {
        "url": "https://image1.url",
        "text": "an alternate text for an image for when failed to load an image"
      },
      {
        "url": "https://image2.url",
        "text": "an alternate text for an image"
      }
    ]
  }
}

Visualizzazione video

{
  "ujet": {
    "type": "video",
    "title": "Please see the following videos",
    "videos": [
      {
        "url": "https://video1.url",
        "text": "an alternate text for a video for when failed to load a video"
      },
      {
        "url": "https://video2.url",
        "text": "an alternate text for a video"
      }
    ]
  }
}

Visualizzazione documento

{
  "ujet": {
    "type": "document",
    "title": "Please see the following document",
    "documents": [
      {
        "url": "https://document1.url",
        "text": "an alternate text for a document for when failed to load a document"
      },
      {
        "url": "https://document2.url",
        "text": "an alternate text for a document"
      }
    ]
  }
}

Visualizzazione complessa

{
  "ujet": {
    "type": "complex",
    "type": "Welcome to CCAI Platform world!",
    "components": [
      {
        "type": "text",
        "messages": [
          "We need the information for helping you.",
          "Could you please choose the following options?"
        ]
      },
      {
        "type": "inline_button",
        "buttons": [
          {
            "title": "Button 1",
            "action": "quick_reply"
          },
          {
            "title": "Button 2",
            "action": "quick_reply"
          }
        ]
      },
      {
        "type": "image",
        "images": [
          {
            "url": "https://image1.url",
            "text": "an alternate text for an image for when failed to load an image"
          },
          {
            "url": "https://image2.url",
            "text": "an alternate text for an image"
          }
        ]
      }
    ]
  }
}

Configurazione di un payload personalizzato in Dialogflow

Per saperne di più su come configurare il payload personalizzato utilizzando Dialogflow, consulta le risorse Risposte con payload personalizzato (Dialogflow ES) o Payload personalizzato (Dialogflow CX).

Per saperne di più, consulta Variabili di sessione personalizzate per la gestione del payload personalizzato.

Trasferimento dell'agente virtuale a un numero di telefono o a un endpoint SIP

Puoi utilizzare i payload personalizzati di Dialogflow CX per trasferire le chiamate da un agente virtuale vocale al numero di telefono o all'endpoint SIP che specifichi. Se la connessione viene stabilita, l'agente virtuale viene rimosso dalla chiamata e la chiamata continua. Se la connessione non va a buon fine, viene riprodotto un messaggio di errore di trasferimento e la chiamata continua con l'agente virtuale.

I trasferimenti dell'agente virtuale funzionano sia per le chiamate interne che esterne. I trasferimenti dell'agente virtuale vengono registrati come Planned Transfers nei report.

Trasferire una chiamata a un numero di telefono

Per trasferire una chiamata da un agente virtuale a un numero di telefono, utilizza un payload Dialogflow CX simile al seguente esempio di codice:

{
  "ujet": {
    "type": "action",
    "action": "deflection",
    "deflection_type" : "phone",
    "phone_number": "+16509424879"
  }
}

Trasferire una chiamata a un endpoint SIP

Per trasferire una chiamata da un agente virtuale a un endpoint SIP nel modo standard, utilizza un payload Dialogflow CX simile al seguente esempio di codice:

{
  "ujet": {
    "type": "action",
    "action": "deflection",
    "deflection_type" : "sip",
    "sip_uri": "sip:1-999-123-4567@voip-provider.example.net"
  }
}

Trasferire una chiamata a un endpoint SIP utilizzando il metodo SIP REFER

Per trasferire una chiamata da un agente virtuale a un endpoint SIP utilizzando il metodo SIP REFER, utilizza un payload Dialogflow CX simile al seguente esempio di codice. Con il metodo SIP REFER, puoi trasmettere informazioni utili utilizzando le proprietà dell'intestazione.

{
    "ujet": {
       "type": "action",
       "action": "deflection",
       "deflection_type" : "sip"
       "sip_uri": "sip:1-999-123-4567@voip-provider.example.net"
       "sip_refer": true
       "sip_parameters": {
       "x-header": "value",
       "x-header": "value"
       }
    }
}

Variabili Sessione personalizzata per la gestione del payload personalizzato

Utilizza le variabili di sessione personalizzate per acquisire i valori dalla risposta all'intent e dalla risposta dell'utente finale, quindi raccoglili tutti e caricali nel CRM come commento. Per saperne di più, consulta Payload di Dialogflow per le variabili di sessione personalizzate.

Acquisizione dalla risposta dell'utente finale

Flow

  1. La piattaforma CCAI richiede la risposta a Dialogflow CX.

    Dialogflow CX può richiamare il server del cliente tramite Fulfillment.

    Il server del cliente deve compilare il campo session_variable nella risposta.

  2. Dialogflow CX restituisce la risposta con il payload personalizzato, incluso il campo session_variable con capture_target = end_user_response

  3. Un utente finale invia un messaggio.

  4. La piattaforma CCAI conserva il messaggio dell'utente finale inviato nel passaggio precedente.

  5. La piattaforma CCAI pubblicherà tutte le variabili di sessione acquisite nella sessione di chat nel CRM come commento quando un agente virtuale esce da una chat.

Formato del payload personalizzato

{
  "ujet": {
    "session_variable": {
      "capture_target": "end_user_response",
      "capture_key": "key"
    }
  }
}

Il messaggio dell'utente finale successivo immediatamente dopo l'invio di un payload personalizzato da parte di un agente virtuale verrà acquisito come variabile di sessione con la chiave "key".

Acquisizione dalla risposta all'intent

Flow

  1. La piattaforma CCAI richiede la risposta a Dialogflow CX.

    1. Dialogflow CX potrebbe richiamarlo sul server del cliente tramite Fulfillment.

    2. Il server del cliente deve compilare il campo session_variable nella risposta.

  2. Dialogflow CX restituisce la risposta con il payload personalizzato incluso il campo session_variable con capture_target = "payload".

  3. Il server della piattaforma CCAI mantiene l'oggetto payload nel passaggio 2.

La piattaforma CCAI pubblicherà tutte le variabili di sessione acquisite nella sessione di chat nel CRM come commento quando un agente virtuale esce da una chat.

Formato del payload personalizzato

{
  "ujet": {
    "session_variable": {
      "capture_target": "payload",
      "capture_type": [
        "comment",
        "agent"
      ],
      "payload": {
        "status": "STATUS",
        "order_id": "ORDER_ID",
        "personal_id": "PERSONAL_ID"
      },
        "invisible_to_agent": ["INVISIBLE_TO_AGENT"],
        "display_order_in_adapter": ["DISPLAY_ORDER_IN_ADAPTER"]
    }
  }
}

Sostituisci quanto segue:

  • STATUS: lo stato dell'ordine

  • ORDER_ID: l'ID ordine

  • PERSONAL_ID: un identificatore dell'utente finale.

  • INVISIBLE_TO_AGENT: un array di proprietà che non vuoi che siano visibili nell'adattatore dell'agente. Ad esempio, un valore "personal_id" qui impedirebbe la visualizzazione della proprietà personal_id nell'adattatore dell'agente. Per ulteriori informazioni, vedi Visualizzare le variabili della sessione dell'agente virtuale.

  • DISPLAY_ORDER_IN_ADAPTER: un array di proprietà per specificare l'ordine in cui le variabili di sessione devono essere visualizzate nell'adattatore dell'agente e nei record CRM. Per ulteriori informazioni, vedi Visualizzare le variabili della sessione dell'agente virtuale.

Caricamento delle variabili di sessione personalizzate sul CRM

Per ogni variabile di sessione, il server deve raccogliere internamente tutte le variabili di sessione e caricarle sul CRM quando un agente virtuale esce.

Esempio di messaggio CRM

    ###########################

    Chat ID: 1
    Menu ID: 1
    Chatbot Platform: Platform Name
    Chatbot Workflow: Workflow Name
    Virtual Agent: Virtual Agent Name

    ###########################

    Intent: Intent Captured from End User Response
    Captured At: 2020-06-25 14:54:19

    Captured Variables
    request: Cancel Order

    ###########################

    Intent: Intent Captured from Payload
    Captured At: 2020-06-25 14:58:23

    Captured Variables
    status: Cancelled
    order_id: #12345

    ###########################

Scenario di esempio

Di seguito è riportata una conversazione di esempio che mostra i diversi passaggi e i messaggi scambiati tra l'agente virtuale e l'utente finale.

Passaggio 1

Messaggio di chat dell'agente virtuale

How can I help you? (Button) Show my orders (Button) Cancel an order

Risposta all'intent (payload personalizzato)

{
  "ujet": {
    "type": "inline_button",
    "title": "How can I help you?",
    "buttons": [
      {
        "title": "Show my orders",
        "action": "quick_reply"
      },
      {
        "title": "Cancel an order",
        "action": "quick_reply"
      }
    ]
  }
}

Variabile di sessione acquisita

Nessuno

Passaggio 2

Messaggio di chat dell'utente finale

Click "Cancel an order" button.

Variabile di sessione acquisita

Nessuno

Passaggio 3

Messaggio di chat dell'agente virtuale

Can you provide the order id please

Risposta all'intent (payload personalizzato)

{
  "ujet": {
    "type": "text"
    "messages": [
      "Can you provide the order id please"
    ],
    "session_variable": {
       "capture_target": "end_user_response",
       "capture_key": "order_id";
    }
  }
}

Variabile di sessione acquisita

Nessuno

Passaggio 4

Messaggio di chat dell'utente finale

Order id is #12345

Variabile di sessione acquisita

order_id: "Order ID is #12345"

Passaggio 5

Messaggio di chat dell'agente virtuale

Order #12345 is cancelled. Do you need anything else?

Risposta all'intent (payload personalizzato)

{
  "ujet": {
    "type": "text",
    "messages": [
      "Order #12345 is canceled.",
      "Do you need anything else?"
    ],
    "session_variable": {
      "capture_target": "payload",
      "capture_type": [
        "agent",
        "comment",
        "event"
      ],
      "payload": {
        "order_id": "#12345",
        "order_status": "cancelled"
      }
    }
  }
}

Variabile di sessione acquisita

order_id: "#12345", order_status: canceled

Passaggio 6

Messaggio di chat dell'utente finale

I would like to speak with a human agent.

Passaggio 7

Messaggio di chat dell'agente virtuale

Virtual Agent is left from the conversation.

{
  "ujet": {
    "type": "escalation",
    "escalation_reason": "by_consumer"
  }
}

Caricamento delle variabili di sessione personalizzate sul CRM

Dal scenario precedente, i seguenti post di commento sul ticket CRM:

    ---------------------------------

    Chat ID: 1
    Menu ID: 1
    Chatbot Platform: Platform Name
    Chatbot Workflow: Workflow Name
    Virtual Agent: Virtual Agent Name

    --------------------------------

    Intent: Intent Captured from End User Response
    Captured At: 2020-06-25 14:54:19

    Captured Variables
    order_id: Order id is #12345.

    --------------------------------

    Intent: Intent Captured from Payload
    Captured At: 2020-06-25 14:58:23

    Captured Variables
    order_id: #12345
    order_status: canceled

    --------------------------------

Configurare le schede dei contenuti

Le schede di contenuti mostrano contenuti concisi e visivamente accattivanti in un formato simile a una scheda, creando interazioni più semplici per l'utente finale per consumare le informazioni presentate. Puoi creare schede di contenuti utilizzando Dialogflow CX e personalizzarle con titoli, sottotitoli e corpo del testo.

L'esempio seguente utilizza le schede dei contenuti per mostrare le opzioni di ristoranti all'utente finale:

Esempio di scheda dei contenuti

Proprietà della scheda dei contenuti

Nome proprietà Descrizione Obbligatorio Tipo
title Il titolo della scheda. Stringa
subtitle Il sottotitolo della scheda. No Stringa
body La descrizione della scheda dei contenuti. Stringa
link Un link a una pagina web o un link diretto. L'SDK utilizzerà le funzionalità del sistema operativo per aprirlo. No Stringa
event_params Un dizionario contenente informazioni aggiuntive sull'evento di clic. L'SDK lo utilizzerà. No Dizionario

Payload di Dialogflow CX: aggiungi la convalida e accetta il tipo di scheda dei contenuti

Un tipo di payload Dialogflow CX specifico gestisce le schede di contenuti quando i messaggi degli utenti finali vengono ricevuti tramite il server chatbot. Di seguito è riportato un esempio di payload Dialogflow CX:

{
  "ujet": {
    "type": "content_card",
    "cards": [
      {
        "title": "Title",
        "subtitle": "Subtitle",
        "body": "Body",
        "link": "app://page",
        "event_params": {} # for deep-link click event
      }
    ]
  }
}

Informazioni sulle schede dei contenuti nella cronologia della chat CRM

Le informazioni sul titolo della scheda vengono registrate per tenere traccia delle schede su cui l'utente finale ha fatto clic. Queste informazioni vengono registrate nella cronologia della chat del CRM.

Nell'esempio seguente, la cronologia dei messaggi di chat nel CRM mostra l'interazione con la scheda dei contenuti.

[Chat message history]
ID: 305   |   2023-07-06     PDT
--------------------------------------------------
[01:13:32     VA]     Welcome message

[01:14:35     Mobile U.]     Content Cards:
- Title 1
- Title 2

Eventi di clic sul titolo della scheda dei contenuti del log

Per registrare quando un utente finale fa clic sul titolo di una scheda di contenuti, utilizza il seguente formato per acquisire l'evento:

{end_user_name} clicked on the '{title}' card.
Note Title: Content Card click
Note Comment: 'John Doe' clicked on the 'See our new website' card.

Crea un evento di clic sulla scheda dei contenuti utilizzando l'API End User Event

Quando un utente finale fa clic sul titolo di una scheda di contenuti, puoi registrare questo evento inviando una richiesta POST all'URL specificato insieme al titolo della scheda su cui è stato fatto clic.

Endpoint API: POST /api/v2/chat/:id/end_user_event

Utilizzo: crea un evento di clic sulla scheda dei contenuti.

URL: /api/v2/chats/:id/end_user_event

Metodo: POST

Parametri:

Campo Tipo Descrizione
event oggetto
event.name string Per gli eventi di clic sulle schede dei contenuti, utilizza content_card_clicked.
event.payload oggetto
event.payload.title string Inserisci il titolo della scheda su cui è stato fatto clic.
(Facoltativo) end_user_name string Inserisci il nome dell'utente finale. Se il campo viene lasciato vuoto, il nome verrà recuperato dal CRM.

Esempio di richiesta:

{
  "event": {
    "name": "content_card_clicked",
    "payload": {
      "title": "New our website"
    }
  },
  "end_user_name": "consumer 1"   ## optional
}

Risposta: Status: 202 Accepted