Como podemos ajudar?

02. Variáveis
9 min
Criado por LA em 16/03/2023 17:26
Atualizado por Maria Malheiro em 23/02/2026 16:53

As variáveis permitem armazenar e reutilizar informações ao longo da conversa no fluxo do chatbot. Com elas, é possível personalizar mensagens, guardar respostas de usuários, controlar etapas e muito mais.

Neste artigo, você vai aprender:

  • Como cadastrar uma variável no Builder

  • Quais são os tipos de variáveis disponíveis

  • Como utilizar variáveis em mensagens e configurações


Como cadastrar uma variável no fluxo

Se você já sabe o que são variáveis e quer apenas aprender como criá-las, siga os passos abaixo:

  1. Acesse o Builder e abra o fluxo desejado.

  2. Clique no bloco onde deseja armazenar a variável.

  3. No menu lateral direito, ative a opção Armazenar variável.

  4. Preencha os campos:

    • Nome da variável: evite espaços e acentos (ex: status_pagamento).

    • Valor da variável: pode ser um valor fixo (como concluido) ou dinâmico (como <?input.text?>).

  5. Salve o bloco. Pronto! A variável estará disponível para uso em outros pontos do fluxo.

Exemplo de uso na mensagem:

<?$status_pagamento?>

Tipos de variáveis no Builder

O Builder permite o uso de diferentes tipos de variáveis. Entenda cada uma:

  • Variáveis do contato: armazenam dados associados ao perfil do cliente, como contact.name, contact.email, etc.
  • Variáveis de contexto: são específicas de uma sessão e desaparecem após o término da conversa, como <?$status_pagamento?>.
  • Variáveis de sistema: fornecidas automaticamente pela plataforma (como channel.name ou flow.name).

Como utilizar variáveis no editor de código (JSON)

Se você estiver editando diretamente em modo código (JSON), utilize a notação correspondente:

  • Para variáveis de sessão: <?#nome_da_variavel?>
  • Para variáveis de contato: <?contact.nome_do_atributo?>

Exemplo:
Para exibir o nome do contato em uma mensagem:

[
   {
      "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:

VARIÁVEIS.png

Variáveis de contato

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

 

Variáveis de contexto  

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 \\.

{
  "context": {
    "valid": "<? (/^[0-9]+\\$/).test(input.text)) ?>"
  }
}

 

Variáveis de sistemas (especiais)

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

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. Os 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.

 

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:

"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.

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: 

[
 {
 "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' ?>"
 }
}
Este artigo resolveu sua dúvida?
Últimos artigos visitados