Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DOTYCZY: SDK wersja 4
Boty używają wyrażeń adaptacyjnych do oceny wyniku warunku na podstawie informacji uruchomieniowych dostępnych w pamięci dialogu lub systemu generowania języka. Te oceny określają, jak bot reaguje na dane wejściowe użytkownika i inne czynniki wpływające na funkcjonalność bota.
Wyrażenia adaptacyjne odnoszą się do tej podstawowej potrzeby, udostępniając język wyrażeń adaptacyjnych, który może być używany z zestawem SDK Bot Framework i innymi komponentami konwersacyjnej sztucznej inteligencji, takimi jak Bot Framework Composer, Language Generation, Adaptive dialogs oraz tworzenie szablonów kart adaptacyjnych.
Wyrażenie adaptacyjne może zawierać co najmniej jedną jawną wartość, wstępnie utworzone funkcje lub funkcje niestandardowe. Użytkownicy wyrażeń adaptacyjnych mają również możliwość wstrzykiwania dodatkowych obsługiwanych funkcji. Na przykład szablony generowania języka są dostępne jako funkcje, a także istnieją dodatkowe funkcje dostępne tylko w kontekście korzystania przez ten komponent z wyrażeń adaptacyjnych.
Operatorów
Wyrażenia adaptacyjne obsługują następujące typy operatorów i składnię wyrażeń:
- arytmetyka
- porównanie
- logiczny
- inne operatory i składnia wyrażeń
| Obsługujący | Funkcjonalność | Odpowiednik wstępnie utworzonej funkcji |
|---|---|---|
| + | Dodatek. Przykład: A + B | dodaj |
| - | Odejmowanie. Przykład: A - B | podrzędne |
| operator jednoargumentowy "+" | Wartość dodatnia. Przykład: +1, +A | N/A |
| Jednoargumentowy- | Wartość ujemna. Przykład: -2, -B | N/A |
| * | Mnożenie. Przykład: A * B | mul |
| / | Dzielenie. Przykład: A /B | Div |
| ^ | Potęgowanie. Przykład: A ^ B | Exp |
| % | Moduł. Przykład: % B | mod |
Zmienne
Nazwy zmiennych są zawsze używane do odwoływania się do nich w formacie ${myVariable}. **
Można odwoływać się do nich w postaci myParent.myVariable za pomocą operatora selektora właściwości, używając operatora wyboru indeksu elementu, jak w myParent.myList[0], lub przez funkcję getProperty().
Istnieją dwie specjalne zmienne. [] reprezentuje pustą listę i {} reprezentuje pusty obiekt.
Jawne wartości
Jawne wartości można ująć w pojedyncze cudzysłowy 'myExplicitValue' lub podwójne cudzysłowy "myExplicitValue".
Funkcje
Wyrażenie adaptacyjne ma co najmniej jedną funkcję. Aby uzyskać więcej informacji na temat funkcji obsługiwanych przez wyrażenia adaptacyjne, zobacz artykuł referencyjny dotyczący wstępnie utworzonych funkcji .
Bot Framework Composer
Bot Framework Composer to kanwa tworzenia wizualizacji typu open source dla deweloperów i zespołów wielodyscyplinarnych do tworzenia botów. Kompozytor używa wyrażeń adaptacyjnych do tworzenia, obliczania i modyfikowania wartości. Wyrażenia adaptacyjne mogą być używane w definicjach szablonów generowania języka i jako właściwości w środowisku tworzenia. Jak pokazano w poniższym przykładzie, właściwości w pamięci mogą być również używane w wyrażeniu adaptacyjnym.
Wyrażenie (dialog.orderTotal + dialog.orderTax) > 50 dodaje wartości właściwości dialog.orderTotal i dialog.orderTax, i oblicza do True , jeśli suma jest większa niż 50, albo do False, jeśli suma jest 50 lub mniejsza.
Przeczytaj przepływ konwersacji i pamięć , aby uzyskać więcej informacji na temat sposobu użycia wyrażeń w pamięci.
Generowanie języka
Wyrażenia adaptacyjne są używane przez systemy generowania języka (LG) do oceny warunków opisanych w szablonach LG. W poniższym przykładzie funkcja join jest używana do wyświetlenia wszystkich wartości w kolekcji recentTasks.
# 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.
Zapoznaj się z sekcją używanie wbudowanych funkcji w odmianach artykułu o formacie pliku .lg, aby uzyskać więcej informacji.
Tworzenie szablonów kart adaptacyjnych
Szablony kart adaptacyjnych mogą być używane przez deweloperów botów i innych technologii w celu oddzielenia danych od układu na karcie adaptacyjnej. Deweloperzy mogą dostarczać dane w tekście w ramach ładunku AdaptiveCard, lub stosują bardziej typowe podejście polegające na oddzielaniu danych od szablonu.
Załóżmy na przykład, że masz następujące dane:
{
"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"
}
Właściwość message jest ciągiem serializowanym w formacie JSON. Aby uzyskać dostęp do wartości w ciągu, można wywołać wstępnie skompilowaną funkcję json :
{
"type": "TextBlock",
"text": "${json(message).releaseName}"
}
Doprowadzi do następującego obiektu:
{
"type": "TextBlock",
"text": "Release-104"
}
Aby uzyskać więcej informacji i przykłady, zobacz dokumentację tworzenia szablonów kart adaptacyjnych.
Dodatkowe zasoby
- Pakiet NuGet AdaptiveExpressions dla języka C#
- Pakiet npm adaptive-expressions dla języka JavaScript
- Wstępnie utworzone funkcje obsługiwane przez bibliotekę wyrażeń adaptacyjnych
- Dokumentacja interfejsu API języka C#
- Dokumentacja interfejsów API języka JavaScript