Anpassningsbara uttryck
GÄLLER FÖR: SDK v4
Robotar använder anpassningsbara uttryck för att utvärdera resultatet av ett villkor baserat på körningsinformation som är tillgänglig i minnet för dialogrutan eller språkgenereringssystemet . Dessa utvärderingar avgör hur din robot reagerar på användarindata och andra faktorer som påverkar robotfunktionen.
Anpassningsbara uttryck tillgodoser det här kärnbehovet genom att tillhandahålla ett anpassningsbart uttrycksspråk som kan användas med Bot Framework SDK och andra konversations-AI-komponenter, till exempel Bot Framework Composer, Språkgenerering, Anpassningsbara dialogrutor och anpassningsbara kortberäkning.
Ett anpassningsbart uttryck kan innehålla ett eller flera explicita värden, fördefinierade funktioner eller anpassade funktioner. Användare av anpassningsbara uttryck har också möjlighet att mata in ytterligare funktioner som stöds. Till exempel är alla språkgenereringsmallar tillgängliga som funktioner samt ytterligare funktioner som endast är tillgängliga i komponentens användning av anpassningsbara uttryck.
Operatorer
Adaptiva uttryck stöder följande operatortyper och uttryckssyntax:
- Aritmetiska
- jämförelse
- Logiska
- andra operatorer och uttryckssyntax
Operatör | Funktioner | Fördefinierade funktionsekvivalenter |
---|---|---|
+ | Tillägg. Exempel: A + B | Add |
- | Subtraktion. Exempel: A – B | Sub |
unary + | Positivt värde. Exempel: +1, +A | Ej tillämpligt |
Unära- | Negativt värde. Exempel: -2, -B | Ej tillämpligt |
* | Multiplikation. Exempel: A * B | mul |
/ | Division. Exempel: A/B | Div |
^ | Exponentiering. Exempel: A ^ B | Exp |
% | Modulus. Exempel: A % B | Mod |
Variabler
Variabler refereras alltid till med deras namn i formatet ${myVariable}
. De kan refereras antingen av egenskapsväljarens operator i form av , med hjälp av myParent.myVariable
markeringsoperatorn för objektindex som i myParent.myList[0]
eller av funktionen getProperty().
Det finns två särskilda variabler. [] representerar en tom lista och {} representerar ett tomt objekt.
Explicita värden
Explicita värden kan omges av antingen enkla citattecken "myExplicitValue" eller dubbla citattecken "myExplicitValue".
Funktioner
Ett adaptivt uttryck har en eller flera funktioner. Mer information om funktioner som stöds av adaptiva uttryck finns i referensartikeln för fördefinierade funktioner .
Bot Framework Composer
Bot Framework Composer är en visuell redigeringsarbetsyta med öppen källkod som utvecklare och tvärvetenskapliga team kan använda för att skapa robotar. Composer använder anpassningsbara uttryck för att skapa, beräkna och ändra värden. Anpassningsbara uttryck kan användas i malldefinitioner för språkgenerering och som egenskaper på redigeringsarbetsytan. Som du ser i exemplet nedan kan egenskaper i minnet också användas i ett adaptivt uttryck.
Uttrycket (dialog.orderTotal + dialog.orderTax) > 50
lägger till värdena för egenskaperna dialog.orderTotal
och dialog.orderTax
, och utvärderas till True
om summan är större än 50 eller False
om summan är 50 eller mindre.
Läs Konversationsflöde och minne för mer information om hur uttryck används i minnet.
Språkgenerering
Adaptiva uttryck används av språkgenereringssystem (LG) för att utvärdera villkor som beskrivs i LG-mallar. I exemplet nedan används den fördefinierade funktionen join för att visa en lista över alla värden i recentTasks
samlingen.
# 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.
Mer information finns i avsnittet om att använda den fördefinierade funktionen i variantavsnittet i .lg-filformatet.
Anpassningsbara kort-templating
Anpassningsbara kort templating kan användas av utvecklare av robotar och andra tekniker för att separera data från layouten i ett adaptivt kort. Utvecklare kan tillhandahålla data infogade med AdaptiveCard
nyttolasten eller den vanligare metoden för att skilja data från mallen.
Anta till exempel att du har följande data:
{
"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"
}
Egenskapen message
är en JSON-serialiserad sträng. För att få åtkomst till värdena i strängen kan den fördefinierade json-funktionen anropas:
{
"type": "TextBlock",
"text": "${json(message).releaseName}"
}
Och resulterar i följande objekt:
{
"type": "TextBlock",
"text": "Release-104"
}
Mer information och exempel finns i dokumentationen om anpassningskortsanpassning.
Ytterligare resurser
- NuGet AdaptiveExpressions-paket för C#
- npm adaptive-expressions-paket för JavaScript
- Fördefinierade funktioner som stöds av biblioteket för anpassningsbara uttryck
- C#API-referens
- JavaScript API-referens