Configurando
É necessário que a url do cliente esteja em https, caso contrário irá falhar a solicitação
Acesse o Painel do Desko (Usuário Admin ou Master) e Configure um WebHook

Re-Tentativas

Em caso de falha, por exempol: o cliente retornar um Http Status diferente de 200, tentamos mais 5x, para não sobrecarregar a fila e não sobrecarregar o cliente, vamos esperar algum tempo entre cada tentativa.
Por padrão, esperamos 10 segundos entre a primeira e a segunda tentativa, 100 segundos entre a terceira e a quarta, 1000 entre a quarta e a quinta e assim por diante.
A quantidade máxima de segundos que esperaremos é 100.000, o que é cerca de 27 horas.

Validação WebHook

O Cliente deve validar a origem do POST, isto é, se ele foi realmente enviado pelo Desko, para fazer isso, deve-se calcular o HMAC-SHA1 do body da requisição HTTP e compará-lo com o header X-Hub-Signature.
Descrição dos parâmetros que utilizamos nos exemplos abaixo:
parâmetro no exemplo
descrição
{chave de integração do webhook}
chave de segurança configurado no painel desko
{conteudo do payload}
JSON recebido no payload/body do POST
{signature}
signature recebido em X-Hub-Signature
Exemplos
PHP
Curl
NodeJS
1
$signature = hash_hmac('sha256', file_get_contents('php://input'), {chave de integração do webhook});
2
if ($signature === $_SERVER['HTTP_SIGNATURE']) {
3
printf('Assinatura Valida, foi recebido pelo Desko');
4
}
Copied!
1
EXPECTED_SIGNATURE=`cat {conteudo do payload} | openssl dgst -sha1 -hmac "{chave de integração do webhook}"`
2
SIGNATURE={signature}
3
if [ "$SIGNATURE" = "$EXPECTED_SIGNATURE" ]; then
4
echo "Assinatura Valida, foi recebido pelo Desko"
5
fi
Copied!
1
import { createHmac } from 'crypto'
2
const signature = createHmac('sha1', {chave de integração do webhook}).update({conteudo do payload}).digest('hex')
3
if (equals(signature, {signature})) {
4
console.log('Assinatura Valida, foi recebido pelo Desko')
5
}
Copied!
Last modified 3mo ago