Dela via


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.myVariablemarkeringsoperatorn 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