Tillbaka
5 min läsning
Avancerade funktioner

Webhooks & Notifikationer

Lär dig hur du konfigurerar webhooks för att få automatiska notifikationer om transkriberingshändelser på VoxScriber.

Webhooks & Notifikationer

Konfigurera realtidsnotifikationer om dina transkriberingar. Lär dig hur du sätter upp webhooks, implementerar säkerhet och integrerar med dina system.

Varför använda webhooks?

Realtidsnotifikationer

Få omedelbara uppdateringar om transkriberingsstatus.

  • Eliminerar behovet av polling
  • Minskar svarstiden
  • Förbättrar användarupplevelsen
  • Sparar serverresurser

Automatiserad integration

Automatisera arbetsflöden baserat på händelser.

  • Automatisk resultatbearbetning
  • Utlösare för nästa steg
  • Integration med befintliga system
  • Minskat manuellt ingripande

Tillgängliga händelser

| Händelse | Beskrivning | Nyttolast | |---|---|---| | transcription.started | Transkribering påbörjad | Uppladdnings-ID, motor, tidsstämpel | | transcription.progress | Förlopp uppdaterat | Uppladdnings-ID, procentandel, uppskattning | | transcription.completed | Transkribering slutförd | Uppladdnings-ID, text, varaktighet, krediter | | transcription.failed | Transkribering misslyckades | Uppladdnings-ID, fel, feltyp | | transcription.retry | Försök att göra om påbörjat | Uppladdnings-ID, försök, motor | | upload.completed | Filuppladdning slutförd | Uppladdnings-ID, storlek, format | | credits.low | Krediter under inställt tröskelvärde | Nuvarande saldo, tröskelvärde |

Steg-för-steg-konfiguration

Gå till inställningar

Dashboard -> Inställningar -> Webhooks

Lägg till en slutpunkt

Ange URL:en till din server som ska ta emot notifikationerna

Välj händelser

Välj vilka händelser som ska utlösa notifikationer

Konfigurera säkerhet

Ange en hemlighet för HMAC-signaturverifiering

Testa integrationen

Använd knappen "Skicka test" för att validera din slutpunkt

Aktivera webhooken

Bekräfta och aktivera webhooken

Implementeringsexempel

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) => {
  // Verify signature
  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('Invalid signature');
  }

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

  switch (event.type) {
    case 'transcription.completed':
      console.log('Transcription completed:', event.data.uploadId);
      // Process result
      break;
    case 'transcription.failed':
      console.log('Transcription failed:', event.data.error);
      // Handle error
      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():
    # Verify signature
    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': 'Invalid signature'}), 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

Säkerhet & bästa praxis

Verifiera alltid HMAC-signaturen för varje mottagen webhook innan du bearbetar händelsen. Lita aldrig på webhooks utan signaturverifiering.

Bästa praxis för säkerhet:

  • Validera HMAC-SHA256-signaturen för varje begäran
  • Använd HTTPS på den mottagande slutpunkten
  • Implementera idempotens (samma händelse bearbetas bara en gång)
  • Rotera webhook-hemligheten regelbundet
  • Logga alla mottagna händelser för granskning

Bästa praxis för implementering:

  • Svara med 200 OK snabbt (inom 5 sekunder)
  • Bearbeta händelser asynkront
  • Implementera en bearbetningskö för hög belastning
  • Övervaka leveransmisslyckanden på dashboarden

Återförsöksmekanism

När din slutpunkt inte svarar framgångsrikt (2xx) gör VoxScriber flera återförsök:

| Försök | Intervall | Beskrivning | |---|---|---| | 1 | Omedelbart | Första försöket | | 2 | 1 minut | Efter initialt misslyckande | | 3 | 5 minuter | Andra återförsöket | | 4 | 30 minuter | Tredje återförsöket | | 5 | 2 timmar | Sista försöket |

Efter 5 på varandra följande misslyckanden inaktiveras webhooken automatiskt och du får en e-postnotifikation.

Felsökning

Webhooken tas inte emot

Möjliga orsaker: Felaktig URL, brandvägg blockerar, ogiltigt SSL-certifikat.

Lösningar: Kontrollera URL:en i dashboarden, tillåt VoxScriber IP i din brandvägg, validera ditt SSL-certifikat.

Ogiltig signatur

Möjliga orsaker: Felaktig hemlighet, annan kroppskodning, mellanprogram som ändrar kroppen.

Lösningar: Bekräfta hemligheten i dashboarden, använd rå kropp för verifiering, inaktivera tolkningsmellanprogram före verifiering.

Dubbla händelser

Möjliga orsaker: Återförsök efter timeout, långsam serversvar.

Lösningar: Implementera idempotens med event.id, svara snabbt med 200 OK, bearbeta asynkront.

Använd webhook-övervakningspanelen i Dashboard för att kontrollera leveranser, misslyckanden och nyttolaster. Det förenklar felsökning under integrationen avsevärt.

Fortsätt lära dig