ALTU
Search…
Variáveis
Há três categorias de variáveis que podem ser usadas no builder: variáveis do contato, de contexto e de sistema (especiais). Para utilizar variáveis no editor de código (json), é necessário utilizar a notação <? ?>
Por exemplo, para exibir o nome do contato em uma mensagem, pode-se usar:
1
[
2
{
3
"default": {
4
"text": "Seja bem-vindo, <? contact.name ?>",
5
"type": "text"
6
}
7
}
8
]
Copied!
Para usar variáveis em pontos de entrada, ou na condicional de nó de destino, não é preciso colocar a notação <? ?>Exemplo de condição de saída:
Variáveis do contato
Variáveis de contexto
Variáveis de sistema (especiais)
São dados armazenados na ficha do atendimento. Podem ser acessados através da notação contact.atributoPor exemplo:
  • contact.name
  • contact.email
  • contact.extra.identification_number (atributo extra)
Exemplo de armazenamento de variável do contato:
1
{
2
"contact": {
3
"name": "<? input.text ?>",
4
"extra": {
5
"identification_number": "123456"
6
}
7
}
8
}
Copied!
Exemplo de uso:
1
[
2
{
3
"default": {
4
"text": "Seja bem-vindo, <? contact.name ?>",
5
"type": "text"
6
}
7
}
8
]
Copied!
São dados armazenados na sessão do atendimento. Podem ser acessados através da notação $varou pela context.var Exemplo de armazenamento de variável de contexto:
1
{
2
"context": {
3
"status_pagamento": "concluido"
4
}
5
}
Copied!
Exemplo de uso:
1
[
2
{
3
"default": {
4
"text": "Status do pagamento: <? $status_pagamento ?>",
5
"type": "text"
6
}
7
}
8
]
Copied!
O acesso às variáveis de contexto ocorre pela sintaxe iniciada com $ .Caso você queira usar literalmente esse caractere, é necessário realizar um escape com \\.
Exemplo:
1
{
2
"context": {
3
"valid": "<? (/^[0-9]+\\$/).test(input.text)) ?>"
4
}
5
}
Copied!
Há um conjunto de variáveis especiais (ou de sistema) que podem ser usadas para acessar o input do usuário, intenção reconhecida, entidades, nível de confiança, etc.

Input

A interação do usuário com o assistente fica armazenada na variável inputUma resposta de texto por exemplo fica armazenada na variável input.text.Exemplo de uso:
1
[
2
{
3
"default": {
4
"text": "Você digitou '<? input.text ?>'",
5
"type": "text"
6
}
7
}
8
]
Copied!

Intenção

Para toda interação do usuário que passa pelo cognitivo, as variáveis intent, intents, confidence e score_level são preenchidas. Exemplo 1:
O usuário digita "Bom dia" e a #saudacao é reconhecida, aos valores das variáveis são :
1
"intent": "saudacao",
2
"intents": [
3
{
4
"intent": "saudacao",
5
"confidence": 1
6
}
7
],
8
"confidence": 1,
9
"score_level": "high",
Copied!
O score_level pode conter os seguintes valores: low, medium e high. Ele é calculado a partir do confidence e da configuração de intervalo de confiança setada no assistente. Também é possível verificar se uma intenção foi detectada através do prefixo #
Para uma intenção chamada saudacao, ativada pelo "Bom dia!" do usuário, é necessária que exista um nó com o ponto de entrada #saudacaocontendo uma também uma resposta específica para o cenário:
Sempre que a intenção #saudacao for identificada, o fluxo de conversação passará para esse nó.
Importante: Desde que o usuário não esteja em nó em condição obrigatória ou a intent não tenha sido identificada.
A mesma abordagem pode ser utilizada na hora de definir o nó de destino na seção então ir para até mesmo combinando com outras variáveis.
Por exemplo:

Entidades

Assim como para intenções, o NLU pode reconhecer entidades na interação do usuário. Nesse caso a variável entities é preenchida.
Considerando que o usuário digitou a frase "Quero comprar um tênis da Adidas", suponhamos que as entidades @produto e @marca foram reconhecidas. A variável entities teria a seguinte estrutura:
1
"entities": [
2
{
3
"value": "tenis",
4
"entity": "produto",
5
"location": [
6
17,
7
22
8
],
9
"confidence": 1
10
},
11
{
12
"value": "adidas",
13
"entity": "marca",
14
"location": [
15
26,
16
32
17
],
18
"confidence": 1
19
}
20
]
Copied!
Exemplos de como essa variável poderia ser usada:
  • entities.length
  • entities[0].value
  • entities[0].entity
  • entities[1].confidence
De forma similar a intenções, para verificar se uma entidade foi reconhecida basta utilizar o @. Por exemplo:
  • @marca
  • @marca:adidas
  • @marca:(adidas)
Por exemplo, se você quisesse direcionar o usuário para um nó específico caso ele tenha digitado um produto e uma marca, poderia ser colocada a condição de saída @produto && @marca.

Canais (source)

Uma outra possibilidade é usar a origem do contato como regra para o assistente tomar uma decisão. Lembrando que o valor é baseado na integração, por exemplo:
  • contact.source == 'debugger'
  • contact.source == 'liveperson'
  • contact.source == 'zenvia'
  • contact.source == 'widget'
  • contact.source == 'api'
  • contact.source == 'rcs'
  • contact.source == 'whatsapp'

Variável base_has_answers

Após o uso de base de conhecimento no Builder, é possível acrescentar uma variável especial chamada base_has_answers que poderá ser utilizada para o direcionamento do fluxo. Como o próprio nome indica, essa variável poderá conter os valores true ou false e determina se foi encontrada uma resposta na base de conhecimento ou não.
Além de poder ser usada nas condições, por exemplo, de saída do nó, pode também ser utilizada no armazenamento de variáveis, conforme exemplo:
1
[
2
{
3
"extra1": "<? base_has_answers ? 'tem answers' : 'não tem' ?>",
4
"extra2": "extra2",
5
"details": {
6
"field1": "value1",
7
"field2": "value2"
8
},
9
"event_name": "saudacoes"
10
}
11
]
Copied!
ou
1
{
2
"contact": {
3
"atributo": "valor"
4
},
5
"context": {
6
"var_contexto": "<? base_has_answers ? 'tem answers' : 'não tem' ?>"
7
}
8
}
Copied!
Copy link