webhook-router
Voice Router SDK - Webhook Normalization / webhook-router
webhook-router
Classes
WebhookRouter
Webhook router with automatic provider detection
Automatically detects the webhook provider from the payload structure and routes to the appropriate handler for parsing and normalization.
Examples
import { WebhookRouter } from '@meeting-baas/sdk';
const router = new WebhookRouter();
// Auto-detect provider and parse webhook
const result = router.route(req.body);
if (result.success) {
console.log('Provider:', result.provider);
console.log('Event type:', result.event?.eventType);
console.log('Transcript ID:', result.event?.data?.id);
} else {
console.error('Error:', result.error);
}const router = new WebhookRouter();
const result = router.route(req.body, {
verification: {
signature: req.headers['x-signature'],
secret: process.env.WEBHOOK_SECRET,
rawBody: req.rawBody
}
});
if (!result.verified) {
return res.status(401).json({ error: 'Invalid signature' });
}const router = new WebhookRouter();
// Skip auto-detection, use specific provider
const result = router.route(req.body, {
provider: 'gladia'
});import express from 'express';
import { WebhookRouter } from '@meeting-baas/sdk';
const app = express();
const router = new WebhookRouter();
app.post('/webhooks/transcription', express.json(), (req, res) => {
const result = router.route(req.body, {
verification: {
signature: req.headers['x-signature'] as string,
secret: process.env.WEBHOOK_SECRET!
}
});
if (!result.success) {
return res.status(400).json({ error: result.error });
}
if (!result.verified) {
return res.status(401).json({ error: 'Invalid signature' });
}
// Process webhook event
console.log('Received webhook from:', result.provider);
console.log('Event:', result.event);
res.status(200).json({ received: true });
});Constructors
Constructor
new WebhookRouter():
WebhookRouter
Returns
Methods
detectProvider()
detectProvider(
payload,options?):TranscriptionProvider|undefined
Detect provider from webhook payload structure
Parameters
| Parameter | Type | Description |
|---|---|---|
payload | unknown | Raw webhook payload |
options? | { queryParams?: Record<string, string>; userAgent?: string; } | Detection options (query params, user agent, etc.) |
options.queryParams? | Record<string, string> | - |
options.userAgent? | string | - |
Returns
TranscriptionProvider | undefined
Detected provider or undefined
getHandler()
getHandler(
provider):BaseWebhookHandler|undefined
Get handler for a specific provider
Parameters
| Parameter | Type | Description |
|---|---|---|
provider | TranscriptionProvider | Provider name |
Returns
BaseWebhookHandler | undefined
Handler instance or undefined
getProviders()
getProviders():
TranscriptionProvider[]
Get all registered providers
Returns
TranscriptionProvider[]
Array of provider names
route()
route(
payload,options?):WebhookRouterResult
Route webhook payload to the correct handler
Parameters
| Parameter | Type | Description |
|---|---|---|
payload | unknown | Raw webhook payload |
options? | WebhookRouterOptions | Routing options (provider, verification, etc.) |
Returns
Routing result with parsed event
routeToProvider()
privaterouteToProvider(payload,provider,options?):WebhookRouterResult
Route to a specific provider handler
Parameters
| Parameter | Type |
|---|---|
payload | unknown |
provider | TranscriptionProvider |
options? | WebhookRouterOptions |
Returns
validate()
validate(
payload,options?):WebhookValidation
Validate webhook payload
Parameters
| Parameter | Type | Description |
|---|---|---|
payload | unknown | Raw webhook payload |
options? | WebhookRouterOptions | Routing options |
Returns
Validation result
verify()
verify(
payload,provider,options):boolean
Verify webhook signature
Parameters
| Parameter | Type | Description |
|---|---|---|
payload | unknown | Raw webhook payload |
provider | TranscriptionProvider | Provider name |
options | WebhookVerificationOptions | Verification options |
Returns
boolean
true if signature is valid
Properties
handlers
privatehandlers:Map<TranscriptionProvider,BaseWebhookHandler>
Functions
createWebhookRouter()
createWebhookRouter():
WebhookRouter
Factory function to create a webhook router
Returns
Interfaces
WebhookRouterOptions
Webhook router options
Properties
provider?
optionalprovider:TranscriptionProvider
Specific provider to use (skips auto-detection)
queryParams?
optionalqueryParams:Record<string,string>
Query parameters from the webhook request
(e.g., for Speechmatics: ?id=<job_id>&status=success)
userAgent?
optionaluserAgent:string
User agent from the webhook request headers (e.g., for Speechmatics: "Speechmatics-API/2.0")
verification?
optionalverification:WebhookVerificationOptions
Webhook verification options (signature, secret, etc.)
verifySignature?
optionalverifySignature:boolean
Whether to verify webhook signatures
Default
trueWebhookRouterResult
Webhook router result
Properties
success
success:
boolean
Whether routing was successful
error?
optionalerror:string
Error message if routing failed
event?
optionalevent:UnifiedWebhookEvent<TranscriptionProvider>
Parsed unified webhook event
provider?
optionalprovider:TranscriptionProvider
Detected or specified provider
verified?
optionalverified:boolean
Whether signature verification was performed and passed