Criar um plugin
Do zero ao plugin funcionando, passo a passo.
Neste guia você cria um plugin que mostra uma tela de boas-vindas antes de cada sessão. Não precisa instalar nada além de um editor de texto.
1. Crie a pasta#
Dentro de %APPDATA%\Altibooth2\plugins, crie uma pasta com o nome do plugin, sem espaços:
%APPDATA%\Altibooth2\plugins\
ola-festa\
plugin.json
principal.js
2. Escreva o manifesto#
O arquivo plugin.json descreve o plugin. Os campos de configuracoes viram um formulário na tela de Plugins, sem você desenhar interface nenhuma.
{
"id": "ola-festa",
"nome": "Olá, festa",
"versao": "1.0",
"autor": "Seu nome",
"descricao": "Mostra uma tela de boas-vindas antes de cada sessão.",
"principal": "principal.js",
"permissoes": ["sessao", "tela"],
"configuracoes": [
{"chave": "titulo", "nome": "Título", "tipo": "texto",
"padrao": "Bem-vindo à festa!"},
{"chave": "botao", "nome": "Texto do botão", "tipo": "texto",
"padrao": "Começar"}
]
}
O id precisa ser único (só letras minúsculas, números e hífen) e é o mesmo texto do nome da pasta. As permissoes são só as que o plugin usa: aqui, sessao para segurar o início e tela para desenhar.
3. Escreva o código#
O arquivo principal.js declara funções com nomes especiais, chamadas de ganchos. O Altibooth chama cada uma no momento certo.
function antesDaSessao() {
altibooth.sessao.segurar(); // a sessão espera
altibooth.tela.mostrar({
titulo: altibooth.config("titulo"),
botoes: [{
texto: altibooth.config("botao"),
aoClicar: function () {
altibooth.tela.fechar();
altibooth.sessao.liberar(); // a sessão começa
}
}]
});
}
antesDaSessao roda quando alguém toca para começar. O plugin segura a sessão, mostra a tela e só libera quando o convidado toca no botão.
4. Ligue e teste#
- Abra o Altibooth e entre em Plugins. O Olá, festa aparece na lista.
- Clique no cartão, confira as permissões e ajuste o título.
- Ligue o plugin e clique em Reiniciar agora.
- Inicie um evento e toque na tela. A tela de boas-vindas aparece.
Se o plugin tiver erro de sintaxe, a tela de Plugins mostra o arquivo e a linha, e ele não liga.
5. Entregar o plugin a outra pessoa#
Compacte a pasta num .zip (com plugin.json e principal.js dentro). Quem recebe abre Plugins, clica em Escolher plugin e seleciona o .zip. O plugin entra desligado e a pessoa vê as permissões antes de ligar.
6. Depurar#
altibooth.log("texto")escreve no log do programa (veja Solução de problemas).- Erro durante um gancho desliga o plugin na hora, e o motivo fica no log e na tela de Plugins.
- Mudar a configuração não exige reiniciar: o plugin recebe o gancho
aoMudarConfig(). - Mudar o
principal.jsexige reiniciar o Altibooth.
7. Um exemplo completo#
O programa traz o plugin Boas-vindas e agradecimento na pasta plugins ao lado do Altibooth2.exe. Ele usa:
antesDaSessaopara a tela de boas-vindas, com botão e tempo limite opcional;aoTerminarSessaopara a tela de agradecimento;altibooth.arquivopara guardar o número de sessões de cada evento;- campos de configuração de texto, número e liga/desliga.
Abra o principal.js dele, que é curto e comentado, e copie para o seu como ponto de partida.
Receitas#
Recusar sessões fora do horário#
function antesDaSessao() {
var hora = new Date().getHours();
if (hora < 18 || hora >= 23)
altibooth.sessao.recusar("A cabine abre às 18h");
}
Esperar o seu servidor confirmar o pagamento#
function antesDaSessao() {
altibooth.sessao.segurar();
altibooth.rede.pedir({
url: "https://seu-servidor.com/cobrancas",
metodo: "POST",
corpo: JSON.stringify({ valor: altibooth.sessao.valor }),
cabecalhos: { "Content-Type": "application/json" }
}, function (r) {
if (!r.ok) { altibooth.sessao.recusar("Pagamento indisponível"); return; }
var cobranca = JSON.parse(r.corpo);
altibooth.tela.mostrar({ titulo: "Pague para começar", qr: cobranca.qr });
consultar(cobranca.id);
});
}
function consultar(id) {
altibooth.aTempo(2000, function () {
altibooth.rede.pedir({ url: "https://seu-servidor.com/cobrancas/" + id },
function (r) {
if (r.ok && JSON.parse(r.corpo).pago) {
altibooth.tela.fechar();
altibooth.sessao.liberar();
} else {
consultar(id);
}
});
});
}
Esta receita precisa das permissões sessao, tela e rede. Um plugin de cobrança de verdade também trata o tempo esgotado, o gancho aoCancelarCobranca e o reembolso em aoReembolsar. Veja a Referência.
