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
Collecting a PIN with keypad input from the user, then waiting for a result before proceeding with the next instructions.
import { Voice } from "@signalwire/realtime-api";
const client = new Voice.Client({
project: "<project-id>",
token: "<api-token>",
topics: ["office"],
});
const call = await client.dialPhone({
from: "+YYYYYYYYYY",
to: "+XXXXXXXXXX",
});
// start Collect
const collect = await call.collect({
digits: {
max: 5,
digitTimeout: 4,
terminators: "#*",
},
});
await call.playTTS({
text: "Please enter your PIN",
});
const { digits } = await collect.ended();
console.log("PIN collected:", digits);
Properties
confidence
Confidence level for the speech recognition result (if type is "speech"), from 0 to 100. For example, 83.2.
Syntax: CallCollect.confidence()
Returns: number
digits
The digits that have been collected (if type is "digit"). For example, "12345".
Syntax: CallCollect.digits()
Returns: string
id
The unique id for this collect session.
Syntax: CallCollect.id()
Returns: string
reason
Alias for type, in case of errors. Use this field to check the reason of the error.
Syntax: CallCollect.reason()
Returns: "no_match" | "no_input" | "error"
terminator
The terminator used to complete the collect (if type is "digit"). For example, "#".
Syntax: CallCollect.terminator()
Returns: string
text
The text that has been collected (if type is "speech"). For example, "hello who's there".
Syntax: CallCollect.text()
Returns: string
type
The type of this collect session.
Syntax: CallCollect.type()
Returns: "error" | "no_input" | "no_match" | "digit" | "speech"
Methods
ended
▸ ended(): Promise<CallCollect> - See CallCollect for more details.
Returns a promise that is resolved only after this collect finishes (or is stopped).
Returns
Promise<CallCollect> - See CallCollect for more details.
Example
const collect = await call.collect({
digits: {
max: 4,
digitTimeout: 10,
terminators: "#",
},
partialResults: true,
sendStartOfInput: true,
});
await collect.ended();
startInputTimers
▸ startInputTimers(): Promise<CallCollect> - See CallCollect for more details.
Start the initialTimeout timer on an active collect.
Returns
Promise<CallCollect> - See CallCollect for more details.
Example
const collect = await call.collect({
digits: {
max: 4,
digitTimeout: 10,
terminators: "#",
},
partialResults: true,
sendStartOfInput: true,
startInputTimers: false,
});
// You can add some logic before starting input timers.
await collect.startInputTimers();
stop
▸ stop(): Promise<CallCollect> - See CallCollect for more details.
Stops the collect session.
Returns
Promise<CallCollect> - See CallCollect for more details.
Example
const collect = await call.collect({
speech: {
endSilenceTimeout: 2,
speechTimeout: 10,
language: "en-US",
hints: ["sales", "support", "representative"],
},
partialResults: true,
sendStartOfInput: true,
});
await collect.stop();