Skip to main content

CallCollect

Represents a current or past collect session in a call. You can obtain instances of this class by starting at Collect with the following method:

Example

In this example, we collect digits from the caller. Once the collect session is ended, we print the collected digits and hangup the call.

import { SignalWire } from "@signalwire/realtime-api";

const client = await SignalWire({ project: "ProjectID Here", token: "Token Here" })

const voiceClient = client.voice;

const call = await voiceClient.dialPhone({
from: "+YYYYYYYYYY",
to: "+XXXXXXXXXX",
});

// start Collect
await call.collect({
partialResults: true,
sendStartOfInput: true,
digits: {
max: 5,
digitTimeout: 4,
terminators: "#*",
},
listen: {
onStarted: async () => {
console.log("Collect started");
await call.playTTS({
text: "Please enter your PIN"
});
},
onInputStarted: () => {
console.log("Collect input started");
},
onUpdated: (collect) => {
console.log("Collect updated:", collect.digits);
},
onEnded: async (collect) => {
console.log("Collect ended:", collect.result);
console.log("PIN collected:", collect.digits);
call.hangup();
},
onFailed: () => {
console.log("Collect failed")
}
}
}).onStarted();

Properties

confidence
number

Confidence level for the speech recognition result (if type is "speech"), from 0 to 100. For example, 83.2.

digits
string

The digits that have been collected (if type is "digit"). For example, "12345".

final
boolean

Whether this is the final result of the collect session. When partialResults is true, intermediate results will have final set to false. With continuous: true, final means the utterance detection has completed but the detector will continue to the next utterance.

id
string

The unique id for this collect session.

reason
"no_match" | "no_input" | "error"

Alias for type, in case of errors. Use this field to check the reason of the error.

result
CallingCallCollectResult

The result object containing the collect session outcome. See CallingCallCollectResult.

speech
string | undefined

The text that has been collected (if type is "speech"). Alias for text.

terminator
string

The terminator used to complete the collect (if type is "digit"). For example, "#".

text
string

The text that has been collected (if type is "speech"). For example, "hello who's there".

type
"error" | "no_input" | "no_match" | "digit" | "speech" | "start_of_input"

The type of this collect session.

state
"collecting" | "finished" | "error"

The state of this collect session. Only present when type is "speech" and the continuous parameter is set to true. Otherwise, the collect state is always "undefined".

hasEnded
boolean

Whether the collect has ended. Returns true when the state is not "collecting", final is not false, and the result type is one of: "error", "no_input", "no_match", "digit", or "speech".

Methods

ended

ended(): Promise<CallCollect>

Returns a promise that is resolved only after this collect finishes (or is stopped).

Returns

Promise<CallCollect>

A promise that resolves to the CallCollect object when the collect session is ended.

Example

const collect = await call.collect({
digits: {
max: 4,
digitTimeout: 10,
terminators: "#",
},
partialResults: true,
sendStartOfInput: true,
}).onStarted();
await collect.ended();

startInputTimers

startInputTimers(): Promise<CallCollect>

Start the initialTimeout timer on an active collect.

Returns

Promise<CallCollect>

A promise that resolves to the CallCollect object when the collect session InputTimer is started.

Example

const collect = await call.collect({
digits: {
max: 4,
digitTimeout: 10,
terminators: "#",
},
partialResults: true,
sendStartOfInput: true,
startInputTimers: false,
}).onStarted();
// You can add some logic before starting input timers.
await collect.startInputTimers();

stop

stop(): Promise<CallCollect>

Stops the collect session.

Returns

Promise<CallCollect>

A promise that resolves to the CallCollect object when the collect session is stopped.

Example

const collect = await call.collect({
speech: {
endSilenceTimeout: 2,
speechTimeout: 10,
language: "en-US",
hints: ["sales", "support", "representative"]
},
partialResults: true,
sendStartOfInput: true
}).onStarted();
await collect.stop();

Alias Types

CallingCallCollectResult

Ƭ CallingCallCollectResult: Promise<CallCollect>

The result of the collect session. Depending on the type of the collect session, the result will return different fields.

Digit Collect Results

The result of a collect session when type is "digit".

Properties

type
"digit"

The type of this collect session.

params
object

The parameters of this collect session.

params.digits
string

The digits that have been collected.

params.terminator
string

The terminator used to complete the collect.

Speech Collect Results

The result of a collect session when type is "speech".

Properties

type
"speech"

The type of this collect session.

params
object

The parameters of this collect session.

params.text
string

The text that has been collected.

params.confidence
number

The confidence level for the speech recognition result.

Start of Input Collect Results

The result of a collect session when type is "start_of_input".

Properties

type
"start_of_input"

The type of this collect session.

No Input Collect Results

The result of a collect session when type is "no_input".

Properties

type
"no_input"

The type of this collect session.

No Match Collect Results

The result of a collect session when type is "no_match".

Properties

type
"no_match"

The type of this collect session.

Error Collect Results

The result of a collect session when type is "error".

Properties

type
"error"

The type of this collect session.

Events

onStarted

CallCollect.listen({ onStarted: Callback })

Emitted when the collect session is started. Your event handler will receive the CallCollect object.

Parameters

collect
CallCollectrequired

The CallCollect object that emitted the event.

onInputStarted

CallCollect.listen({ onInputStarted: Callback })

Emitted when the collect session starts receiving input. Your event handler will receive the CallCollect object.

Parameters

collect
CallCollectrequired

The CallCollect object that emitted the event.

onUpdated

CallCollect.listen({ onUpdated: Callback })

Emitted when the collect session is updated. Your event handler will receive the CallCollect object.

Parameters

collect
CallCollectrequired

The CallCollect object that emitted the event.

onFailed

CallCollect.listen({ onFailed: Callback })

Emitted when the collect session fails. Your event handler will receive the CallCollect object.

Parameters

collect
CallCollectrequired

The CallCollect object that emitted the event.

onEnded

CallCollect.listen({ onEnded: Callback })

Emitted when the collect session ends. Your event handler will receive the CallCollect object.

Parameters

collect
CallCollectrequired

The CallCollect object that emitted the event.