setOnRequestCallback

View as MarkdownOpen in Claude

Set a callback invoked per-request to dynamically build SWML. When set, the static SwmlBuilder is ignored and the callback’s returned SwmlBuilder is used instead.

Parameters

cb
OnRequestCallbackRequired

Callback function that receives (queryParams, bodyParams, headers) and returns a SwmlBuilder or Promise<SwmlBuilder>.

On GET requests, bodyParams is always an empty object ({}). The body is only parsed on POST requests.

Returns

this — Returns the service for method chaining.

Example

import { SWMLService, SwmlBuilder } from '@signalwire/sdk';
const service = new SWMLService({ name: 'dynamic-ivr' });
service.setOnRequestCallback(async (queryParams, bodyParams, headers) => {
const builder = new SwmlBuilder();
builder.addVerb('answer', {});
if (queryParams.lang === 'es') {
builder.addVerb('play', { url: 'https://example.com/greeting-es.mp3' });
} else {
builder.addVerb('play', { url: 'https://example.com/greeting-en.mp3' });
}
builder.addVerb('hangup', {});
return builder;
});
await service.run();