ALTIAltiboothDocumentação
SiteEntrar

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#

  1. Abra o Altibooth e entre em Plugins. O Olá, festa aparece na lista.
  2. Clique no cartão, confira as permissões e ajuste o título.
  3. Ligue o plugin e clique em Reiniciar agora.
  4. 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#

7. Um exemplo completo#

O programa traz o plugin Boas-vindas e agradecimento na pasta plugins ao lado do Altibooth2.exe. Ele usa:

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.