Zpět
5 min čtení
Pokročilé funkce

Webhooky a notifikace

Naučte se nastavit webhooky pro příjem automatických upozornění o událostech přepisu na VoxScriber.

Webhooky a notifikace

Nastavte automatická upozornění o výsledcích přepisů v reálném čase. Zjistěte, jak konfigurovat webhooky, implementovat zabezpečení a integrovat je se svými systémy.

Proč používat webhooky?

Notifikace v reálném čase

Získejte okamžité aktualizace o stavu přepisu.

  • Odpadá nutnost dotazování API (polling)
  • Snižuje latenci odpovědi
  • Zlepšuje uživatelský zážitek
  • Šetří prostředky serveru

Automatická integrace

Automatizujte pracovní postupy podle událostí.

  • Automatické zpracování výsledků
  • Spouštění navazujících kroků
  • Integrace se stávajícími systémy
  • Méně ručního zásahu

Dostupné události

| Událost | Popis | Payload | |---|---|---| | transcription.started | Zahájeno zpracování přepisu | ID nahrávky, engine, časové razítko | | transcription.progress | Aktualizace průběhu | ID nahrávky, procento, odhad | | transcription.completed | Přepis úspěšně dokončen | ID nahrávky, text, délka, kredity | | transcription.failed | Přepis selhal | ID nahrávky, chyba, typ chyby | | transcription.retry | Zahájen pokus o opakování | ID nahrávky, pokus, engine | | upload.completed | Nahrávání souboru dokončeno | ID nahrávky, velikost, formát | | credits.low | Kredity klesly pod nastavený limit | Aktuální zůstatek, limit |

Postup konfigurace

Přístup k nastavení

Dashboard -> Nastavení -> Webhooky

Přidání koncového bodu

Zadejte URL svého serveru, který bude přijímat notifikace

Výběr událostí

Vyberte, které události mají spouštět notifikace

Nastavení zabezpečení

Nastavte tajný klíč pro ověření HMAC podpisu

Otestování integrace

Použijte tlačítko "Odeslat test" k ověření koncového bodu

Aktivace webhooku

Potvrďte a aktivujte webhook

Příklady implementace

Node.js (Express)

const express = require('express');
const crypto = require('crypto');

const app = express();
const WEBHOOK_SECRET = process.env.WEBHOOK_SECRET;

app.post('/webhook/voxscriber', express.raw({ type: 'application/json' }), (req, res) => {
  // Ověření podpisu
  const signature = req.headers['x-webhook-signature'];
  const hash = crypto
    .createHmac('sha256', WEBHOOK_SECRET)
    .update(req.body)
    .digest('hex');

  if (signature !== hash) {
    return res.status(401).send('Neplatný podpis');
  }

  const event = JSON.parse(req.body);

  switch (event.type) {
    case 'transcription.completed':
      console.log('Přepis dokončen:', event.data.uploadId);
      // Zpracování výsledku
      break;
    case 'transcription.failed':
      console.log('Přepis selhal:', event.data.error);
      // Ošetření chyby
      break;
  }

  res.status(200).json({ received: true });
});

Python (Flask)

import hmac
import hashlib
from flask import Flask, request, jsonify

app = Flask(__name__)
WEBHOOK_SECRET = os.environ['WEBHOOK_SECRET']

@app.route('/webhook/voxscriber', methods=['POST'])
def handle_webhook():
    # Ověření podpisu
    signature = request.headers.get('X-Webhook-Signature')
    expected = hmac.new(
        WEBHOOK_SECRET.encode(),
        request.data,
        hashlib.sha256
    ).hexdigest()

    if not hmac.compare_digest(signature, expected):
        return jsonify({'error': 'Neplatný podpis'}), 401

    event = request.json

    if event['type'] == 'transcription.completed':
        process_transcription(event['data'])
    elif event['type'] == 'transcription.failed':
        handle_failure(event['data'])

    return jsonify({'received': True}), 200

Zabezpečení a osvědčené postupy

Vždy ověřujte HMAC podpis každého přijatého webhooku před zpracováním události. Nikdy nedůvěřujte webhookům bez ověření podpisu.

Bezpečnostní osvědčené postupy:

  • Ověřujte HMAC-SHA256 podpis každého požadavku
  • Používejte HTTPS na přijímacím koncovém bodu
  • Implementujte idempotenci (stejná událost zpracována pouze jednou)
  • Pravidelně obměňujte tajný klíč webhooku
  • Logujte všechny přijaté události pro audit

Implementační osvědčené postupy:

  • Odpovídejte 200 OK rychle (do 5 sekund)
  • Zpracovávejte události asynchronně
  • Pro vysokou zátěž implementujte frontu zpracování
  • Sledujte chyby doručení na dashboardu

Mechanismus opakování

Pokud váš koncový bod neodpoví úspěšně (2xx), VoxScriber opakuje doručení:

| Pokus | Interval | Popis | |---|---|---| | 1 | Ihned | První pokus | | 2 | 1 minuta | Po prvním selhání | | 3 | 5 minut | Druhé opakování | | 4 | 30 minut | Třetí opakování | | 5 | 2 hodiny | Poslední pokus |

Po 5 po sobě jdoucích selháních je webhook automaticky deaktivován a obdržíte e-mailové upozornění.

Řešení problémů

Webhook není přijímán

Možné příčiny: Nesprávná URL, blokování firewallem, neplatný SSL certifikát.

Řešení: Zkontrolujte URL v dashboardu, povolte IP adresu VoxScriberu ve firewallu, ověřte svůj SSL certifikát.

Neplatný podpis

Možné příčiny: Nesprávný tajný klíč, odlišné kódování těla, middleware měnící tělo požadavku.

Řešení: Potvrďte tajný klíč v dashboardu, použijte surové tělo pro ověření, před ověřením zakažte middleware pro parsování.

Duplicitní události

Možné příčiny: Opakování po timeoutu, pomalá odpověď serveru.

Řešení: Implementujte idempotenci pomocí event.id, rychle odpovídejte 200 OK, zpracovávejte asynchronně.

Použijte panel monitorování webhooků v Dashboardu ke kontrole doručení, chyb a payloadů. To výrazně zjednoduší ladění během integrace.

Další zdroje