bindDigit

View as MarkdownOpen in Claude

Bind a DTMF digit sequence to automatically trigger a RELAY method when the caller presses those digits. This enables in-call DTMF shortcuts without requiring an active collect operation.

Use clearDigitBindings() to remove bindings.

Parameters

digits
stringRequired

The DTMF digit sequence to bind (e.g., "*1", "##").

bindMethod
stringRequired

The RELAY calling method to execute when the digit sequence is detected (e.g., "calling.transfer", "calling.play").

bindParams
Record<string, unknown> | undefined

Parameters to pass to the bound method when triggered.

realm
string | undefined

A namespace for grouping digit bindings. Useful for selectively clearing bindings by realm.

maxTriggers
number | undefined

Maximum number of times this binding can be triggered. After reaching the limit, the binding is automatically removed.

Returns

Promise<Record<string, unknown>> — Server response confirming the binding.

Example

1import { RelayClient } from '@signalwire/sdk';
2
3const client = new RelayClient({
4 project: process.env.SIGNALWIRE_PROJECT_ID!,
5 token: process.env.SIGNALWIRE_TOKEN!,
6 contexts: ['default']
7});
8
9client.onCall(async (call) => {
10 await call.answer();
11
12 // Bind *0 to transfer to an operator
13 const result = await call.bindDigit('*0', 'calling.transfer', {
14 bindParams: { dest: 'operator' },
15 realm: 'shortcuts',
16 });
17 console.log(`Digit binding created: ${JSON.stringify(result)}`);
18
19 // Bind *9 to play a help message
20 await call.bindDigit('*9', 'calling.play', {
21 bindParams: { play: [{ type: 'tts', text: 'Press star-zero for an operator.' }] },
22 realm: 'shortcuts',
23 });
24});
25
26await client.run();