Contextos disponíveis nas caixas de código
| Família | Finalidade |
|---|---|
| Contextos | Dados disponibilizados pelo runtime, como input, variables, session e globalVariables. |
Como usar
- Os objetos disponíveis dependem do momento em que o código é executado: entrada do usuário, entrada no nó, retorno externo ou encerramento.
- As propriedades abaixo foram observadas no catálogo do Botengine e nos fluxos documentados. Elas não substituem a referência dos comandos
dialog.*. - Para alterar variáveis ou o fluxo, prefira os comandos documentados, como
dialog.set(...),dialog.get(...),dialog.go(...)edialog.visible(...). - Não assuma que uma propriedade estará preenchida em todos os nós. Sempre trate
nullou ausência de valor quando o dado for opcional.
Entrada atual — input
input representa a entrada que disparou a execução atual. O conteúdo varia conforme o canal e o tipo de nó.
input.text
Efeito: disponibiliza o texto digitado ou enviado pelo usuário.
Uso típico: validar a resposta, comparar opções ou encaminhar o fluxo.
if (utils.inputMatches(input.text, ['sim', 's'])) {
dialog.go('node-confirmado');
} else {
dialog.go('node-nao-confirmado');
}
input.mediaId
Efeito: disponibiliza o identificador de uma mídia recebida ou coletada anteriormente.
Uso típico: enviar a mídia para análise de imagem ou utilizar o identificador em uma integração.
dialog.imageAnalysis(input.mediaId, 'Leia o número do documento.');
input.payload
Efeito: disponibiliza o payload de uma resposta externa, sinal ou integração que retomou o fluxo.
Uso típico: extrair informações de um retorno assíncrono.
var resultado = JSON.parse(input.payload);
dialog.set('statusConsulta', resultado.status);
input completo
Alguns comandos recebem o objeto de entrada inteiro, e não apenas uma propriedade.
dialog.sendTemplateLocationMsg(input);
O formato exato de
inputdepende do canal ou da integração que gerou a entrada. Valide os campos antes de utilizá-los.
Variáveis do fluxo — variables
variables representa os dados associados à sessão e ao fluxo. A forma documentada para alterar variáveis é usar dialog.set(...); a forma documentada para ler é dialog.get(...).
dialog.set(name, value)
Efeito: grava uma variável de sessão para ser usada em etapas posteriores do fluxo.
dialog.set('nomeCliente', input.text);
dialog.get(name)
Efeito: lê uma variável de sessão. Quando ela não existe, o retorno documentado é null.
var nome = dialog.get('nomeCliente');
if (nome != null) {
dialog.say('Olá, ' + nome + '!');
}
variables.get(name)
Efeito: acessa uma variável pelo nome no objeto de variáveis disponível no script. Esse padrão aparece nos exemplos do catálogo para alimentar comandos dialog.* e utils.*.
var cpf = variables.get('cpf');
if (utils.equals(cpf, null)) {
dialog.go('node-solicitar-cpf');
}
Para novos scripts, mantenha uma convenção única no fluxo.
dialog.get(...)é a forma explicitamente documentada para leitura de variável de sessão;variables.get(...)é um padrão de acesso presente nos exemplos existentes.
variables.nomeDaVariavel
Efeito: acessa uma variável por propriedade direta. Esse padrão também aparece em scripts existentes.
var protocolo = variables.protocolo;
dialog.say('Seu protocolo é ' + protocolo + '.');
Prefira nomes simples e consistentes. Antes de publicar, confirme que o valor foi criado anteriormente com
dialog.set(...)ou por um nó especializado.
variables.contact
Efeito: representa o objeto de contato associado à sessão depois que um contato é vinculado.
var contato = variables.contact;
if (contato != null) {
dialog.say('Olá, ' + contato.name + '!');
}
Para buscar ou alterar contatos, use as funções
contact.*da referência [[contact-code-commands-user-reference|Comandoscontact.*]].
Sessão — session
session contém metadados do atendimento e do estado de execução. As propriedades abaixo são as utilizadas nos exemplos e fluxos documentados.
session.contactId
Efeito: identifica o contato vinculado à sessão atual.
var contatoId = session.contactId;
if (contatoId != null) {
var contato = contact.findById(contatoId);
}
session.channel
Efeito: informa o canal por onde a sessão está sendo atendida.
if (session.channel == 'whatsapp') {
dialog.setMediaUpload(true);
}
session.count
Efeito: informa a contagem de iterações ou mensagens processadas na sessão.
if (session.count == 0) {
dialog.say('Olá! Vamos começar.');
}
session.currentDialogNodeId
Efeito: identifica o nó do diálogo que está ativo na sessão.
var noAtual = session.currentDialogNodeId;
dialog.emit('entrou-no-' + noAtual);
session.sessionSituation
Efeito: representa a situação atual da sessão, como atendimento pelo bot ou por humano.
if (session.sessionSituation == 'HUMAN') {
dialog.set('retornoHumano', true);
}
session.threadId
Efeito: identifica a thread usada por integrações legadas do Assistants API v1.
dialog.sendToAssistant('asst_legacy', session.threadId, input.text);
session.lastResponseId
Efeito: identifica a resposta anterior usada para continuar uma conversa com o Assistants API v2.
dialog.sendToAssistantV2('asst_xyz', session.lastResponseId, 'call-2', input.text, null);
session.creation
Efeito: representa o momento de criação da sessão e pode ser usado em cálculos de duração quando o formato do runtime permitir.
var duracao = Date.now() - session.creation;
dialog.emit('tempo-desde-inicio', duracao);
Nem toda propriedade de
sessioné preenchida em todos os canais ou versões do runtime. Use apenas propriedades confirmadas para o fluxo que está sendo criado.
Variáveis globais — globalVariables
globalVariables é disponibilizado pelo runtime para representar dados compartilhados entre fluxos e subprocessos ativos.
Estado do contrato
O catálogo atual confirma a disponibilidade do objeto, mas não documenta uma assinatura completa de leitura ou escrita para ele. A operação explicitamente documentada para gravação global é:
dialog.updateGlobalVariable('idTransacao', txId);
Efeito: grava uma variável global compartilhada entre fluxos e subprocessos ativos.
Para leitura, não utilize uma sintaxe presumida sem confirmar a versão do Botengine. Quando o dado for específico da sessão atual, prefira dialog.get(...) e dialog.set(...).
Resumo por momento de execução
| Momento | Contextos normalmente relevantes | Exemplos |
|---|---|---|
| Entrada do usuário | input.text, variables, session |
Validar texto, salvar resposta, navegar |
| Recebimento de mídia | input.mediaId, variables, session |
Analisar imagem, salvar resultado |
| Retorno externo | input.payload, variables, session |
Fazer parsing, salvar status, seguir para sucesso/erro |
| Entrada do nó | variables, session |
Preparar mensagem ou decisão |
| Atendimento humano | variables.contact, session.contactId, session.sessionSituation |
Exibir contexto, identificar contato |