Composants de variable

Il s'agit des composants disponibles dans la catégorie Variable de l'éditeur de flux de dialogue basé sur YAML.

System.SetVariable

Le composant System.SetVariable définit la valeur d'une variable prédéfinie.

Propriété Description Requis ?
variable Nom de la variable définie comme l'une des propriétés context. Il peut s'agir d'une variable définie pour une entité ou d'une valeur prédéterminée (comme une chaîne). Oui
value Valeur cible, que vous pouvez définir en tant que littéral ou en tant qu'expression faisant référence à une autre variable. Oui
Vous pouvez également définir une valeur prédéfinie pour une variable à l'aide d'une expression Apache FreeMarker ou, comme indiqué dans le fragment de code suivant, un littéral. Vous trouverez plus d'informations sur FreeMarker ici.
setOAuthRedirectURL:
    component: "System.SetVariable"
    properties:
      variable: "redirectURL"
      value: "https://thatcompany.io/connectors/v2/tenants/5c824-45fd-b6a2-8ca/listeners/facebook/channels/78B5-BD58-8AF6-F54B141/redirect"
    transitions:
      ...
Reportez-vous à System.OAuthAccountLink.
Remarque

La structure de la réponse du moteur d'intentions a été modifiée avec la version 21.12. Avant la version 21.12, la charge utile des charges utiles de niveau supérieur FullEntityMatches et entityMatches dans l'objet nlpResult incluait des entités référencées par des éléments dans des entités de conteneur composite, mais qui n'étaient pas directement associées à l'intention. A partir de la version 21.12, les charges utiles des objets FullEntityMatches et EntityMatches n'incluent plus ces entités (elles se trouvent à la place dans les objets d'élément de conteneur composite de niveau inférieur). Par conséquent, les briques mises à niveau vers la version 21.12 qui utilisent System.SetVariable pour définir des variables à l'aide des résultats contenus dans l'objet nlpResult à l'aide d'une syntaxe telle que iResult.value.entityMatches peuvent échouer car les valeurs d'entité ne sont plus présentes. Pour garantir le fonctionnement continu des briques et suivre les meilleures pratiques, référencez les valeurs dans le conteneur composite (<variable_name>.value.<item_name>) et utilisez les composants System.CommonResponse ou SystemResolveEntities au lieu du composant System.SetVariable.

System.ResetVariables

Ce composant réinitialise les valeurs des variables sur NULL.

Ce composant ne requiert aucune transition, mais vous pouvez par exemple définir une transition vers System.Intent pour permettre aux utilisateurs de saisir de nouvelles valeurs.
Propriété Description Requis ?
variableList Liste des variables, séparées par des virgules, devant être réinitialisées.
Utilisez la syntaxe par points pour réinitialiser la valeur d'un élément de conteneur spécifique dans le conteneur composite, déclaré en tant que variable de contexte (expense dans l'exemple suivant).
resetExpenseType:
  component: "System.ResetVariables"
  properties:
    variableList: "expense.Type"
  transitions:
    next: "resolveExpense"
Oui

System.CopyVariables

Copie les valeurs de variable.

Définissez ce composant à l'aide des propriétés from et to comme dans le fragment de code suivant, où la valeur est copiée dans une variable de contexte utilisateur :
setupUserContext:
    component: "System.CopyVariables"
    properties:
      from: "lastQuestion,lastResponse"
      to: "user.lastQuestion,user.lastResponse"
Ce composant a besoin de ces deux propriétés, mais leurs définitions ne doivent pas nécessairement être mises en miroir. Vous pouvez définir from et to en tant que listes de variables, mais vous pouvez également définir from avec une seule variable et to en tant que liste. Si vous définissez une propriété to supplémentaire, elle hérite de la valeur de la variable de la propriété from en cours.

System.SetCustomMetrics

Utilisez ce composant pour déterminer votre brique pour le rapport Mesures personnalisées. Par exemple :
  insights:
    component: "System.SetCustomMetrics"
    properties:
      dimensions:
       - name: "Pizza Size"
         value: "${size}"
       - name: "Pizza Type"
         value: "${type}"
       - name: "Crust Type"
         value: "${crust}"
    transitions:
      next: "summarizeOrder"
Remarque

Vous pouvez définir plusieurs dimensions dans un seul état et définir jusqu'à six dimensions par brique.
Attribut Description
name Nom de la dimension (50 caractères ou moins) tel qu'il apparaît dans le rapport Mesures personnalisées. Utilisez uniquement des lettres, des nombres et des espaces. N'utilisez pas de caractères spéciaux.
value Vous pouvez définir la valeur de dimension en tant qu'expression FreeMarker ou chaîne de texte.
  • Utilisez des expressions FreeMarker pour référencer une variable context déclarée pour une entité. Par exemple, pour une variable crust: "PizzaCrust", la syntaxe est "${crust}". La syntaxe permettant de référencer un élément d'entité de liste de valeurs dans un conteneur composite est "${<composite bag entity name>.value.<item name>}". Par exemple, "${pizza.value.Crust}".
  • Utilisez une chaîne pour suivre une valeur qui n'est pas définie par des variables dans la définition du flux de dialogue, mais qui suit à la place d'autres aspects de l'utilisation des briques.
    livechatTransfer:
        component: "System.AgentConversation"
        properties:
    ...
        transitions:
          actions:
            agentLeft: "livechatEndPrompt"
            expired: "livechatEndPrompt"
            error: "livechatHandleNoTransfer"
          next: "setInsightsCustomMetrics"
    
      setInsightsCustomMetrics:
        component: "System.SetCustomMetrics"
        properties:
          dimensions: 
          - name: "Agent Transfer"
            value: "transferred"
    ...
    
      setInsightsCustomMetrics2:
        component: "System.SetCustomMetrics"
        properties:
          dimensions: 
          - name: "Agent Transfer"
            value: "not transferred"
        transitions:
           return: "done"

Exemple : définition d'une dimension unique dans plusieurs états

Le fragment de code suivant illustre la création d'une dimension unique (Agent Transfer) à partir d'une série d'états System.SetCustomMetrics.
states:
  intent:
    component: "System.Intent"
    properties:
      variable: "iResult"
      optionsPrompt: "Do you want to"      
    transitions:
      actions:
        OrderPizza: "startOrderPizza"
        WelcomePizza: "startWelcome"
        LiveChat: "setInsightsCustomMetrics3"
        unresolvedIntent: "startUnresolved"

...

  setInsightsCustomMetrics:
    component: "System.SetCustomMetrics"
    properties:
      dimensions: 
      - name: "Pizza Size"
        value: "${pizza.value.PizzaSize}"
      - name: "Pizza Type"
        value: "${pizza.value.PizzaTopping}"
      - name: "Pizza Crust"
        value: "${pizza.value.PizzaDough}"
      - name: "Agent Transfer"
        value: "No Agent Needed"
    transitions:
      next: "showPizzaOrder"

...
   
  startUnresolved:
    component: "System.Output"
    properties:
      text: "I didn't that get that. Let me connect you with support."
      keepTurn: true 
    transitions:
      next: "setInsightsCustomMetrics1"
      
### Transfer because of unresolved input ####

  setInsightsCustomMetrics1:
    component: "System.SetCustomMetrics"
    properties:
      dimensions: 
      - name: "Agent Transfer"
        value: "Bad Input"
    transitions:
      next: "getAgent"

  maxError:
    component: "System.Output"
    properties:
      text: "OK, let's connect you with someone to help"
      keepTurn: true
    transitions:
      next: "setInsightsCustomMetrics2"
      
### Transfer because of Max Error"  ####

  setInsightsCustomMetrics2:
    component: "System.SetCustomMetrics"
    properties:
      dimensions: 
      - name: "Agent Transfer"
        value: "Max Errors"
    transitions:
      next: "getAgent"
      
### Transfer because of direct request ####

  setInsightsCustomMetrics3:
    component: "System.SetCustomMetrics"
    properties:
      dimensions: 
      - name: "Agent Transfer"
        value: "Agent Requested"
    transitions:
      next: "getAgent"

  getAgent:
    component: "System.AgentInitiation"

... 

Chaque état System.SetCustomMetrics définit une catégorie différente pour la dimension de transfert d'agent. Le rapport Mesures personnalisées enregistre les données de ces mesures lorsque ces états sont inclus dans un flux d'exécution et, comme illustré par l'exemple ci-dessus, sont nommés dans les transitions.

Etats de mesure personnalisés pour la dimension de transfert d'agent Valeur Utilisez
setInsightsCustomMetrics Aucun agent requis Reflète le nombre de conversations réussies dans lesquelles des prescriptions ont été saisies sans aide.
setInsightsCustomMetrics1 Saisie incorrecte Reflète le nombre de converstaions où les entrées non résolues ont entraîné le transfert des utilisateurs vers un agent physique.
setInsightsCustomMetrics2 Nombre maximal d'erreurs Reflète le nombre de conversations où les utilisateurs ont été dirigés vers des agents en direct parce qu'ils ont atteint le m
setInsightsCustomMetrics3 Agent demandé Reflète le nombre de conversations dans lesquelles les utilisateurs ont demandé un agent physique.

Exemple : suivi des mesures sur les commentaires des utilisateurs

Pour suivre les mesures de retour, ajoutez les états System.SetCustomMetrics correspondants aux états de transition System.Feedback. Par exemple :
...
  getUserFeedback:
    component: "System.Feedback"
    properties: 
      threshold: 2
      maxRating: 5
      enableTextFeedback: true
      footerText: 
    transitions:
      actions:
        above: "PositiveFeedbackMetrics"
        below: "NegativeFeedbackMetrics"
        cancel: "CancelFeedbackMetrics"
        
        
  PositiveFeedbackMetrics:
    component: "System.SetCustomMetrics"
    properties:
      dimensions: 
      - name: "Feedback Type"
        value: "Positive"
    transitions:
      next: "positiveFeedback"        
        
        
  positiveFeedback:
    component: "System.Output"
    properties:
      text: "Thank you for the ${system.userFeedbackRating.value}-star rating."
    transitions:
      return: "done"
      
  NegativeFeedbackMetrics:
    component: "System.SetCustomMetrics"
    properties:
      dimensions: 
      - name: "Feedback Type"
        value: "Negative"
    transitions:
      next: "negativeFeedback"
      
  negativeFeedback:
    component: "System.Output"
    properties:
      text: "Thank you for your feedback."
    transitions:
      return: "done"
      
  CancelFeedbackMetrics:
    component: "System.SetCustomMetrics"
    properties:
      dimensions: 
      - name: "Feedback Type"
        value: "Canceled"   
    transitions:
      next: "cancelFeedback"        
      
  cancelFeedback:
    component: "System.Output"
    properties:
      text: "Maybe next time."
    transitions:
      return: "done"