Definire le risposte utilizzando l'editor JSON
In alcune situazioni, potrebbe essere necessario definire le risposte dell'assistente utilizzando l'editor JSON.
Per ulteriori informazioni, vedere Aggiunta di risposte dell'assistente.
Per modificare una risposta utilizzando l'editor JSON, clicca sull'icona "Passa all'editor
JSON" nel campo "L'Assistente dice ". L'editor JSON mostra come la risposta viene definita dietro le quinte e inviata al canale.
Formato JSON generico
Se si apre l'editor JSON su una nuova risposta vuota, si vede la seguente struttura di base:
{
"generic": []
}
La proprietà 'generic definisce un array di risposte che vengono inviate al canale quando il passo viene eseguito. Il termine _generico_ si riferisce al fatto che queste risposte sono definite utilizzando un formato JSON generico che non è specifico di alcun canale. Questo formato può ospitare vari tipi di risposta supportati da più integrazioni e può anche essere implementato da un'applicazione client personalizzata che utilizza l'API REST.
L'array generic di un passaggio può contenere più risposte e ciascuna risposta ha un _tipo di risposta_. Un passaggio di base che invia una semplice risposta di testo include in genere una sola risposta con il tipo di risposta text. Tuttavia, sono disponibili molti altri tipi di risposta, che supportano contenuti multimediali e interattivi, oltre al controllo del comportamento di alcune integrazioni di canale.
Sebbene il formato " generic possa essere inviato a qualsiasi integrazione di canali, non tutti i canali supportano tutti i tipi di risposta, quindi una particolare risposta potrebbe essere ignorata o gestita in modo diverso da alcuni canali. Per ulteriori informazioni, vedere Supporto dell'integrazione dei canali per i tipi di risposta.
In fase di esecuzione, l'output con più risposte potrebbe essere suddiviso in più payload di messaggio. L'integrazione del canale invia questi messaggi al canale in sequenza, ma è responsabilità del canale consegnare questi messaggi all'utente; questo può essere influenzato da problemi di rete o di server.
Aggiunta di risposte
Per specificare una risposta nell'editor JSON, inserire gli oggetti JSON appropriati nel campo 'generic della risposta del passo. L'esempio seguente mostra l'output con due risposte di tipo diverso (testo e immagine):
{
"generic":[
{
"response_type": "text",
"values": [
{
"text_expression": {
"concat": [
{
"scalar": "This is a text response."
}
]
}
}
]
},
{
"response_type": "image",
"source": "https://example.com/image.jpg",
"title": "Example image",
"description": "This is an image response."
}
]
}
Per ulteriori informazioni, vedere Tipi di risposta.
Incentrarsi su integrazioni specifiche
Se si prevede di distribuire l'assistente su più canali, si potrebbe voler inviare risposte diverse a integrazioni diverse in base alle capacità di ciascun canale. La proprietà 'channels dell'oggetto risposta generico fornisce un modo per farlo.
Questo meccanismo è utile se il flusso di conversazione non cambia in base all'integrazione in uso e se non si può sapere in anticipo a quale integrazione viene inviata la risposta in fase di esecuzione. Utilizzando 'channels, è possibile definire un singolo passo che supporta tutte le integrazioni, pur personalizzando l'output per ciascun canale. Ad esempio, si potrebbe voler personalizzare la formattazione del testo o persino inviare tipi di risposta diversi, in base a ciò che il canale supporta.
L'uso di " channels è utile insieme al tipo di risposta " channel_transfer. Poiché l'output del messaggio viene elaborato sia dal canale che ha avviato il 'transfer sia dal canale di destinazione, si può usare 'channels per definire risposte che vengono elaborate da uno o dall'altro.
Per specificare le integrazioni a cui è destinata una risposta, includere l'array opzionale 'channels come parte dell'oggetto risposta. Tutti i tipi di risposta supportano l'array 'channels. Questa matrice contiene uno o più oggetti utilizzando la seguente sintassi:
{
"channel": "<channel_name>"
}
Il valore di '<channel_name> può essere una qualsiasi delle seguenti stringhe:
chat: Chat webvoice_telephony: Telefonotext_messaging: SMSslack: Slackfacebook: Facebook Messengerwhatsapp: WhatsApp
L'esempio seguente mostra l'output del passo che contiene due risposte: una destinata all'integrazione della chat web e una destinata alle integrazioni di Slack e Facebook.
{
"generic": [
{
"response_type": "text",
"channels": [
{
"channel": "chat"
}
],
"values": [
{
"text_expression": {
"concat": [
{
"scalar": "This output is intended for the <strong>web chat</strong>."
}
]
}
}
]
},
{
"response_type": "text",
"channels": [
{
"channel": "slack"
},
{
"channel": "facebook"
}
],
"values": [
{
"text_expression": {
"concat": [
{
"scalar": "This output is intended for either Slack or Facebook."
}
]
}
}
]
}
]
}
Se l'array 'channels è presente, deve contenere almeno un oggetto canale. Qualsiasi integrazione non elencata ignora la risposta. Se l'array 'channels è assente, tutte le integrazioni gestiscono la risposta.
Tipi di risposta
È possibile configurare diversi tipi di risposte utilizzando JSON. Per saperne di più sui tipi di risposta e sulle integrazioni supportate per i tipi di risposta JSON, vedere Riferimento ai tipi di risposta.