Charges utiles personnalisées des agents virtuels

La charge utile personnalisée pour Dialogflow CX vous permet d'améliorer l'expérience de votre agent virtuel au-delà des interactions et des discussions en texte brut. En utilisant des charges utiles personnalisées dans Dialogflow CX, vous pouvez configurer votre agent virtuel pour qu'il affiche des réponses et des citations personnalisées.

Types de messages de réponse personnalisés

Les réponses personnalisées vous permettent d'afficher les types de messages suivants :

  • Texte

  • Boutons intégrés

  • Boutons qui collent

  • Images

  • Vidéos

  • Documents

  • Vues complexes (combinaison d'un ou plusieurs types de messages)

Les actions personnalisées permettent aux agents virtuels d'effectuer les actions suivantes :

  • Escalades aux agents humains

  • Transferts planifiés vers des agents humains

  • Mettre fin à la session d'assistance

Charge utile Contact Center AI Platform (CCAI Platform)

À utiliser dans Dialogflow CX comme charge utile personnalisée. L'exemple suivant illustre le format des réponses dans le SDK Web à l'aide de 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"
          }
        ]
      }
    ]
  }
}

Format des messages de chat pour la charge utile personnalisée

Utilisé avec le SDK CCAI Platform pour afficher une interface utilisateur appropriée. Il est identique au format de charge utile personnalisée Dialogflow CX, mais ne comporte pas de champ "ujet" à la racine.

Pour en savoir plus, consultez les exemples suivants.

Exemples

Les sections suivantes incluent des exemples de charges utiles pouvant être utilisées dans Dialogflow CX.

Texte

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

Escalade vers la même file d'attente

Par agent virtuel :

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

Par utilisateur final :

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

La valeur escalation_reason est indiquée dans les tableaux de bord.

Escalade vers la file d'attente ciblée

Par agent virtuel :

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

Par utilisateur final :

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

La valeur escalation_reason est indiquée dans les tableaux de bord.

Terminer la conversation

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

Bouton intégré

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

Exemple

Exemple de bouton intégré

Bouton fixe

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

Exemple

Exemple de bouton fixe

Vue Image

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

Vue de la vidéo

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

Affichage du document

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

Vue complexe

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

Configurer une charge utile personnalisée dans Dialogflow

Pour savoir comment configurer votre charge utile personnalisée à l'aide de Dialogflow, consultez les ressources Réponses de charge utile personnalisée (Dialogflow ES) ou Charge utile personnalisée (Dialogflow CX).

Pour en savoir plus, consultez Variables de session personnalisées pour la gestion des charges utiles personnalisées.

Transfert d'un agent virtuel vers un numéro de téléphone ou un point de terminaison SIP

Vous pouvez utiliser des charges utiles personnalisées Dialogflow CX pour transférer des appels depuis un agent virtuel vocal vers le numéro de téléphone ou le point de terminaison SIP que vous spécifiez. Si la connexion aboutit, l'agent virtuel est retiré de l'appel, qui se poursuit. Si la connexion échoue, un message d'échec du transfert est lu et l'appel se poursuit avec l'agent virtuel.

Les transferts d'agents virtuels fonctionnent pour les appels internes et externes. Les transferts d'agents virtuels sont enregistrés en tant que Planned Transfers dans les rapports.

Transférer un appel vers un numéro de téléphone

Pour transférer un appel d'un agent virtuel vers un numéro de téléphone, utilisez une charge utile Dialogflow CX semblable à l'exemple de code suivant :

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

Transférer un appel vers un point de terminaison SIP

Pour transférer un appel d'un agent virtuel vers un point de terminaison SIP de manière standard, utilisez une charge utile Dialogflow CX semblable à l'exemple de code suivant :

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

Transférer un appel vers un point de terminaison SIP à l'aide de la méthode SIP REFER

Pour transférer un appel d'un agent virtuel vers un point de terminaison SIP à l'aide de la méthode SIP REFER, utilisez une charge utile Dialogflow CX semblable à l'exemple de code suivant. Avec la méthode SIP REFER, vous pouvez transmettre des informations utiles à l'aide des propriétés d'en-tête.

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

Variables de session personnalisées pour la gestion des charges utiles personnalisées

Utilisez des variables de session personnalisées pour capturer les valeurs de la réponse à l'intention et de la réponse de l'utilisateur final, puis collectez-les toutes et importez-les dans le CRM sous forme de commentaire. Pour en savoir plus, consultez Charge utile Dialogflow pour les variables de session personnalisées.

Capturer la réponse de l'utilisateur final

Flow

  1. La plate-forme CCAI demande la réponse à Dialogflow CX.

    Dialogflow CX peut effectuer un rappel au serveur du client par le biais du fulfillment.

    Le serveur du client est censé remplir le champ session_variable dans la réponse.

  2. Dialogflow CX renvoie la réponse avec la charge utile personnalisée, y compris le champ session_variable avec capture_target = end_user_response.

  3. Un utilisateur final envoie un message.

  4. CCAI Platform conserve le message de l'utilisateur final envoyé à l'étape précédente.

  5. La plate-forme CCAI publiera toutes les variables de session capturées dans la session de chat dans le CRM sous forme de commentaire lorsqu'un agent virtuel quittera un chat.

Format de charge utile personnalisé

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

Le message de l'utilisateur final qui suit immédiatement l'envoi d'une charge utile personnalisée par un agent virtuel sera capturé en tant que variable de session avec la clé "key".

Capturer à partir de la réponse d'intent

Flow

  1. La plate-forme CCAI demande la réponse à Dialogflow CX.

    1. Dialogflow CX peut le rappeler au serveur du client par le biais de l'exécution.

    2. Le serveur du client est censé remplir le champ session_variable dans la réponse.

  2. Dialogflow CX renvoie la réponse avec la charge utile personnalisée, y compris le champ session_variable avec capture_target = "payload".

  3. Le serveur CCAI Platform conserve l'objet payload à l'étape 2.

La plate-forme CCAI publiera toutes les variables de session qui ont été capturées dans la session de chat dans le CRM sous forme de commentaire lorsqu'un agent virtuel quitte un chat.

Format de charge utile personnalisé

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

Remplacez les éléments suivants :

  • STATUS : état de la commande

  • ORDER_ID : ID de la commande

  • PERSONAL_ID : identifiant de l'utilisateur final.

  • INVISIBLE_TO_AGENT : tableau des propriétés que vous ne souhaitez pas voir apparaître dans l'adaptateur d'agent. Par exemple, une valeur "personal_id" ici empêcherait la propriété personal_id de s'afficher dans l'adaptateur d'agent. Pour en savoir plus, consultez Afficher les variables de session de l'agent virtuel.

  • DISPLAY_ORDER_IN_ADAPTER : tableau de propriétés permettant de spécifier l'ordre dans lequel les variables de session doivent apparaître dans l'adaptateur d'agent et dans les fiches CRM. Pour en savoir plus, consultez Afficher les variables de session de l'agent virtuel.

Importation de variables de session personnalisées dans le CRM

Pour chaque variable de session, le serveur est censé collecter toutes les variables de session en interne, puis les importer dans le CRM lorsqu'un agent virtuel quitte la session.

Exemple de message 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

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

Exemple de scénario

Voici un exemple de conversation qui montre les différentes étapes et les messages échangés entre l'agent virtuel et l'utilisateur final.

Étape 1

Message de chat de l'agent virtuel

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

Réponse d'intention (charge utile personnalisée)

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

Variable de session capturée

Aucun

Étape 2

Message de chat de l'utilisateur final

Click "Cancel an order" button.

Variable de session capturée

Aucun

Étape 3

Message de chat de l'agent virtuel

Can you provide the order id please

Réponse d'intention (charge utile personnalisée)

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

Variable de session capturée

Aucun

Étape 4

Message de chat de l'utilisateur final

Order id is #12345

Variable de session capturée

order_id: "Order ID is #12345"

Étape 5

Message de chat de l'agent virtuel

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

Réponse d'intention (charge utile personnalisée)

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

Variable de session capturée

order_id: "#12345", order_status: canceled

Étape 6

Message de chat de l'utilisateur final

I would like to speak with a human agent.

Étape 7

Message de chat de l'agent virtuel

Virtual Agent is left from the conversation.

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

Importation de variables de session personnalisées dans le CRM

Dans le scénario précédent, les commentaires suivants sont publiés dans la demande 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

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

Configurer les fiches de contenu

Les fiches de contenu affichent des contenus concis et visuellement attrayants sous forme de fiches, ce qui simplifie les interactions pour l'utilisateur final qui souhaite exploiter les informations présentées. Vous pouvez créer des cartes de contenu à l'aide de Dialogflow CX et les personnaliser avec des titres, des sous-titres et un corps de texte.

L'exemple suivant utilise des fiches de contenu pour afficher les options de restaurant à l'utilisateur final :

Exemple de carte de contenu

Propriétés des fiches de contenu

Nom de la propriété Description Obligatoire Type
title Titre de la fiche. Oui Chaîne
subtitle Sous-titre de la fiche. Non Chaîne
body Description de la fiche de contenu. Oui Chaîne
link Un lien vers une page Web ou un lien profond. Le SDK utilisera les fonctionnalités de l'OS pour l'ouvrir. Non Chaîne
event_params Dictionnaire contenant des informations supplémentaires sur l'événement de clic. Le SDK l'utilisera. Non Dictionnaire

Charge utile Dialogflow CX : ajouter la validation et accepter le type de carte de contenu

Un type de charge utile Dialogflow CX spécifique gère les cartes de contenu lorsque les messages des utilisateurs finaux sont reçus via le serveur de chatbot. Voici un exemple de charge utile Dialogflow CX :

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

Informations sur les fiches de contenu dans l'historique des discussions CRM

Les informations sur le titre de la fiche sont enregistrées pour suivre les fiches sur lesquelles l'utilisateur final a cliqué. Ces informations sont enregistrées dans l'historique des discussions du CRM.

Dans l'exemple suivant, l'historique des messages de chat dans le CRM affiche l'interaction avec la fiche de contenu.

[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

Enregistrer les événements de clic sur le titre des fiches de contenu

Pour enregistrer le moment où un utilisateur final clique sur le titre d'une fiche de contenu, utilisez le format suivant pour capturer l'événement :

{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.

Créer un événement de clic sur une fiche de contenu à l'aide de l'API End User Event

Lorsqu'un utilisateur final clique sur le titre d'une fiche de contenu, vous pouvez enregistrer cet événement en envoyant une requête POST à l'URL spécifiée, ainsi que le titre de la fiche sur laquelle l'utilisateur a cliqué.

Point de terminaison de l'API : POST /api/v2/chat/:id/end_user_event

Utilisation : créez un événement de clic sur une fiche de contenu.

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

Méthode : POST

Paramètres :

Champ Type Description
event objet
event.name string Pour les événements de clic sur les cartes de contenu, utilisez content_card_clicked.
event.payload objet
event.payload.title string Saisissez le titre de la fiche sur laquelle l'utilisateur a cliqué.
(Facultatif) end_user_name string Saisissez le nom de l'utilisateur final. Si vous ne renseignez pas ce champ, le nom sera récupéré à partir du CRM.

Exemple de requête :

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

Réponse : Status: 202 Accepted