Lær, hvordan du opsætter webhooks til at modtage automatiske notifikationer om transskriptionshændelser på VoxScriber.
Opsæt realtidsautomatiske notifikationer om dine transskriptioner. Lær, hvordan du konfigurerer webhooks, implementerer sikkerhed og integrerer med dine systemer.
Modtag øjeblikkelige opdateringer om transskriptionsstatus.
Automatiser arbejdsgange baseret på hændelser.
| Hændelse | Beskrivelse | Nyttelast |
|---|---|---|
| transcription.started | Transskription startede behandling | Upload-id, motor, tidsstempel |
| transcription.progress | Fremskridt opdateret | Upload-id, procent, estimat |
| transcription.completed | Transskription fuldført | Upload-id, tekst, varighed, kreditter |
| transcription.failed | Transskription mislykkedes | Upload-id, fejl, fejltype |
| transcription.retry | Genforsøg startet | Upload-id, forsøg, motor |
| upload.completed | Filupload fuldført | Upload-id, størrelse, format |
| credits.low | Kreditter under konfigureret grænse | Nuværende saldo, grænse |
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 });
});
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
Verificér altid HMAC-signaturen for hver modtaget webhook, før hændelsen behandles. Stol aldrig på webhooks uden signaturverifikation.
Når dit slutpunkt ikke svarer succesfuldt (2xx), gentager VoxScriber leveringen:
| Forsøg | Interval | Beskrivelse | |---|---|---| | 1 | Øjeblikkeligt | Første forsøg | | 2 | 1 minut | Efter første fejl | | 3 | 5 minutter | Andet genforsøg | | 4 | 30 minutter | Tredje genforsøg | | 5 | 2 timer | Sidste forsøg |
Efter 5 på hinanden følgende fejl deaktiveres webhook'en automatisk, og du modtager en e-mail-notifikation.
Mulige årsager: Forkert URL, firewall-blokering, ugyldigt SSL-certifikat.
Løsninger: Verificér URL'en i dashboardet, tillad VoxScriber's IP i din firewall, valider dit SSL-certifikat.
Mulige årsager: Forkert hemmelighed, anderledes kropskodning, middleware der ændrer kropsindholdet.
Løsninger: Bekræft hemmeligheden i dashboardet, brug den rå krop til verifikation, deaktivér parsing-middleware før verifikation.
Mulige årsager: Genforsøg efter timeout, langsom serverrespons.
Løsninger: Implementér idempotens ved at bruge event.id, svar hurtigt med 200 OK, behandl asynkront.
Brug webhook-overvågningspanelet i Dashboard til at tjekke leverancer, fejl og nyttelast. Dette forenkler fejlfinding under integration betydeligt.