Componenti variabili

Questi sono i componenti disponibili nella categoria Variabile dell'editor del flusso della finestra di dialogo basato su YAML.

System.SetVariable

Il componente System.SetVariable imposta il valore di una variabile predefinita.

Proprietà descrizione; Richiesto?
variable Il nome della variabile definita come una delle proprietà context. Può essere una variabile definita per un'entità o un valore predeterminato, ad esempio una stringa.
value Il valore di destinazione, che è possibile definire come valore o come espressione che fa riferimento a un'altra variabile.
È inoltre possibile impostare un valore predeterminato per una variabile utilizzando un'espressione FreeMarker Apache o, come mostrato nello snippet seguente, un valore letterale. Puoi trovare maggiori informazioni su FreeMarker qui.
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:
      ...
Vedere System.OAuthAccountLink.
Nota

La struttura della risposta di Intent Engine è stata modificata con la release 21.12. Prima della release 21.12, il payload dei payload FullEntityMatches e entityMatches di livello superiore nell'oggetto nlpResult includeva entità a cui gli articoli facevano riferimento nelle entità sacchetto composto, ma non erano associati direttamente all'intento. A partire dalla Release 21.12, i payload degli oggetti FullEntityMatches e EntityMatches non includono più queste entità (possono invece essere trovati all'interno degli oggetti articolo bag composito di livello inferiore). Di conseguenza, gli skill aggiornati alla versione 21.12 che utilizzano System.SetVariable per impostare le variabili utilizzando i risultati contenuti nell'oggetto nlpResult utilizzando una sintassi come iResult.value.entityMatches potrebbero non riuscire poiché i valori entità non sono più presenti. Per garantire il funzionamento continuo delle competenze e seguire le migliori prassi, fare riferimento ai valori nel sacchetto composito (<variable_name>.value.<item_name>) e utilizzare i componenti System.CommonResponse o SystemResolveEntities anziché il componente System.SetVariable.

System.ResetVariables

Questo componente reimposta i valori delle variabili su null.

Questo componente non richiede transizioni, ma è possibile, ad esempio, impostare una transizione a uno stato System.Intent per consentire agli utenti di immettere nuovi valori.
Proprietà descrizione; Richiesto?
variableList Elenco separato da virgole di variabili da reimpostare.
Utilizzare la notazione punto per reimpostare il valore di un elemento sacchetto specifico nel sacchetto composito, che viene dichiarato una variabile di contesto (expense nell'esempio seguente).
resetExpenseType:
  component: "System.ResetVariables"
  properties:
    variableList: "expense.Type"
  transitions:
    next: "resolveExpense"

System.CopyVariables

Copia i valori delle variabili.

Definire questo componente utilizzando le proprietà from e to come nel seguente snippet, in cui il valore viene copiato in un contesto utente:
setupUserContext:
    component: "System.CopyVariables"
    properties:
      from: "lastQuestion,lastResponse"
      to: "user.lastQuestion,user.lastResponse"
Questo componente richiede entrambe queste proprietà, ma non è necessario eseguire il mirroring delle definizioni. Sebbene sia possibile definire sia from che to come elenchi di variabili, è possibile anche definire from con una singola variabile e to come elenco. Se si imposta un'ulteriore proprietà to, eredita il valore della variabile della proprietà from.

System.SetCustomMetrics

Utilizzare questo componente per valutare le proprie competenze per il report Metriche personalizzate. Ad esempio:
  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

È possibile impostare più dimensioni in un unico stato ed è possibile definire fino a sei dimensioni per skill.
Attributo descrizione;
name Nome della dimensione (in massimo 50 caratteri) visualizzato nel report Metriche personalizzate. Utilizzare solo lettere, numeri e spazi. Non utilizzare caratteri speciali.
value È possibile definire il valore della dimensione come espressione FreeMarker o stringa di testo.
  • Utilizzare le espressioni FreeMarker per fare riferimento a una variabile context dichiarata per un'entità. Ad esempio, per una variabile crust: "PizzaCrust", la sintassi è "${crust}". La sintassi per fare riferimento a un elemento entità elenco di valori in un sacchetto composto è "${<composite bag entity name>.value.<item name>}". Ad esempio, "${pizza.value.Crust}".
  • Utilizzare una stringa per tenere traccia di un valore non impostato dalle variabili nella definizione del flusso della finestra di dialogo, ma tiene invece traccia di altri aspetti dell'utilizzo delle competenze.
    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"

Esempio: impostazione di una singola dimensione in più stati

Il seguente snippet illustra come creare una singola dimensione (Agent Transfer) da una serie di stati 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"

... 

Ogni stato System.SetCustomMetrics definisce una categoria diversa per la dimensione Trasferimento agente. Il report Metriche personalizzate registra i dati per queste metriche quando questi stati vengono inclusi in un flusso di esecuzione e, come illustrato dall'esempio precedente, vengono denominati nelle transizioni.

Stati metrica personalizzati per dimensione trasferimento agente Valore Utilizzare
setInsightsCustomMetrics Nessun agente necessario Riflette il numero di conversazioni riuscite in cui gli ordini sono stati effettuati senza assistenza.
setInsightsCustomMetrics1 Input errato Riflette il numero di conversioni in cui l'input non risolto ha determinato il trasferimento degli utenti a un agente reale.
setInsightsCustomMetrics2 Numero massimo di errori Riflette il numero di conversazioni in cui gli utenti sono stati indirizzati agli agenti reali perché hanno raggiunto la m
setInsightsCustomMetrics3 Agente richiesto Riflette il numero di conversazioni in cui gli utenti hanno richiesto un agente reale.

Esempio: tracciamento delle metriche sul feedback utente

Per tenere traccia delle metriche di feedback, aggiungere gli stati System.SetCustomMetrics corrispondenti agli stati di transizione System.Feedback. Ad esempio:
...
  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"