L'integrazione precedente di Dialogflow CX con Messenger fornisce una finestra di dialogo di chat personalizzabile per il tuo agente che può essere integrata nel tuo sito web. La finestra di dialogo della chat è implementata come finestra di dialogo che possono essere aperte e chiuse dall'utente finale. Una volta aperta, la finestra di dialogo della chat viene visualizzata sopra i contenuti nella parte in basso a destra dello schermo.
Migrazione all'ultima versione di Messenger di Dialogflow CX
La versione più recente di Dialogflow CX Messenger fornisce l'autenticazione per controllare l'accesso alle query degli agenti e altre opzioni di configurazione dell'interfaccia utente. Ti consigliamo di eseguire la migrazione alla nuova versione per tutti gli utenti della versione precedente.
Se hai attivato l'integrazione di Messenger di Dialogflow CX prima del 29 agosto 2023, potresti utilizzare la versione precedente. Per determinare se stai utilizzando la versione precedente, esamina il codice HTML di Messenger incorporato nel tuo sito web. Se visualizzi lo script seguente, significa che stai utilizzando la versione precedente:
https://www.gstatic.com/dialogflow-console/fast/messenger-cx/bootstrap.js?v=1
Per eseguire la migrazione alla nuova versione:
- Elimina tutto il codice HTML, CSS e JavaScript di Messenger dal tuo sito web.
- Segui le istruzioni per l'ultima integrazione di Dialogflow CX Messenger.
Personalizzazioni HTML
Puoi personalizzare vari aspetti
per capire come appare e si comporta
la finestra di dialogo della chat.
L'elemento HTML df-messenger
ha i seguenti attributi:
Attributo | Criterio di inserimento | Valore |
---|---|---|
agent-id |
Obbligatorio | ID agente associato all'agente. È precompilato con il tuo ID agente. |
chat-icon |
Facoltativo | Icona utilizzata per il pulsante di apertura della finestra di dialogo della chat. L'icona degli agenti conversazionali (Dialogflow CX) è l'icona predefinita. Questo campo deve essere un URL pubblico. Le dimensioni dell'icona devono essere 36 x 36 px. |
chat-title |
Obbligatorio | Titolo visualizzato nella parte superiore della finestra di dialogo della chat. Questo campo è precompilato con il nome dell'agente. |
df-cx |
Obbligatorio | Indica che l'interazione è con un agente CX. Utilizza "true" come valore. |
expand |
Facoltativo | Attributo booleano che consente di aprire la finestra di dialogo della chat al caricamento della pagina. Per impostazione predefinita, la finestra di dialogo della chat viene chiusa al caricamento della pagina. |
intent |
Facoltativo | Un evento personalizzato che verrà richiamato all'apertura della finestra di dialogo della chat. Puoi utilizzare un gestore eventi che verrà chiamato per questo evento e produrrà il primo messaggio dell'agente. |
language-code |
Obbligatorio | Codice lingua predefinito per il primo intento. Viene precompilato con la lingua predefinita dell'agente. |
location |
Obbligatorio | La regione dell'agente. |
session-id |
Facoltativo | Un ID sessione. Se non viene fornito, l'integrazione genererà un ID univoco per ogni finestra di chat. |
user-id |
Facoltativo | Può essere utilizzato per monitorare un utente in più sessioni. Puoi passare il valore agli agenti conversazionali (Dialogflow CX) tramite il campo queryParams.payload.userId in una richiesta di rilevamento dell'intento, mentre gli agenti conversazionali (Dialogflow CX) ti forniscono questo valore tramite il campo WebhookRequest.payload.userId . |
wait-open |
Facoltativo | Attributo booleano che ritarda l'evento personalizzato definito nell'attributo intent fino all'apertura effettiva della finestra di dialogo. |
Personalizzazioni CSS
Puoi personalizzare lo stile della finestra di dialogo della chat impostando Variabili CSS.
È possibile fornire le seguenti variabili CSS:
Variabile CSS | Proprietà interessata |
---|---|
df-messenger-bot-message |
Colore di sfondo della bolla per i messaggi dell'agente. |
df-messenger-button-titlebar-color |
Colore del pulsante mobile e della barra delle app della finestra di dialogo della chat. |
df-messenger-button-titlebar-font-color |
Colore del carattere del titolo nella barra delle app. |
df-messenger-chat-background-color |
Colore dello sfondo della finestra di dialogo di chat. |
df-messenger-font-color |
Colore dei caratteri per i messaggi. |
df-messenger-input-box-color |
Colore di sfondo per la casella di immissione del testo. |
df-messenger-input-font-color |
Colore del carattere per la casella di immissione testo. |
df-messenger-input-placeholder-font-color |
Colore del carattere per il testo segnaposto nella casella di immissione testo. |
df-messenger-minimized-chat-close-icon-color |
Colore dell'icona di chiusura nella visualizzazione della chat chiusa. |
df-messenger-send-icon |
Colore dell'icona di invio nella casella di immissione di testo. |
df-messenger-user-message |
Colore di sfondo a bolle per i messaggi degli utenti. |
Esempio di codice:
<style>
df-messenger {
--df-messenger-bot-message: #878fac;
--df-messenger-button-titlebar-color: #df9b56;
--df-messenger-chat-background-color: #fafafa;
--df-messenger-font-color: white;
--df-messenger-send-icon: #878fac;
--df-messenger-user-message: #479b3d;
}
</style>
Le impostazioni citate in precedenza comportano:
Eventi JavaScript
Dialogflow Messenger attiva una serie di eventi che puoi creare Listener di eventi .
La
target evento
per questi eventi è l'elemento df-messenger
.
Per aggiungere un listener di eventi per l'elemento df-messenger
:
aggiungi il seguente codice JavaScript,
dove event-type
è uno dei nomi evento descritti di seguito:
const dfMessenger = document.querySelector('df-messenger');
dfMessenger.addEventListener('event-type', function (event) {
// Handle event
...
});
Sono supportati i seguenti tipi di eventi:
df-accordion-clicked
Questo evento si verifica quando un utente fa clic su un elemento a scomparsa. La struttura dell'evento è la seguente:
element: {
title: string,
subtitle: string,
image: {
src: {rawUrl: string}
},
text: string
}
df-button-clicked
Questo evento si verifica quando un utente fa clic su un elemento pulsante. La struttura dell'evento è la seguente:
element: {
icon: {
type: string,
color: string
},
text: string,
link: string,
event: EventInput,
payload: {}
}
df-chip-clicked
Questo evento si verifica quando un utente seleziona un chip di suggerimento. La struttura dell'evento è simile alla seguente:
query: string // Text of the suggestion chip that was selected.
df-info-card-clicked
Questo evento si verifica quando l'utente finale fa clic sull'elemento informativo nella barra delle app. La struttura dell'evento è la seguente:
element: {
title: string,
image: {
src: {rawUrl: string}
},
actionLink: string
}
df-list-element-clicked
Questo evento si verifica quando un utente fa clic su un articolo di un elenco. La struttura dell'evento è la seguente:
element: {
title: string,
subtitle: string,
image: {
src: {rawUrl}
},
event: {
name: string
},
payload: {}
}
df-messenger-error
Questo evento si verifica quando l'API Dialogflow invia un codice di stato di errore. La struttura dell'evento è la seguente:
error: {
"error": {
"code": <error_code>,
"message": <error_message>,
"status": <error_status>
}
}
df-messenger-loaded
Questo evento viene attivato quando l'elemento df-messenger
viene
completamente caricato e inizializzato.
df-request-sent
Questo evento si verifica quando viene effettuata una richiesta all'API Dialogflow.
Questo evento, insieme a df-response-received
,
può essere utilizzato per monitorare la latenza delle richieste.
La struttura dell'evento è la seguente:
requestBody: {
"queryParams": {
object(QueryParameters)
},
"queryInput": {
object(QueryInput)
},
"inputAudio": string
}
df-response-received
Questo evento si verifica quando viene ricevuta una risposta dall'API Dialogflow. La struttura dell'evento è la seguente:
response: detectIntentResponse
df-user-input-entered
Questo evento si verifica quando l'utente finale inserisce una query. La struttura dell'evento è la seguente:
input: string // Text entered by user
Funzioni JavaScript
L'elemento df-messenger
fornisce
funzioni
che puoi chiamare per influenzarne il comportamento.
renderCustomText
Questa funzione esegue il rendering di un semplice messaggio di testo, come se provenisse da agenti conversazionali (Dialogflow CX) come semplice risposta di testo.
Ad esempio:
const dfMessenger = document.querySelector('df-messenger');
dfMessenger.renderCustomText('Custom text');
renderCustomCard
Questa funzione mostra una scheda personalizzata come se provenisse dal completamento degli agenti conversazionali (Dialogflow CX). Il formato della risposta del payload personalizzato è definito nel Completamento .
Ad esempio:
const dfMessenger = document.querySelector('df-messenger');
const payload = [
{
"type": "info",
"title": "Info item title",
"subtitle": "Info item subtitle",
"image": {
"src": {
"rawUrl": "https://example.com/images/logo.png"
}
},
"actionLink": "https://example.com"
}];
dfMessenger.renderCustomCard(payload);
showMinChat
Questa funzione mostra una versione minima degli elenchi di messaggi.
Ad esempio:
const dfMessenger = document.querySelector('df-messenger');
dfMessenger.showMinChat();
Fulfillment
Durante la creazione fulfillment, puoi creare risposte di testo e payload personalizzati di Google. Le risposte testuali vengono utilizzate per le risposte di base dell'agente, e i payload personalizzati vengono utilizzati per risposte dettagliate. Il formato payload personalizzato per tutti i tipi di risposta ha la seguente struttura di base:
{
"richContent": [
[
{
"type": "type-id",
...
},
{
"type": "type-id",
...
}
],
[
{
"type": "type-id",
...
},
{
"type": "type-id",
...
}
]
]
}
Tieni presente che il valore richContent
consente
uno esterno e più interni.
Le risposte all'interno di un array interno sono riunite in un'unica scheda visiva.
Quando un array esterno contiene più array interni,
vengono mostrate più schede, una per ogni array interno.
Le restanti sottosezioni descrivono i vari tipi di risposte che puoi configurare per un payload personalizzato.
Tipo di risposta delle informazioni
Il tipo di risposta informativa è una semplice scheda del titolo su cui gli utenti possono fare clic o toccare.
La seguente tabella descrive i campi:
Nome | Tipo | Descrizione |
---|---|---|
type |
string | Tipo di risposta: "informazioni" |
title |
string | Titolo della scheda |
subtitle |
string | Sottotitolo della carta |
image |
oggetto | Immagine |
image.src |
oggetto | Origine immagine |
image.src.rawUrl |
string | URL pubblico dell'immagine |
actionLink |
string | URL da seguire quando si fa clic sulla scheda |
Ad esempio:
{
"richContent": [
[
{
"type": "info",
"title": "Info item title",
"subtitle": "Info item subtitle",
"image": {
"src": {
"rawUrl": "https://example.com/images/logo.png"
}
},
"actionLink": "https://example.com"
}
]
]
}
Tipo di risposta descrizione
Il tipo di risposta descrizione è una scheda informativa che può avere più righe di testo.
La seguente tabella descrive i campi:
Nome | Tipo | Descrizione |
---|---|---|
type |
string | Tipo di risposta: "description" |
title |
string | Titolo della scheda |
text |
array<string> | Array di stringhe, in cui ogni stringa viene visualizzata su una nuova riga |
Ad esempio:
{
"richContent": [
[
{
"type": "description",
"title": "Description title",
"text": [
"This is text line 1.",
"This is text line 2."
]
}
]
]
}
Tipo di risposta immagine
Il tipo di risposta immagine è una scheda di immagini su cui gli utenti possono fare clic o toccare.
La seguente tabella descrive i campi:
Nome | Tipo | Descrizione |
---|---|---|
type |
string | Tipo di risposta: "immagine" |
rawUrl |
string | URL pubblico dell'immagine |
accessibilityText |
string | Testo alternativo per l'immagine |
Ad esempio:
{
"richContent": [
[
{
"type": "image",
"rawUrl": "https://example.com/images/logo.png",
"accessibilityText": "Example logo"
}
]
]
}
Tipo di risposta del pulsante
Il tipo di risposta del pulsante è un piccolo pulsante con un'icona su cui gli utenti possono fare clic o toccare.
La seguente tabella descrive i campi:
Nome | Tipo | Descrizione |
---|---|---|
type |
string | Tipo di risposta: "button" |
icon |
oggetto | Icona del pulsante |
icon.type |
string | Icona della libreria di icone Material. L'icona predefinita è una freccia |
icon.color |
string | Codice esadecimale del colore |
text |
string | Testo del pulsante |
link |
string | URL da seguire quando viene fatto clic sul pulsante |
event |
oggetto | Evento di agenti conversazionali (Dialogflow CX) che viene attivato quando si fa clic sul pulsante. |
Ad esempio:
{
"richContent": [
[
{
"type": "button",
"icon": {
"type": "chevron_right",
"color": "#FF9800"
},
"text": "Button text",
"link": "https://example.com",
"event": {
"name": ""
}
}
]
]
}
Tipo di risposta dell'elenco
Il tipo di risposta elenco è una scheda con più opzioni tra cui gli utenti possono scegliere.
La risposta contiene un array di tipi di risposta list
e divider
.
La tabella seguente descrive il tipo list
:
Nome | Tipo | Descrizione |
---|---|---|
type |
string | Tipo di risposta: "elenco" |
title |
string | Titolo opzione |
subtitle |
string | Sottotitolo dell'opzione |
event |
oggetto | Evento di agenti conversazionali (Dialogflow CX) che viene attivato quando l'utente fa clic sull'opzione. |
Nella tabella seguente viene descritto il tipo divider
:
Nome | Tipo | Descrizione |
---|---|---|
type |
string | Tipo di risposta: "divider" |
Ad esempio:
{
"richContent": [
[
{
"type": "list",
"title": "List item 1 title",
"subtitle": "List item 1 subtitle",
"event": {
"name": ""
}
},
{
"type": "divider"
},
{
"type": "list",
"title": "List item 2 title",
"subtitle": "List item 2 subtitle",
"event": {
"name": ""
}
}
]
]
}
Tipo di risposta a soffietto
Il tipo di risposta accordion è una scheda di piccole dimensioni su cui l'utente può fare clic o toccare per espandere e visualizzare altro testo.
La seguente tabella descrive i campi:
Nome | Tipo | Descrizione |
---|---|---|
type |
string | Tipo di risposta: "accordion" |
title |
string | Titolo a soffietto |
subtitle |
string | Sottotitolo dell'elenco a scomparsa |
image |
oggetto | Immagine |
image.src |
oggetto | Origine immagine |
image.src.rawUrl |
string | URL pubblico dell'immagine |
text |
string | Testo della sezione a scomparsa |
Ad esempio:
{
"richContent": [
[
{
"type": "accordion",
"title": "Accordion title",
"subtitle": "Accordion subtitle",
"image": {
"src": {
"rawUrl": "https://example.com/images/logo.png"
}
},
"text": "Accordion text"
}
]
]
}
Tipo di risposta del chip di suggerimento
Il tipo di risposta del chip di suggerimento fornisce all'utente finale un elenco di chip di suggerimento cliccabili.
La seguente tabella descrive i campi:
Nome | Tipo | Descrizione |
---|---|---|
type |
string | Tipo di risposta: "chip" |
options |
array<object> | Array di oggetti Opzione |
options[].text |
string | Testo opzione |
options[].image |
oggetto | Immagine opzione |
options[].image.src |
oggetto | Origine immagine opzione |
options[].image.src.rawUrl |
string | Opzione URL pubblico per l'immagine |
options[].link |
string | Link opzione |
Ad esempio:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Chip 1",
"image": {
"src": {
"rawUrl": "https://example.com/images/logo.png"
}
},
"link": "https://example.com"
},
{
"text": "Chip 2",
"image": {
"src": {
"rawUrl": "https://example.com/images/logo.png"
}
},
"link": "https://example.com"
}
]
}
]
]
}
Combinare i tipi di risposta
I singoli elementi dei messaggi avanzati per Dialogflow CX Messenger può essere utilizzata per creare una carta personalizzata in base alle tue esigenze. Di seguito è riportato un esempio in cui vengono utilizzati alcuni degli elementi elencati sopra:
{
"richContent": [
[
{
"type": "image",
"rawUrl": "https://example.com/images/logo.png",
"accessibilityText": "Conversational Agents (Dialogflow CX) across platforms"
},
{
"type": "info",
"title": "Conversational Agents (Dialogflow CX)",
"subtitle": "Build natural and rich conversational experiences",
"actionLink": "https://cloud.google.com/dialogflow/docs"
},
{
"type": "chips",
"options": [
{
"text": "Case Studies",
"link": "https://cloud.google.com/dialogflow/case-studies"
},
{
"text": "Docs",
"link": "https://cloud.google.com/dialogflow/docs"
}
]
}
]
]
}
Debug
Per testare l'agente localmente con Dialogflow CX Messenger:
- Incorpora l'elemento Messenger di Dialogflow CX in una pagina come descritto nella sezione Personalizzazioni HTML.
- Avvia un server HTTP locale per la pagina con una porta specifica.
- Accedi alla pagina all'indirizzo
http://localhost:port_number
.