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 | Obligatoire? | 
|---|---|---|
| variable | Nom de la variable définie comme une des propriétés context. Il peut s'agir d'une variable définie pour une entité ou d'une valeur prédéfinie, telle qu'une chaîne. | Oui | 
| value | Valeur cible, que vous pouvez définir comme littéral ou comme expression référençant 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 illustré dans l'extippet suivant, d'un littéral. Pour des informations supplémentaires sur FreeMarker, voir 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:
      ... Note
La structure de la réponse du moteur d'intention a été modifiée avec la version 21.12. Avant la version 21.12, les données utiles des données utiles
La structure de la réponse du moteur d'intention a été modifiée avec la version 21.12. Avant la version 21.12, les données utiles des données utiles
FullEntityMatches et entityMatches de niveau supérieur de l'objet nlpResult incluaient des entités référencées par des éléments dans des entités composites, mais qui n'étaient pas directement associées à l'intention. À partir de la version 21.12, les données utiles des objets FullEntityMatches et EntityMatches n'incluent plus ces entités (elles se trouvent plutôt dans les objets d'élément d'entité composite de niveau inférieur). Par conséquent, les compétences 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 assurer le fonctionnement continu des compétences - et suivre les meilleures pratiques - référencez les valeurs dans l'entité 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 à zéro.
Ce composant ne nécessite aucune transition, mais vous pouvez, par exemple, faire revenir une transition à un état System.Intent pour permettre aux utilisateurs d'entrer de nouvelles valeurs.
                     
| Propriété | Description | Obligatoire? | 
|---|---|---|
| variableList | Liste séparée par des virgules de variables devant être réinitialisées. Utilisez la notation avec point pour réinitialiser la valeur d'un élément particulier de la variable de l'entité composite, qui est déclarée comme variable de contexte ( expensedans l'exemple suivant). | Oui | 
System.CopyVariables
Copie les valeurs de variable.
Définissez ce composant à l'aide des propriétés 
from et to comme dans l'extrait de code suivant, où la valeur est copiée dans un contexte d'utilisateur :setupUserContext:
    component: "System.CopyVariables"
    properties:
      from: "lastQuestion,lastResponse"
      to: "user.lastQuestion,user.lastResponse"
from et to en tant que listes de variables, 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 variable de la propriété from.
                  System.SetCustomMetrics
Utilisez ce composant pour instrumenter votre compétence 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" Note
Vous pouvez définir plusieurs dimensions dans un seul état et définir jusqu'à six dimensions par compétence.
Vous pouvez définir plusieurs dimensions dans un seul état et définir jusqu'à six dimensions par compétence.
| Attribut | Description | 
|---|---|
| name | Nom de la dimension (50 caractères ou moins) tel qu'il apparaît dans le rapport Mesures personnalisées. Utilisez seulement des lettres, des chiffres 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. 
 | 
Exemple : Définition d'une dimension unique dans plusieurs États
L'extrait de code suivant illustre comment créer 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 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é dans l'exemple ci-dessus, sont nommés dans les transitions.
                     
| États de mesure personnalisés pour la dimension Transfert d'agent | Valeur | Utilisez | 
|---|---|---|
| setInsightsCustomMetrics | Aucun agent nécessaire | Indique le nombre de conversations réussies où des commandes ont été passées sans aide. | 
| setInsightsCustomMetrics1 | Entrée incorrecte | Indique le nombre de conversations où l'entrée non résolue a entraîné le transfert des utilisateurs vers un agent humain. | 
| setInsightsCustomMetrics2 | Nombre maximal d'erreurs | Reflète le nombre de conversations où les utilisateurs ont été dirigés vers des agents humains parce qu'ils ont atteint le m | 
| setInsightsCustomMetrics3 | Agent demandé | Indique le nombre de conversations pour lesquelles les utilisateurs ont demandé un agent humain. | 
Exemple : Suivi des mesures sur la rétroaction d'utilisateur
Pour suivre les mesures de rétroaction, 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"