Espressioni adattive

SI APPLICA A: SDK v4

I bot usano espressioni adattive per valutare il risultato di una condizione in base alle informazioni di runtime disponibili in memoria nella finestra di dialogo o nel sistema di generazione del linguaggio. Queste valutazioni determinano il modo in cui il bot risponde all'input dell'utente e ad altri fattori che condizionano la funzionalità del bot.

Le espressioni adattive rispondono a questa esigenza principale fornendo un linguaggio di espressione adattivo che può essere usato con Bot Framework SDK e altri componenti di intelligenza artificiale conversazionale, ad esempio Bot Framework Composer, Generazione del linguaggio, dialoghi adattivi e modelli di schede adattive.

Un'espressione adattiva può contenere uno o più valori espliciti, funzioni predefinite o funzioni personalizzate. I consumer delle espressioni adattive hanno anche la possibilità di inserire altre funzioni supportate. Ad esempio, tutti i modelli di generazione del linguaggio sono disponibili come funzioni e funzioni aggiuntive disponibili solo all'interno dell'uso di espressioni adattive di tale componente.

Operatori

Le espressioni adattive supportano i tipi di operatore e la sintassi delle espressioni seguenti:

  • aritmetico
  • confronto
  • logico
  • altri operatori e sintassi delle espressioni
Operatore Funzionalità Equivalente della funzione predefinita
+ Addizione. Esempio: A + B add
- Sottrazione. Esempio: A - B sub
unary + Valore positivo. Esempio: +1, +A N/D
unary - Valore negativo. Esempio: -2, -B N/D
* Moltiplicazione. Esempio: A * B mul
/ Divisione. Esempio: A/B div
^ Elevamento a potenza. Esempio: A ^ B exp
% Modulo. Esempio: A % B mod

Variabili

Alle variabili viene sempre fatto riferimento per nome nel formato ${myVariable}. È possibile farvi riferimento in base all'operatore di selezione di proprietà nel formato myParent.myVariable, usando l'operatore di selezione dell'indice dell'elemento come in myParent.myList[0] o tramite la funzione getProperty().

Sono disponibili due variabili speciali. [] rappresenta un elenco vuoto e {} rappresenta un oggetto vuoto.

Valori espliciti

I valori espliciti possono essere racchiusi tra virgolette singole, 'myExplicitValue', o tra virgolette doppie, "myExplicitValue".

Funzioni

Un'espressione adattiva ha una o più funzioni. Per altre informazioni sulle funzioni supportate dalle espressioni adattive, vedere l'articolo di riferimento sulle funzioni predefinite.

Bot Framework Composer

Bot Framework Composer è un'area del contenuto visivo open source destinato a sviluppatori e team multidisciplinari per la creazione di bot. Composer usa espressioni adattive per creare, calcolare e modificare i valori. Le espressioni adattive possono essere usate nelle definizioni dei modelli di generazione del linguaggio e come proprietà nell'area di disegno di creazione. Come illustrato nell'esempio seguente, le proprietà in memoria possono essere usate anche in un'espressione adattiva.

L'espressione (dialog.orderTotal + dialog.orderTax) > 50 aggiunge i valori delle proprietà dialog.orderTotal e dialog.orderTaxe restituisce True se la somma è maggiore di 50 o False se la somma è 50 o minore.

Per altre informazioni sull'uso delle espressioni in memoria, vedere Flusso di conversazione e memoria .

Generazione lingua

Le espressioni adattive vengono usate dai sistemi di generazione del linguaggio (LG) per valutare le condizioni descritte nei modelli LG. Nell'esempio seguente viene usata la funzione predefinita join per elencare tutti i valori nella recentTasks raccolta.

# RecentTasks
- IF: ${count(recentTasks) == 1}
    - Your most recent task is ${recentTasks[0]}. You can let me know if you want to add or complete a task.
- ELSEIF: ${count(recentTasks) == 2}
    - Your most recent tasks are ${join(recentTasks, ', ', ' and ')}. You can let me know if you want to add or complete a task.
- ELSEIF: ${count(recentTasks) > 2}
    - Your most recent ${count(recentTasks)} tasks are ${join(recentTasks, ', ', ' and ')}. You can let me know if you want to add or complete a task.
- ELSE:
    - You don't have any tasks.

Per altre informazioni, vedere la sezione Using prebuilt function in variations (Uso della funzione predefinita nelle varianti ) dell'articolo sul formato di file .lg.

Creazione di modelli di schede adattive

La creazione di modelli di schede adattive può essere usata dagli sviluppatori di bot e altre tecnologie per separare i dati dal layout in una scheda adattiva. Gli sviluppatori possono fornire dati inline con il AdaptiveCard payload o l'approccio più comune per separare i dati dal modello.

Si supponga, ad esempio, di avere i dati seguenti:

{
    "id": "1291525457129548",
    "status": 4,
    "author": "Matt Hidinger",
    "message": "{\"type\":\"Deployment\",\"buildId\":\"9542982\",\"releaseId\":\"129\",\"buildNumber\":\"20180504.3\",\"releaseName\":\"Release-104\",\"repoProvider\":\"GitHub\"}",
    "start_time": "2018-05-04T18:05:33.3087147Z",
    "end_time": "2018-05-04T18:05:33.3087147Z"
}

La message proprietà è una stringa serializzata JSON. Per accedere ai valori all'interno della stringa, è possibile chiamare la funzione predefinita json :

{
    "type": "TextBlock",
    "text": "${json(message).releaseName}"
}

E restituirà l'oggetto seguente:

{
    "type": "TextBlock",
    "text": "Release-104"
}

Per altre informazioni ed esempi, vedere la documentazione sulla creazione di modelli di schede adattive.

Risorse aggiuntive