Takaisin
5 min lukuaika
Edistyneet ominaisuudet

Verkkokoukut & Ilmoitukset

Opi määrittämään verkkokoukut saadaksesi automaattisia ilmoituksia litterointitapahtumista VoxScriberissa.

Verkkokoukut & Ilmoitukset

Määritä reaaliaikaiset automaattiset ilmoitukset litteroinneistasi. Opi konfiguroimaan verkkokoukut, toteuttamaan turvallisuus ja integroimaan järjestelmiisi.

Miksi käyttää verkkokoukkuja?

Reaaliaikaiset ilmoitukset

Saat heti päivityksiä litteroinnin tilasta.

  • Poistaa tarpeen kyselyille
  • Vähentää vasteaikaa
  • Parantaa käyttökokemusta
  • Säästää palvelinresursseja

Automatisoitu integraatio

Automatisoi työnkulkuja tapahtumien perusteella.

  • Automaattinen tulosten käsittely
  • Käynnistys seuraaville vaiheille
  • Integraatio olemassa oleviin järjestelmiin
  • Vähentää manuaalista työtä

Saatavilla olevat tapahtumat

| Tapahtuma | Kuvaus | Tietosisältö | |---|---|---| | transcription.started | Litteroinnin käsittely aloitettu | Latauksen tunnus, moottori, aikaleima | | transcription.progress | Edistyminen päivitetty | Latauksen tunnus, prosenttiosuus, arvio | | transcription.completed | Litterointi onnistuneesti valmis | Latauksen tunnus, teksti, kesto, hyvitykset | | transcription.failed | Litterointi epäonnistui | Latauksen tunnus, virhe, virheen tyyppi | | transcription.retry | Uudelleenyritys aloitettu | Latauksen tunnus, yritys, moottori | | upload.completed | Tiedoston lataus valmis | Latauksen tunnus, koko, muoto | | credits.low | Hyvitykset alle asetetun kynnyksen | Nykyinen saldo, kynnys |

Vaiheittainen konfigurointi

Avaa asetukset

Hallintapaneeli -> Asetukset -> Verkkokoukut

Lisää päätepiste

Syötä palvelimesi URL, joka vastaanottaa ilmoitukset

Valitse tapahtumat

Valitse, mitkä tapahtumat laukaisevat ilmoituksia

Määritä turvallisuus

Aseta salaisuus HMAC-allekirjoituksen vahvistusta varten

Testaa integraatio

Käytä "Lähetä testi" -painiketta vahvistaaksesi päätepisteen

Aktivoi verkkokoukku

Vahvista ja aktivoi verkkokoukku

Toteutusesimerkit

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

Turvallisuus & Parhaat käytännöt

Tarkista aina HMAC-allekirjoitus jokaisesta vastaanotetusta verkkokoukusta ennen tapahtuman käsittelyä. Älä koskaan luota verkkokoukkuihin ilman allekirjoituksen vahvistusta.

Turvallisuuden parhaat käytännöt:

  • Tarkista jokaisen pyynnön HMAC-SHA256-allekirjoitus
  • Käytä HTTPS-protokollaa vastaanottavassa päätepisteessä
  • Toteuta idempotenssi (sama tapahtuma käsitellään vain kerran)
  • Vaihda verkkokoukun salaisuus määräajoin
  • Kirjaa kaikki vastaanotetut tapahtumat tarkastusta varten

Toteutuksen parhaat käytännöt:

  • Vastaa 200 OK -tilakoodilla nopeasti (5 sekunnin kuluessa)
  • Käsittele tapahtumat asynkronisesti
  • Toteuta käsittelyjono suurille kuormille
  • Tarkkaile toimitusvirheitä hallintapaneelista

Uudelleenyritysmekanismi

Kun päätepisteesi ei vastaa onnistuneesti (2xx), VoxScriber yrittää uudelleen:

| Yritys | Väli | Kuvaus | |---|---|---| | 1 | Välittömästi | Ensimmäinen yritys | | 2 | 1 minuutti | Ensimmäisen epäonnistumisen jälkeen | | 3 | 5 minuuttia | Toinen uudelleenyritys | | 4 | 30 minuuttia | Kolmas uudelleenyritys | | 5 | 2 tuntia | Viimeinen yritys |

Viiden peräkkäisen epäonnistumisen jälkeen verkkokoukku poistetaan automaattisesti käytöstä ja saat siitä sähköposti-ilmoituksen.

Vianmääritys

Verkkokoukkua ei vastaanoteta

Mahdollisia syitä: Väärä URL, palomuuri estää, virheellinen SSL-sertifikaatti.

Ratkaisut: Tarkista URL hallintapaneelista, salli VoxScriberin IP-osoite palomuurissa, tarkista SSL-sertifikaattisi.

Virheellinen allekirjoitus

Mahdollisia syitä: Väärä salaisuus, eri koodaus pyynnön rungolle, middleware muuttaa runkoa.

Ratkaisut: Vahvista salaisuus hallintapaneelissa, käytä raakaa runkoa vahvistukseen, poista jäsentävä middleware ennen vahvistusta.

Päällekkäiset tapahtumat

Mahdollisia syitä: Uudelleenyritys aikakatkaisun jälkeen, hidas palvelinvastaus.

Ratkaisut: Toteuta idempotenssi käyttämällä event.id-kenttää, vastaa 200 OK nopeasti, käsittele asynkronisesti.

Käytä verkkokoukkujen valvontapaneelia hallintapaneelissa tarkistaaksesi toimituksia, virheitä ja tietosisältöjä. Tämä yksinkertaistaa huomattavasti vianetsintää integraation aikana.

Jatka oppimista