Hub360
Hub Meta Apps
Painel de conexão de canais Meta
Hub360
Hub360
Monitorar
Gerenciar
Recursos
Visão geral
monitorando
    –
    Apps
    –
    Canais conectados
    –
    Interações (1h)
    –
    Encaminhamentos (1h)
    Atividade — última hora
    Mix de canais
    Interações recentes

    Console ao vivo

    Atualiza automaticamente conforme os apps Meta enviam webhooks.

    Canais conectados

    Cada canal recebe os webhooks do seu app diretamente neste hub.

    Apps Meta

    Cada app tem credenciais, URL de webhook e destinos de encaminhamento próprios.

    Geral

    Preferências globais do painel.

    Como configurar seu app na Meta

    URLs deste hub

    —
    —
    —
    —
    —

    Evidências (App Review)

    Consumir via API

    Aprenda a receber os eventos normalizados do Hub e a interagir com os canais conectados.

    Webhook Relays (Encaminhamentos)

    O Hub Meta Apps retransmite todos os eventos recebidos da Meta (WhatsApp, Messenger, Instagram) para os destinos configurados em cada App.

    Cabeçalhos HTTP Enviados:

    • Content-Type: application/json
    • X-Hub-App: [APP_ID_NO_HUB]
    • X-Hub-Signature-256: sha256=[ASSINATURA]

    Validando a Assinatura (Segurança):

    Para garantir que a requisição partiu do Hub, você deve calcular a assinatura HMAC-SHA256 do payload recebido usando o App Secret do aplicativo Meta correspondente e compará-la com o cabeçalho X-Hub-Signature-256.

    Exemplos de Código (Recebimento)

    Veja como receber os webhooks e validar a assinatura em diferentes linguagens.
    const express = require('express');
    const crypto = require('crypto');
    const app = express();
    
    app.use(express.text({ type: 'application/json' }));
    
    app.post('/webhook', (req, res) => {
      const signature = req.headers['x-hub-signature-256'];
      const appSecret = 'SEU_APP_SECRET_DA_META';
      
      if (signature) {
        const elements = signature.split('=');
        const signatureHash = elements[1];
        const expectedHash = crypto
          .createHmac('sha256', appSecret)
          .update(req.body)
          .digest('hex');
          
        if (signatureHash !== expectedHash) {
          console.error('Assinatura inválida!');
          return res.status(401).send('Invalid signature');
        }
      }
    
      const payload = JSON.parse(req.body);
      console.log('Evento recebido:', payload);
      res.sendStatus(200);
    });
    
    app.listen(3000, () => console.log('Webhook rodando na porta 3000'));
    from flask import Flask, request, jsonify
    import hmac
    import hashlib
    
    app = Flask(__name__)
    
    @app.route('/webhook', methods=['POST'])
    def webhook():
        signature = request.headers.get('X-Hub-Signature-256')
        app_secret = b'SEU_APP_SECRET_DA_META'
        
        if signature:
            sha_name, signature_hash = signature.split('=')
            expected_hash = hmac.new(
                app_secret,
                request.data,
                hashlib.sha256
            ).hexdigest()
            
            if not hmac.compare_digest(signature_hash, expected_hash):
                return 'Invalid signature', 401
                
        payload = request.get_json()
        print("Evento recebido:", payload)
        return 'OK', 200
    
    if __name__ == '__main__':
        app.run(port=3000)
    # Exemplo de teste local simulando o payload enviado pelo Hub
    curl -X POST http://localhost:3000/webhook \
      -H "Content-Type: application/json" \
      -H "X-Hub-App: app_123456" \
      -H "X-Hub-Signature-256: sha256=13b94a2b..." \
      -d '{
        "object": "whatsapp_business_account",
        "entry": [{
          "id": "123456789",
          "changes": [{
            "value": {
              "messaging_product": "whatsapp",
              "metadata": {
                "display_phone_number": "5535988888888",
                "phone_number_id": "987654321"
              },
              "messages": [{
                "from": "5535999999999",
                "id": "wamid.HBg...",
                "timestamp": "1672531199",
                "text": {
                  "body": "Olá, Hub!"
                },
                "type": "text"
              }]
            },
            "field": "messages"
          }]
        }]
      }'