IBM Cloud Docs
Définir des réponses à l'aide de l'éditeur JSON

Définir des réponses à l'aide de l'éditeur JSON

Dans certaines situations, vous devrez peut-être définir les réponses de votre assistant à l'aide de l'éditeur JSON. Pour plus d'informations, voir Ajout de réponses d'assistant.

Pour modifier une réponse à l'aide de l'éditeur JSON, cliquez sur l'icône Basculer vers l'éditeur JSON Basculer vers l'éditeur JSON dans le champ Assistant says. L'éditeur JSON montre comment la réponse est définie en arrière-plan et envoyée au canal.

Format JSON générique

Si vous ouvrez l'éditeur JSON sur une nouvelle réponse vide, la structure de base suivante s'affiche :

{
  "generic": []
}

La propriété generic définit un tableau de réponses qui sont envoyées au canal lorsque l'étape est exécutée. Le terme générique fait référence au fait que ces réponses sont définies en utilisant un format JSON générique qui n'est pas spécifique à un canal. Ce format peut prendre en charge différents types de réponse pris en charge par plusieurs intégrations et peut également être implémenté par une application cent personnalisée qui utilise l'API REST.

Le tableau generic d'une étape peut contenir plusieurs réponses et chaque réponse a un type de réponse. Une étape de base qui envoie une réponse textuelle simple n'inclut généralement qu'une seule réponse avec le type de réponse text. Cependant, de nombreux autres types de réponses sont disponibles, prenant en charge le contenu multimédia et interactif, ainsi que le contrôle du comportement de certaines intégrations de canaux.

Bien que le format generic puisse être envoyé à n'importe quel canal d'intégration, tous les canaux ne prennent pas en charge tous les types de réponse, de sorte qu'une réponse particulière peut être ignorée ou traitée différemment par certains canaux. Pour plus d'informations, voir la référence des types de réponses.

Au moment de l'exécution, les résultats comportant plusieurs réponses peuvent être divisés en plusieurs messages. L'intégration du canal envoie ces messages au canal dans l'ordre, mais c'est au canal qu'il incombe de délivrer ces messages à l'utilisateur, ce qui peut être affecté par des problèmes de réseau ou de serveur.

Ajout de réponses

Pour spécifier une réponse dans l'éditeur JSON, insérez les objets JSON appropriés dans la zone generic de la réponse de l'étape. L'exemple suivant montre une sortie avec deux réponses de types différents (un texte et une image):

{
  "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."
    }
  ]
}

Pour plus d'informations, voir Types de réponses.

Cibler des intégrations spécifiques

Si vous prévoyez de déployer votre assistant sur plusieurs canaux, vous pouvez envoyer différentes réponses à différentes intégrations en fonction des capacités de chaque canal. La propriété channels de l'objet de réponse générique fournit un moyen de le faire.

Ce mécanisme est utile si votre flux de conversation ne change pas en fonction de l'intégration utilisée et si vous ne pouvez pas savoir à l'avance à quelle intégration la réponse est envoyée au moment de l'exécution. En utilisant channels, vous pouvez définir une seule étape qui prend en charge toutes les intégrations, tout en personnalisant la sortie de chaque canal. Par exemple, vous souhaiterez peut-être personnaliser la mise en forme du texte, ou même envoyer différents types de réponse, en fonction de ce que le canal prend en charge.

L'utilisation de channels est utile avec le type de réponse channel_transfer. Comme la sortie du message est traitée à la fois par le canal qui initie le transfer et par le canal cible, vous pouvez utiliser channels pour définir des réponses qui sont traitées par l'un ou par l'autre.

Pour spécifier les intégrations pour lesquelles une réponse est destinée, incluons le tableau channels facultatif dans le cadre de l'objet de réponse. Tous les types de réponse prennent en charge le tableau channels. Ce tableau contient un ou plusieurs objets en utilisant la syntaxe suivante :

{
  "channel": "<channel_name>"
}

La valeur de <channel_name> peut être l'une des chaînes suivantes:

  • chat: discussion Web
  • voice_telephony: Téléphone
  • text_messaging: SMS
  • slack: Slack
  • facebook: Facebook Messenger
  • whatsapp: WhatsApp

L'exemple suivant montre une sortie d'étape de dialogue contenant deux réponses : l'une destinée à l'intégration de discussion Web et l'autre destinée aux intégrations Slack et 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."
              }
            ]
          }
        }
      ]
    }
  ]
}

Si le tableau channels est présent, il doit contenir au moins un objet de canal. Toute intégration non répertoriée ignore la réponse. Si le tableau channels est absent, toutes les intégrations gèrent la réponse.

Types de réponse

Vous pouvez configurer différents types de réponse à l'aide de JSON. Pour en savoir plus sur les types de réponse et les intégrations prises en charge pour les types de réponse JSON, voir Response types reference.