ALTIAltiboothDocumentação
SiteEntrar

Referência de plugins

Manifesto, ganchos, permissões e todas as funções disponíveis.

Esta página lista tudo que um plugin pode declarar e chamar. Para um passo a passo, veja Criar um plugin.

Estrutura de pastas#

%APPDATA%\Altibooth2\plugins\
    meu-plugin\
        plugin.json        <- manifesto
        principal.js       <- código
    estado.json            <- quem está ligado e o que foi configurado

O Altibooth lê duas pastas: a de fábrica, em plugins\ ao lado do Altibooth2.exe, e a do dono da cabine, em %APPDATA%\Altibooth2\plugins\. Com o mesmo id nas duas, vale a do dono da cabine. Atualizar o programa repõe a pasta de fábrica, então copie para a sua pasta o plugin que você for alterar.

O estado.json fica fora da pasta do plugin de propósito: trocar a versão do plugin não apaga a configuração de quem já usava.

Manifesto (plugin.json)#

CampoTipoDescrição
idtextoIdentificador único. Vira nome de pasta e chave de estado.
nometextoNome mostrado na tela de Plugins.
versaotextoVersão do plugin.
autortextoQuem fez.
descricaotextoO que ele faz. Aparece ao abrir o cartão.
principaltextoArquivo JavaScript, dentro da pasta.
permissoeslistaVeja abaixo.
configuracoeslistaCampos de configuração.

Campos de configuração#

Cada item de configuracoes vira um campo no formulário do plugin:

ChaveDescrição
chaveNome para ler o valor com altibooth.config("chave").
nomeRótulo do campo.
tipotexto, numero, senha, booleano ou opcao.
padraoValor inicial.
opcoesLista de valores, só para o tipo opcao.
ajudaFrase curta de apoio, opcional.

Campos senha são protegidos no Windows (DPAPI, por conta de usuário) e não aparecem em logs.

Permissões#

NomeDá direito a
sessaoacompanhar e segurar o início de uma sessão
teladesenhar por cima da tela da cabine
redefalar com a internet
arquivosler e gravar dentro da pasta do próprio plugin e em altibooth.dados
impressaoacompanhar e cancelar impressão
eventosler a lista de eventos e as fotos da sessão

O que não for pedido não existe: altibooth.rede fica undefined para quem não pediu rede. A tela de Plugins mostra ao dono da cabine, em português, o que cada plugin pediu.

Ganchos#

Declare no principal.js só os que interessarem. O Altibooth chama os que existem.

GanchoQuando
aoCarregar()O plugin foi carregado, na abertura do programa.
aoDescarregar()O programa está fechando.
antesDaSessao()Alguém tocou para começar. O plugin pode segurar.
aoCancelarCobranca(motivo)A sessão foi liberada por outro caminho no meio da sua cobrança, por exemplo um voucher lido. Desfaça a tentativa e saia da tela sem recado.
aoReembolsar(motivo, sessao)A cabine não entregou esta sessão (a impressão falhou). Devolva o dinheiro dela.
aoComecarSessao(eventoId, sessao)A sessão começou. sessao é o código dela.
aoTerminarSessao(eventoId, fotos)A sessão terminou. fotos é a quantidade.
aoTirarFoto(caminho, indice)Uma foto foi feita.
antesDeImprimir(caminho)Vai imprimir. Devolva false para cancelar.
aoSairDaTela()A tela da cabine foi fechada.
aoMudarConfig()O dono da cabine clicou em Guardar.

API#

Tudo fica no objeto global altibooth.

Geral#

ItemDescrição
altibooth.versaoVersão do Altibooth.
altibooth.idiomaIdioma em uso.
altibooth.log(texto)Escreve no log do programa.
altibooth.config(chave)Valor que o dono da cabine escolheu.
altibooth.aTempo(ms, funcao)Executa a função depois de ms milissegundos.
altibooth.uuid()Gera um identificador único.
altibooth.recado(qual)Texto de recado configurado pelo dono da cabine (por exemplo "pagamento").
altibooth.eventos()Lista [{id, nome}]. Precisa de eventos.

altibooth.sessao#

ItemDescrição
eventoId do evento.
eventoNomeNome do evento.
chaveChave de acesso usada, quando houver.
valorPreço da sessão em centavos. Só leitura.
jaPagotrue quando a sessão veio de voucher ou chave: não há o que cobrar.
segurar()Trava o início da sessão.
liberar()Solta a sessão.
recusar(motivo)Cancela a tentativa e mostra o motivo.
cabineLivre()true se a cabine está parada na tela inicial e dá para desenhar.

altibooth.tela#

mostrar(desenho) desenha um painel por cima da tela da cabine. fechar() remove. Campos do desenho:

CampoDescrição
tituloTexto grande.
textoTexto de apoio.
qrConteúdo de um QR code, desenhado pelo programa.
imagemNome de um arquivo de imagem dentro da pasta do plugin.
botoesLista [{texto, aoClicar}].
aoTocarFunção chamada no toque em qualquer área do painel.
valor, colunas, separador, rodapeLayout de cobrança: um valor em cima e até duas colunas (titulo, figura, qr) lado a lado.

Chamar mostrar de novo substitui o painel atual.

altibooth.rede.pedir(pedido, aoResponder)#

Faz uma requisição HTTP. Precisa de rede.

altibooth.rede.pedir({
    url: "https://exemplo.com/api",
    metodo: "POST",                       // padrão GET
    corpo: "{\"a\":1}",
    cabecalhos: { "Content-Type": "application/json" },
    tempoLimiteMs: 10000
}, function (r) {
    // r.ok, r.codigo, r.corpo, r.erro
});

Redirecionamentos não são seguidos.

altibooth.arquivo#

Lê e grava dentro da pasta do plugin: ler(nome), gravar(nome, conteudo) e existe(nome). Recusa caminho absoluto e qualquer tentativa de sair da pasta, inclusive por ... Precisa de arquivos.

altibooth.dados#

Mesmas funções de arquivo, mas numa pasta gravável por usuário, separada da pasta de instalação. Gravações são atômicas. Use para o que precisa sobreviver a atualizações do plugin.

Ciclo de vida#

O que um plugin não alcança#

Plugins que acompanham o programa#

Os dois nascem desligados. O código de cada um está na pasta do plugin, e o do Boas-vindas é um bom ponto de partida.