Componentes de variables

Estos son los componentes que están disponibles en la categoría Variable del editor de flujo de diálogo basado en YAML.

System.SetVariable

El componente System.SetVariable define el valor de una variable predefinida.

Propiedad Descripción ¿Obligatoria?
variable Nombre de la variable que se define como una de las propiedades context. Puede ser una variable definida para una entidad o un valor predeterminado, como una cadena.
value Valor de destino, que se puede definir como un literal o como una expresión que hace referencia a otra variable.
También puede definir un valor predeterminado para una variable mediante una expresión FreeMarker de Apache o, como se muestra en el siguiente fragmentos, un literal. Puede obtener más información sobre FreeMarker aquí.
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:
      ...
Consulte System.OAuthAccountLink.
Nota

La estructura de la respuesta del motor de intenciones ha cambiado con la versión 21.12. Antes de la versión 21.12, la carga útil de las cargas útiles FullEntityMatches y entityMatches de nivel superior en el objeto nlpResult incluía entidades a las que se hacía referencia en elementos de entidades de bolsa compuesta, pero que no estaban asociadas directamente con la intención. A partir de la versión 21.12, las cargas útiles de los objetos FullEntityMatches y EntityMatches ya no incluyen estas entidades (en su lugar, se pueden encontrar dentro de los objetos de elementos de bolsa compuesta de nivel inferior). Como resultado, las aptitudes actualizadas a la versión 21.12 que utilizan System.SetVariable para definir variables mediante los resultados mantenidos en el objeto nlpResult con sintaxis como iResult.value.entityMatches pueden fallar porque los valores de entidad ya no están presentes. Para garantizar el funcionamiento continuo de las aptitudes, y seguir las mejores prácticas, haga referencia a los valores de la bolsa compuesta (<variable_name>.value.<item_name>) y utilice los componentes System.CommonResponse o SystemResolveEntities en lugar del componente System.SetVariable.

System.ResetVariables

Este componente restablece los valores de las variables a nulos.

Este componente no necesita ninguna transición, pero puede, por ejemplo, devolver una transición al estado System.Intent para permitir a los usuarios introducir nuevos valores.
Propiedad Descripción ¿Obligatoria?
variableList Lista separada por comas de las variables que se deben restablecer.
Utilice la notación de puntos para restablecer el valor de un elemento de bolsa específico en la bolsa compuesta, que se ha declarado como una variable de contexto (expense en el siguiente ejemplo).
resetExpenseType:
  component: "System.ResetVariables"
  properties:
    variableList: "expense.Type"
  transitions:
    next: "resolveExpense"

System.CopyVariables

Copia los valores de la variable.

Defina este componente mediante las propiedades from y to, como en el siguiente fragmento, donde el valor se copia en un contexto de usuario:
setupUserContext:
    component: "System.CopyVariables"
    properties:
      from: "lastQuestion,lastResponse"
      to: "user.lastQuestion,user.lastResponse"
Este componente necesita ambas propiedades, pero sus definiciones no tienen que ser similares. Si bien puede definir from y to como listas de variables, también puede definir from con una única variable y to como una lista. Si define una propiedad to adicional, esta hereda el valor de variable de la propiedad from siguiente.

System.SetCustomMetrics

Utilice este componente para instrumentar su aptitud para el informe de métricas personalizadas. Por ejemplo:
  insights:
    component: "System.SetCustomMetrics"
    properties:
      dimensions:
       - name: "Pizza Size"
         value: "${size}"
       - name: "Pizza Type"
         value: "${type}"
       - name: "Crust Type"
         value: "${crust}"
    transitions:
      next: "summarizeOrder"
Nota

Puede definir varias dimensiones en un solo estado y puede definir hasta seis dimensiones por aptitud.
Atributo Descripción
name Nombre de la dimensión (en 50 caracteres o menos) tal y como aparece en el informe de métricas personalizadas. Utilice solo letras, números y espacios. No utilice caracteres especiales.
value Puede definir el valor de dimensión como una expresión FreeMarker o una cadena de texto.
  • Utilice expresiones FreeMarker para hacer referencia a una variable context declarada para una entidad. Por ejemplo, para una variable crust: "PizzaCrust", la sintaxis es "${crust}". La sintaxis para hacer referencia a un elemento de entidad de lista de valores en una bolsa compuesta es "${<composite bag entity name>.value.<item name>}". Por ejemplo, "${pizza.value.Crust}".
  • Utilice una cadena para realizar un seguimiento de un valor que no están definidos por variables en la definición del flujo de diálogo, pero que realiza un seguimiento de otros aspectos del uso de aptitudes.
    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"

Ejemplo: definición de una dimensión única en varios estados

El siguiente fragmento ilustra cómo crear una sola dimensión (Agent Transfer) a partir de una serie de estados 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"

... 

Cada estado System.SetCustomMetrics define una categoría diferente para la dimensión de transferencia de agente. El informe de métricas personalizadas registra los datos de estas métricas cuando estos estados se incluyen en un flujo de ejecución y, como se ilustra en el ejemplo anterior, se nombran en las transiciones.

Estados de métricas personalizadas para dimensión de transferencia de agente Valor Usar
setInsightsCustomMetrics No se necesita agente Refleja el número de conversaciones correctas en las que se cursaron indicaciones sin ayuda.
setInsightsCustomMetrics1 Entrada incorrecta Refleja el número de conversiones en las que la entrada sin resolver ha provocado que los usuarios se transfieran a un agente activo.
setInsightsCustomMetrics2 Máximo de Errores Refleja el número de conversaciones a las que se ha dirigido a los usuarios a agentes activos porque han llegado a la m
setInsightsCustomMetrics3 Agente solicitado Refleja el número de conversaciones en las que los usuarios han solicitado un agente en directo.

Ejemplo: seguimiento de métricas en comentarios de usuario

Para realizar un seguimiento de las métricas de comentarios, agregue los estados System.SetCustomMetrics correspondientes a los estados de transición System.Feedback. Por ejemplo:
...
  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"