Neste artigo você vai aprender a usar scripts nos componentes do dispositivo de emissão de tickets. Um script é um pequeno código JavaScript que o totem executa quando algo acontece com o componente, como quando o cidadão toca em um botão ou quando um campo precisa ser validado.
Com scripts, é possível mostrar avisos ao cidadão, consultar sistemas externos, guardar informações e decidir para qual tela o totem deve ir.
Onde criar um script
- Abra Configuração → Canais → Presencial → Editor de dispositivo de emissão e entre no dispositivo desejado.
- Selecione um componente na tela, como botão, texto, imagem, campo de texto ou teclado numérico.
- No painel de propriedades, abra a seção Script.
- Clique em Adicionar gatilho, informe o nome do gatilho e escolha o evento em que o script deve executar.
- Clique em Editar script, escreva o código e confirme.
- Salve o dispositivo. Use o modo Testar para validar o comportamento antes de enviar a configuração ao totem real.
.png)
Eventos disponíveis
| Evento | Quando o script executa |
|---|---|
| Clique | Quando o cidadão toca no componente. Disponível em botões e também em textos, imagens e campos que podem se comportar como botões. |
| Tecla pressionada | A cada tecla do teclado numérico. |
| Foco | Quando o campo de texto recebe o foco. |
| Perda de foco | Quando o campo de texto perde o foco. |
| Mudança | Quando o conteúdo do campo muda. |
| Validar | Quando o valor digitado precisa ser validado, a cada tecla do teclado numérico. |
O evento Validar permite bloquear o avanço do cidadão quando o valor digitado não é aceito.
O que o script pode usar
Todo script recebe um contexto com os objetos abaixo. Eles estão disponíveis diretamente pelo nome e não é necessário importar nada.
| Objeto | O que é |
|---|---|
vars |
As variáveis do totem naquele momento. Qualquer valor gravado em vars fica disponível para os próximos scripts e para o fluxo de atendimento. |
http |
Cliente para chamadas a sistemas externos, com os métodos get, post, put, patch e delete. |
alert |
Avisos exibidos na tela do totem. |
navigation |
Navegação entre telas. |
input |
O valor associado ao evento. Na validação de um campo, contém o valor atual e a tecla pressionada. |
utils |
Reservado para funções auxiliares. Na versão atual, ainda não possui funções. |
O script é executado como uma função assíncrona. Por isso, é possível usar await para aguardar respostas de http e alert.
vars — variáveis do totem
Leia uma variável usando:
vars.nomeDaVariavel
Grave uma variável usando:
vars.nomeDaVariavel = valor
O que o script gravar em vars permanece disponível para os próximos scripts e é enviado ao fluxo de atendimento vinculado ao componente.
As variáveis também podem ser criadas sem script, na seção Variáveis do componente. No campo de texto, o valor digitado pelo cidadão é guardado na variável informada em Nome da variável e fica disponível para os scripts e para o fluxo.
http — chamadas externas
| Método | Uso |
|---|---|
http.get(url, opcoes?) |
Consulta. |
http.post(url, corpo, opcoes?) |
Envio de dados. O corpo é enviado como JSON. |
http.put(url, corpo, opcoes?) |
Atualização completa. |
http.patch(url, corpo, opcoes?) |
Atualização parcial. |
http.delete(url, opcoes?) |
Exclusão. |
Todas as chamadas devolvem status e body. Quando a resposta não é de sucesso, a chamada gera um erro com status e body. Use try/catch para tratar esse cenário.
alert — avisos na tela
| Chamada | Efeito |
|---|---|
alert.success(titulo, texto) |
Exibe um aviso de sucesso, que desaparece automaticamente após 2 segundos. |
alert.error(titulo, texto) |
Exibe um aviso de erro, que desaparece automaticamente após 3,5 segundos. |
alert.question(texto, opcoes) |
Exibe uma pergunta com os botões Confirmar e Cancelar. Retorna a resposta do cidadão. |
alert.nameInput(titulo, placeholder) |
Exibe uma janela com campo de digitação e retorna o valor informado pelo cidadão. |
navigation — ir para outra tela
Grave em navigation.go o nome exato de uma tela do dispositivo.
navigation.go = 'Tela Agradecimento';
Quando o script termina, o totem vai para essa tela. Se o nome não corresponder a nenhuma tela existente, o totem permanece onde está.
Regra do valor de retorno
O valor devolvido pelo script com return controla o que acontece em seguida.
| Retorno | Efeito |
|---|---|
true ou outro valor verdadeiro que não seja texto |
Continua. O totem executa o fluxo vinculado e as demais ações do componente. |
| Um texto | O totem mostra o texto como aviso de erro e interrompe as ações do componente. |
false ou sem retorno |
Interrompe as ações do componente sem mostrar aviso. |
Por isso, a convenção recomendada é terminar scripts de clique com return true; e, na validação, devolver o texto do erro quando o valor informado não for aceito.
Exemplos práticos
1. Mostrar uma mensagem de boas-vindas e navegar
Gatilho Clique em um botão:
alert.success('Bem-vindo!', 'Seu atendimento foi solicitado.');
navigation.go = 'Tela Agradecimento';
return true;
2. Validar o que o cidadão digitou
Gatilho Validar em um campo de texto ou teclado numérico. O valor digitado chega em input.value:
if (!input.value || input.value.trim().length < 5) {
return 'Digite um código com pelo menos 5 caracteres.';
}
return true;
Enquanto o retorno for um texto, o totem mostra o aviso e não avança. Quando o valor é aceito, o script devolve true.
3. Guardar o valor digitado para usar no fluxo
Gatilho Validar em um campo de código:
if (!input.value || input.value.trim() === '') {
return 'Informe o código de atendimento.';
}
vars.codigoDigitado = input.value.trim();
return true;
A variável codigoDigitado passa a ficar disponível para outros scripts e para o fluxo de atendimento vinculado ao componente.
4. Consultar um sistema externo antes de continuar
Gatilho Clique em um botão de consulta:
try {
const resposta = await http.post('https://api.suaorganizacao.gov.br/consulta', {
codigo: vars.codigoDigitado
});
vars.nomeCidadao = resposta.body.nome;
vars.temAtendimento = resposta.body.encontrado;
if (resposta.body.encontrado) {
navigation.go = 'Tela Confirmacao';
} else {
alert.error('Atendimento não localizado', 'Confira o código e tente novamente.');
}
return true;
} catch (erro) {
alert.error('Falha na consulta', 'Tente novamente em instantes.');
return false;
}
5. Pedir confirmação antes de agir
Gatilho Clique em um botão de cancelamento:
const resposta = await alert.question('Deseja realmente cancelar este atendimento?', {
title: 'Confirmação',
confirm: 'Sim, cancelar',
cancel: 'Voltar'
});
if (!resposta.isConfirmed) {
return false;
}
navigation.go = 'Tela Inicial';
return true;
6. Navegação condicional por tipo de atendimento
Gatilho Clique em um botão que decide o caminho:
if (vars.preferencial === true) {
navigation.go = 'Tela Preferencial';
} else {
navigation.go = 'Tela Geral';
}
return true;
7. Contador de toques em uma tela
Gatilho Clique em uma imagem ou texto usado como botão:
vars.tentativas = (vars.tentativas || 0) + 1;
if (vars.tentativas >= 3) {
alert.error('Muitas tentativas', 'Procure um atendente no balcão.');
navigation.go = 'Tela Inicial';
return false;
}
return true;
Como combinar scripts e ações do componente
Ao acionar um componente, o totem executa, nesta ordem:
- Gatilhos com script — na ordem cadastrada. O primeiro que falhar interrompe a execução.
- Fluxo de atendimento vinculado ao componente.
- Ações configuradas do componente, como gravar variáveis, navegar, emitir evento e reiniciar.
Na prática, use o script para decidir e preparar dados, principalmente por meio de vars e navigation.go. Use as ações do componente para comportamentos fixos, como tela de destino, valores de variáveis e reinicialização.
Quando o script definir navigation.go, a navegação definida pelo script prevalece no destino.
Testando os scripts
- Use o botão Testar do editor para abrir a pré-visualização e executar a configuração atual, incluindo os scripts.
- Durante o teste, o painel Debug mostra a resolução, as variáveis em uso e os eventos acionados. Isso ajuda a verificar se o script gravou os valores esperados em
vars. - Teste também em um dispositivo real antes de publicar a configuração.
Boas práticas
- Termine scripts de clique com
return truequando a execução puder continuar. Sem retorno, o totem interrompe as ações do componente silenciosamente. - Use mensagens de erro curtas e claras na validação, pois são exibidas diretamente ao cidadão.
- Use
try/catchem chamadashttpe trate as falhas para evitar que o cidadão fique preso na tela. - Use nomes de tela exatos ao definir
navigation.go. O nome precisa corresponder à tela cadastrada. - Não coloque segredos no script, como chaves de API e senhas. O script é executado no navegador do totem e pode ser lido por quem tiver acesso ao dispositivo.
- Prefira as ações configuráveis quando não houver condição envolvida. Use scripts principalmente para decisões e operações que dependem de dados.
- Valide os valores antes de usá-los.
input.valuepode estar vazio e uma variável pode ainda não existir.