IBM Cloud Docs
Definire le risposte utilizzando l'editor JSON

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, vedi Aggiunta di risposte dell'assistente.

Per modificare una risposta utilizzando l'editor JSON, fai clic sull'icona Passa a editor JSON icona Passa a editor JSON nel campo Assistant dice. L'editor JSON mostra come la risposta viene definita dietro le quinte e inviata al canale.

Formato JSON generico

Se apri l'editor JSON su una nuova risposta vuota, vedi la seguente struttura di base:

{
  "generic": []
}

La proprietà generic definisce un array di risposte che vengono inviate al canale quando viene eseguito il passo. Il termine generico si riferisce al fatto che queste risposte vengono definite utilizzando un formato JSON generico che non è specifico di alcun canale. Questo formato può contenere vari tipi di risposta supportati da più integrazioni e può essere implementato anche da un'applicazione client personalizzata che utilizza l'API REST.

L'array generic per un passo può contenere più risposte e ciascuna risposta ha un tipo di risposta. Un passo di base che invia una risposta di testo semplice di solito include solo una singola risposta con il tipo di risposta text. Tuttavia, sono disponibili molti altri tipi di risposta, che supportano contenuti multimediali e interattivi, oltre al controllo sul comportamento di alcune integrazioni di canali.

Anche se il formato generic può essere inviato a qualsiasi integrazione del canale, 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 Riferimento ai tipi di risposta.

In fase di runtime, l'output con più risposte potrebbe essere suddiviso in più payload di messaggi. L'integrazione del canale invia questi messaggi al canale in sequenza, ma è responsabilità del canale consegnare questi messaggi all'utente; ciò può essere influenzato da problemi di rete o del server.

Aggiunta di risposte

Per specificare una risposta nell'editor JSON, inserire gli oggetti JSON appropriati nel campo generic della risposta del passo. Il seguente esempio mostra l'output con due risposte di diversi tipi (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, consultare Tipi di risposta.

Indirizzamento di integrazioni specifiche

Se intendi distribuire il tuo assistente a più canali, potresti voler inviare risposte diverse a diverse integrazioni in base alle funzionalità di ogni canale. La proprietà channels dell'oggetto risposta generico fornisce un modo per eseguire questa operazione.

Questo meccanismo è utile se il tuo flusso di conversazione non cambia in base all'integrazione in uso e se non puoi sapere in anticipo a quale integrazione viene inviata la risposta al runtime. Utilizzando channels, puoi definire un singolo passo che supporta tutte le integrazioni, pur personalizzando l'output per ogni canale. Ad esempio, potresti voler personalizzare la formattazione del testo o anche 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 avvia il transfer che dal canale di destinazione, è possibile utilizzare channels per definire le risposte elaborate dall'uno o dall'altro.

Per specificare le integrazioni per cui è prevista una risposta, includere l'array channels facoltativo come parte dell'oggetto di risposta. Tutti i tipi di risposta supportano l'array channels. Questo array contiene uno o più oggetti utilizzando la seguente sintassi:

{
  "channel": "<channel_name>"
}

Il valore di <channel_name> può essere una delle seguenti stringhe:

  • chat: chat Web
  • voice_telephony: telefono
  • text_messaging: SMS
  • slack: Slack
  • facebook: Facebook Messenger
  • whatsapp: WhatsApp

Il seguente esempio mostra l'output del passo contenente due risposte: una destinata all'integrazione della chat web e una destinata alle integrazioni 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 ulteriori informazioni sui tipi di risposta e sulle integrazioni supportate per i tipi di risposta JSON, consulta Riferimento ai tipi di risposta.