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.orderTax
e 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
- Pacchetto NuGet AdaptiveExpressions per C#
- Pacchetto npm adaptive-expressions per JavaScript
- Funzioni predefinite supportate dalla libreria delle espressioni adattive
- Informazioni di riferimento sulle API C#
- Informazioni di riferimento sull'API JavaScript