Variáveis
Last updated
Was this helpful?
Last updated
Was this helpful?
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:
[
{
"default": {
"text": "Seja bem-vindo, <? contact.name ?>",
"type": "text"
}
}
]
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:
São dados armazenados na ficha do atendimento. Podem ser acessados através da notação contact.atributo
Por exemplo:
contact.name
contact.email
contact.extra.identification_number
(atributo extra)
Exemplo de armazenamento de variável do contato:
{
"contact": {
"name": "<? input.text ?>",
"extra": {
"identification_number": "123456"
}
}
}
Exemplo de uso:
[
{
"default": {
"text": "Seja bem-vindo, <? contact.name ?>",
"type": "text"
}
}
]
São dados armazenados na sessão do atendimento. Podem ser acessados através da notação $var
ou pela context.var
Exemplo de armazenamento de variável de contexto:
{
"context": {
"status_pagamento": "concluido"
}
}
Exemplo de uso:
[
{
"default": {
"text": "Status do pagamento: <? $status_pagamento ?>",
"type": "text"
}
}
]
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:
{
"context": {
"valid": "<? (/^[0-9]+\\$/).test(input.text)) ?>"
}
}
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.
A interação do usuário com o assistente fica armazenada na variável input
Uma resposta de texto por exemplo fica armazenada na variável input.text
.Exemplo de uso:
[
{
"default": {
"text": "Você digitou '<? input.text ?>'",
"type": "text"
}
}
]
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 :
"intent": "saudacao",
"intents": [
{
"intent": "saudacao",
"confidence": 1
}
],
"confidence": 1,
"score_level": "high",
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 #saudacao
contendo 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:
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:
"entities": [
{
"value": "tenis",
"entity": "produto",
"location": [
17,
22
],
"confidence": 1
},
{
"value": "adidas",
"entity": "marca",
"location": [
26,
32
],
"confidence": 1
}
]
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
.
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'
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:
[
{
"extra1": "<? base_has_answers ? 'tem answers' : 'não tem' ?>",
"extra2": "extra2",
"details": {
"field1": "value1",
"field2": "value2"
},
"event_name": "saudacoes"
}
]
ou
{
"contact": {
"atributo": "valor"
},
"context": {
"var_contexto": "<? base_has_answers ? 'tem answers' : 'não tem' ?>"
}
}