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

1import { SWMLService, SwmlBuilder } from '@signalwire/sdk';
2
3const service = new SWMLService({ name: 'dynamic-ivr' });
4
5service.setOnRequestCallback(async (queryParams, bodyParams, headers) => {
6 const builder = new SwmlBuilder();
7 builder.addVerb('answer', {});
8
9 if (queryParams.lang === 'es') {
10 builder.addVerb('play', { url: 'https://example.com/greeting-es.mp3' });
11 } else {
12 builder.addVerb('play', { url: 'https://example.com/greeting-en.mp3' });
13 }
14
15 builder.addVerb('hangup', {});
16 return builder;
17});
18
19await service.run();