Webhooks na ficha
A ficha não acessa a internet. A única saída são os webhooks: a ficha manda dados com um nome (“rolagens”), e o mestre da mesa decide para onde eles vão, colando o endereço de um webhook do Zapier, do Make ou do IFTTT. Assim a ficha nunca escolhe o destino, e o endereço não aparece para os jogadores.
Declarar
Seção intitulada “Declarar”No manifesto:
"webhooks": [ { "name": "rolagens", "description": "Cada rolagem da ficha", "example": { "total": 17, "rolagem":"1d20+5" } } ]name: minúsculas, números,-e_. A ficha usa esse nome para mandar.description: o que o webhook manda, para o mestre saber o que está ligando.example(opcional): um exemplo dos dados, até 4 KB.- Até 20 webhooks por plugin.
Ao instalar, o RPG Desk mostra os webhooks ao mestre, que liga os endereços em Configurações da mesa → Plugins → Integrações. Veja Integrações.
const r = await RPGDesk.webhooks.send('rolagens', { total: 17, rolagem: '1d20+5' });if (!r.ok) RPGDesk.ui.toast(`O webhook não foi: ${r.error}`, 'error');O resultado é { ok, status, body, error }:
error |
Quando |
|---|---|
null |
deu certo; body é a resposta do serviço |
'not-found' |
o manifesto não declara um webhook com esse nome |
'not-configured' |
o mestre ainda não ligou um endereço para esse webhook |
'forbidden' |
o webhook é Só mestres, e quem disparou é jogador |
'bad-request' |
os dados passam de 16 KB |
'rate-limited' |
envios demais em pouco tempo na mesa |
'timeout' |
o serviço não respondeu em 10 segundos |
'failed' |
o serviço respondeu com erro, ou não deu para chegar nele |
O RPG Desk manda os seus dados em data, junto com o plugin, o webhook, a mesa, quem disparou e a hora.
O formato está em Integrações.
Exemplo: cada rolagem no Discord
Seção intitulada “Exemplo: cada rolagem no Discord”<button id="atacar">Atacar</button><script> document.getElementById('atacar').addEventListener('click', async () => { const r = await RPGDesk.dice.roll('1d20+5', { label: 'Ataque' }); await RPGDesk.webhooks.send('rolagens', { personagem: RPGDesk.doc.get('nome'), total: r.total }); });</script>Do outro lado, um Zap com o gatilho Catch Hook e a ação de mandar uma mensagem num canal do
Discord, usando data.personagem e data.total.