Поделиться через


Адаптивные выражения

ОБЛАСТЬ ПРИМЕНЕНИЯ: ПАКЕТ SDK версии 4

Боты используют адаптивные выражения для оценки результата условия на основе сведений о среде выполнения, доступных в памяти для диалогового окна или системы создания языка. Эти вычисления позволяют выбрать реакцию бота на поступившие от пользователя данные с учетом других факторов, которые могут влиять на его функционирование.

Адаптивные выражения решают эту основную потребность, предоставляя язык адаптивных выражений, который можно использовать с пакетом SDK Bot Framework и другими компонентами ИИ для общения, такими как Bot Framework Composer, создание языка, адаптивные диалоги и шаблон адаптивных карточек.

Адаптивное выражение может содержать одно или несколько значений, встроенных функций или настраиваемых функций. Получателям адаптивных выражений также доступна возможность включать в них дополнительные поддерживаемые функции. Например, все шаблоны создания языков доступны как функции, а также дополнительные функции, доступные только в рамках использования адаптивных выражений этого компонента.

Операторы

Адаптивные выражения поддерживают следующие типы операторов и синтаксис выражений.

  • Арифметические
  • сравнение
  • Логические
  • другие операторы и синтаксис выражений
Оператор Функция Эквивалент встроенной функции
+ Сложение. Пример: A + B добавление
- Вычитание. Пример: A - B sub
Унарный + Положительное значение. Пример: +1, +A Н/П
Унарный – Отрицательное значение. Пример: -2, -B Н/П
* Умножение. Пример: A * B mul
/ Деление. Пример: A /B div
^ Возведение в степень. Пример: A ^ B exp
% Вычисление модуля. Пример: %B mod (модуль)

Переменные

Ссылки на переменные всегда содержат их имя в формате ${myVariable}. На них можно ссылаться с помощью оператора выбора свойства вида myParent.myVariable, оператора выбора индекса элемента (например, myParent.myList[0]) или с помощью функции getProperty().

Существуют две специальные переменные. [] представляет пустой список, а {} представляет пустой объект.

Явные значения

Явные значения могут быть заключены в одинарные кавычки 'myExplicitValue' или двойные кавычки "myExplicitValue".

Функции

Адаптивное выражение имеет одну или несколько функций. Дополнительные сведения о функциях, поддерживаемых адаптивными выражениями, см. в справочной статье о предварительно созданных функциях .

Bot Framework Composer

Bot Framework Composer — это визуальный конструктор с открытым кодом для создания ботов, предназначенный для разработчиков и многопрофильных групп. Композитор использует адаптивные выражения для создания, вычисления и изменения значений. Адаптивные выражения можно использовать в определениях шаблонов создания языка и в качестве свойств на холсте разработки. Как показано в приведенном ниже примере, свойства в памяти также можно использовать в адаптивном выражении.

Выражение (dialog.orderTotal + dialog.orderTax) > 50 добавляет значения свойств dialog.orderTotal и dialog.orderTaxвычисляет True , если сумма больше 50 или False меньше.

Дополнительные сведения о том, как выражения используются в памяти, см . в потоке беседы и памяти .

Генерирование речи

Адаптивные выражения используются системами создания языка (LG) для оценки условий, описанных в шаблонах LG. В приведенном ниже примере предварительно созданная функция соединения используется для перечисления всех значений 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.

Дополнительные сведения см. в разделе "Варианты" статьи о формате LG-файла с помощью предварительно созданной функции.

Шаблон адаптивных карточек

Шаблон адаптивных карточек можно использовать разработчиками ботов и других технологий для разделения данных из макета в адаптивной карточке. Разработчики могут предоставлять данные вместе с AdaptiveCard полезными данными или более распространенный подход к разделению данных из шаблона.

Например, предположим, что у вас есть следующие данные:

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

Свойство message представляет собой сериализованную в формате JSON строку. Чтобы получить доступ к значениям в строке, можно вызвать предварительно созданную функцию JSON :

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

И приведет к следующему объекту:

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

Дополнительные сведения и примеры см. в документации по шаблону адаптивных карта.

Дополнительные ресурсы