Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
APLICA-SE A: SDK v4
Os bots usam expressões adaptáveis para avaliar o resultado de uma condição com base nas informações de tempo de execução disponíveis na memória para o diálogo ou o sistema de Geração de Linguagem. Essas avaliações determinam como o bot reage à entrada do usuário e a outros fatores que afetam a funcionalidade do bot.
As expressões adaptáveis abordam essa necessidade principal fornecendo uma linguagem de expressão adaptável que pode ser usada com o SDK do Bot Framework e outros componentes de IA de conversa, como Bot Framework Composer, Geração de Linguagem, diálogos adaptáveis e modelagem de Cartões Adaptáveis.
Uma expressão adaptável pode conter um ou mais valores explícitos, funções predefinidas ou funções personalizadas. Os consumidores de expressões adaptáveis também têm a capacidade de injetar funções adicionais que são suportadas. Por exemplo, todos os modelos de geração de linguagem estão disponíveis como funções, bem como funções adicionais que só estão disponíveis no uso de expressões adaptáveis por esse componente.
Operadores
Expressões adaptáveis dão suporte aos seguintes tipos de operador e sintaxe de expressão:
- aritmética
- comparação
- lógico
- sintaxe de outros operadores e expressões
| Operador | Funcionalidade | Equivalente à função pré-construída |
|---|---|---|
| + | Adição. Exemplo: A + B | adicionar |
| - | Subtração. Exemplo: A – B | sub |
| unary + | Valor positivo. Exemplo: +1, +A | Não aplicável |
| Unário- | Valor negativo. Exemplo: -2, -B | Não aplicável |
| * | Multiplicação. Exemplo: A * B | mul |
| / | Divisão. Exemplo: A/B | Div |
| ^ | Exponenciação. Exemplo: A ^ B | Exp |
| % | Módulo. Exemplo: A % B | Mod |
Variáveis
As variáveis são sempre referenciadas pelo nome no formato ${myVariable}. Eles podem ser referenciados pelo operador seletor de propriedade na forma de myParent.myVariable, usando o operador de seleção de índice de item, como em myParent.myList[0], ou pela função getProperty( ).
Há duas variáveis especiais. [] representa uma lista vazia e {} representa um objeto vazio.
Valores explícitos
Valores explícitos podem ser colocados entre aspas simples 'myExplicitValue' ou aspas duplas "myExplicitValue".
Funções
Uma expressão adaptável tem uma ou mais funções. Para obter mais informações sobre funções compatíveis com expressões adaptáveis, consulte o artigo de referência de funções predefinidas .
Bot Framework Composer
O Bot Framework Composer é uma tela de criação visual de software livre para desenvolvedores e equipes multidisciplinares criarem bots. O Composer usa expressões adaptáveis para criar, calcular e modificar valores. Expressões adaptáveis podem ser usadas em definições de modelo de geração de linguagem e como propriedades na tela de criação. Como visto no exemplo abaixo, as propriedades na memória também podem ser usadas em uma expressão adaptável.
A expressão (dialog.orderTotal + dialog.orderTax) > 50 adiciona os valores das propriedades dialog.orderTotal e dialog.orderTax, e avalia True se a soma é maior que 50 ou False se a soma é 50 ou menos.
Leia o fluxo de conversa e a memória para obter mais informações sobre como as expressões são usadas na memória.
Geração de linguagem
Expressões adaptáveis são usadas por sistemas LG (geração de linguagem) para avaliar as condições descritas em modelos LG. No exemplo a seguir, a função predefinida join é usada para listar todos os valores na recentTasks coleção.
# 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.
Leia a seção usando função predefinida em variações do artigo sobre formato de arquivo .lg para mais informações.
Modelagem de templates de cartões adaptáveis
A modelagem de Cartões Adaptáveis pode ser usada por desenvolvedores de bots e outras tecnologias para separar dados do layout em um Cartão Adaptável. Os desenvolvedores podem fornecer dados embutidos com a AdaptiveCard carga útil, ou a abordagem mais comum de separar os dados do modelo.
Por exemplo, digamos que você tenha os seguintes dados:
{
"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"
}
A message propriedade é uma cadeia de caracteres serializada por JSON. Para acessar os valores dentro da cadeia de caracteres, a função predefinida json pode ser chamada:
{
"type": "TextBlock",
"text": "${json(message).releaseName}"
}
E resultará no seguinte objeto:
{
"type": "TextBlock",
"text": "Release-104"
}
Para obter mais informações e exemplos, consulte a documentação de modelagem de cartões adaptáveis.
Recursos adicionais
- Pacote NuGet AdaptiveExpressions para C#
- pacote npm adaptive-expressions para JavaScript
- Funções predefinidas compatíveis com a biblioteca de expressões adaptáveis
- Referência da API do C#
- Referência da API JavaScript