Freigeben über


Adaptive Ausdrücke

GILT FÜR: SDK v4

Bots verwenden adaptive Ausdrücke, um das Ergebnis einer Bedingung basierend auf Laufzeitinformationen auszuwerten, die im Arbeitsspeicher für das Dialogfeld oder das System zur Sprachgenerierung verfügbar sind. Diese Auswertungen bestimmen, wie Ihr Bot auf Benutzereingaben und andere Faktoren reagiert, die sich auf die Bot-Funktionalität auswirken.

Adaptive Ausdrücke befassen sich mit diesem Kernbedarf, indem eine adaptive Ausdruckssprache bereitgestellt wird, die mit dem Bot Framework SDK und anderen unterhaltungsbezogenen KI-Komponenten verwendet werden kann, z. B. Bot Framework Composer, Sprachgenerierung, adaptive Dialogfelder und Vorlagen für adaptive Karten.

Ein adaptiver Ausdruck kann einen oder mehrere explizite Werte, vordefinierte Funktionen oder benutzerdefinierte Funktionen enthalten. Verbraucher von adaptiven Ausdrücken können auch zusätzliche unterstützte Funktionen einbringen. Beispielsweise sind alle Vorlagen für die Sprachgenerierung als Funktionen sowie zusätzliche Funktionen verfügbar, die nur in der Verwendung adaptiver Ausdrücke dieser Komponente verfügbar sind.

Betriebspersonal

Adaptive Ausdrücke unterstützen die folgenden Operatortypen und Ausdruckssyntax:

  • Arithmetik
  • Vergleich
  • logisch
  • Syntax anderer Operatoren und Ausdrücke
Bediener Funktionalität Vorkonfigurierte Funktionsentsprechung
+ Ergänzung. Beispiel: A + B hinzufügen
- Subtraktion. Beispiel: A - B sub
unary + Positiver Wert. Beispiel: +1, +A Nicht verfügbar
unär- Negativer Wert. Beispiel: -2, -B Nicht verfügbar
* Multiplikation. Beispiel: A * B mul
/ Aufteilung. Beispiel: A / B Div
^ Potenzierung. Beispiel: A ^ B Exp
% Modul. Beispiel: Ein % B Mod

Variablen

Variablen werden immer anhand ihres Namens im Format ${myVariable}referenziert. Sie können entweder vom Eigenschaftenauswahloperator in Form von myParent.myVariable, mithilfe des Elementindexauswahloperators wie in myParent.myList[0], oder über die getProperty()- Funktion referenziert werden.

Es gibt zwei spezielle Variablen. [] stellt eine leere Liste dar und {} stellt ein leeres Objekt dar.

Explizite Werte

Explizite Werte können entweder in einfache Anführungszeichen "myExplicitValue" oder doppelte Anführungszeichen "myExplicitValue" eingeschlossen werden.

Funktionen

Ein adaptiver Ausdruck verfügt über eine oder mehrere Funktionen. Weitere Informationen zu Funktionen, die von adaptiven Ausdrücken unterstützt werden, finden Sie im Referenzartikel zu vordefinierten Funktionen .

Bot Framework Composer

Bot Framework Composer ist ein Open-Source-Canvas für die visuelle Dokumenterstellung für Entwickler und multidisziplinäre Teams zum Erstellen von Bots. Composer verwendet adaptive Ausdrücke zum Erstellen, Berechnen und Ändern von Werten. Adaptive Ausdrücke können in Vorlagendefinitionen der Sprachgenerierung und als Eigenschaften im Dokumenterstellungsbereich verwendet werden. Wie im folgenden Beispiel gezeigt, können Eigenschaften im Arbeitsspeicher auch in einem adaptiven Ausdruck verwendet werden.

Der Ausdruck (dialog.orderTotal + dialog.orderTax) > 50 addiert die Werte der Eigenschaften dialog.orderTotal und dialog.orderTaxund wertet True aus, wenn die Summe größer als 50 ist oder False wenn die Summe 50 oder kleiner ist.

Lesen Sie den Unterhaltungsfluss und den Arbeitsspeicher , um weitere Informationen zur Verwendung von Ausdrücken im Arbeitsspeicher zu erhalten.

Sprachgenerierung

Adaptive Ausdrücke werden von LG-Systemen (Language Generation) verwendet, um Bedingungen zu bewerten, die in LG-Vorlagen beschrieben werden. Im folgenden Beispiel wird die join-Funktion verwendet, um alle Werte in der recentTasks-Sammlung aufzulisten.

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

Lesen Sie den Abschnitt Verwendung der vordefinierten Funktion in Variationen des Artikels zum .lg-Dateiformat, um weitere Informationen zu erhalten.

Vorlagen für adaptive Karten

Vorlagen für adaptive Karten können von Entwicklern von Bots und anderen Technologien verwendet werden, um Daten vom Layout in einer adaptiven Karte zu trennen. Entwickler können Daten inline mit der AdaptiveCard Nutzlast bereitstellen oder den gängigeren Ansatz zum Trennen der Daten aus der Vorlage verwenden.

Angenommen, Sie haben die folgenden Daten:

{
    "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"
}

Die message Eigenschaft ist eine JSON-serialisierte Zeichenfolge. Um auf die Werte innerhalb der Zeichenfolge zuzugreifen, kann die json-Vorbaufunktion aufgerufen werden:

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

Und führt zum folgenden Objekt:

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

Weitere Informationen und Beispiele finden Sie in der Dokumentation zur Vorlagenerstellung für adaptive Karten.

Weitere Ressourcen