***
id: b1c81d9d-fc9c-48f9-92de-6194ca657314
title: promptRingtone
slug: /node/reference/voice/call/prompt-ringtone
description: promptRingtone method for the Call class.
max-toc-depth: 3
----------------
[callprompt-onstarted]: /docs/server-sdk/v4/node/reference/voice/call-prompt#onstarted
[callprompt]: /docs/server-sdk/v4/node/reference/voice/call-prompt
[collectdigitsconfig]: /docs/server-sdk/v4/node/reference/voice/types#collectdigitsconfig
[collectspeechconfig]: /docs/server-sdk/v4/node/reference/voice/types#collectspeechconfig
[ringtonename]: /docs/server-sdk/v4/node/reference/voice/types#ringtonename
### promptRingtone
* **promptRingtone**(`params`): `Promise`\<[`CallPrompt`][callprompt]>
Play a ringtone while collecting user input from the call, such as `digits` or `speech`.
#### Parameters
Object containing the parameters for prompting the user for input while playing a ringtone.
The name of the ringtone. See [`RingtoneName`][ringtonename].
Configuration for collecting digits. You must either set this, or `speech`. See [`CollectDigitsConfig`][collectdigitsconfig].
Configuration for collecting speech. You must either set this, or `digits`. Pass an empty object to use the default configuration. See [`CollectSpeechConfig`][collectspeechconfig].
Duration of ringtone to play in seconds. Defaults to 1 ringtone iteration.
Initial timeout in seconds.
Volume value between -40dB and +40dB where 0 is unchanged.
Callback to listen for events. List of prompt events can be found [here][callprompt]. Example event: [`onStarted`][callprompt-onstarted].
#### Returns
`Promise`\<[`CallPrompt`][callprompt]>
A promise that resolves to a [`CallPrompt`][callprompt] object that you can use to
view the current state and results of the `prompt` session.
#### Examples
**Digits Example**
In this example, we dial a phone number and prompt for `digits` while playing a ringtone in the background.
After the digits are entered or a timeout occurs, the prompt session will end and return the digits results,
and the call will hangup.
```js
import { SignalWire } from "@signalwire/realtime-api";
const client = await SignalWire({ project: "ProjectID Here", token: "Token Here" })
const voiceClient = client.voice;
// Listen for incoming calls
await voiceClient.listen({
topics: ["office"],
onCallReceived: async (call) => {
console.log("Call received");
// Answer the call
call.answer();
// Play TTS on the call
await call.promptRingtone({
name: "it",
duration: 10,
digits: {
max: 5,
digitTimeout: 5,
terminators: "#*",
},
listen: {
onStarted: () => console.log("Prompt Ringtone started"),
onFailed: () => console.log("Prompt Ringtone failed"),
onUpdated: (event) => console.log("Prompt Ringtone updated", event.result),
onEnded: (event) => {
console.log("Prompt Ringtone ended", event.result);
// Hangup the call
call.hangup();
}
}
}).onStarted();
}
});
```
**Speech Example**
In this example, we dial a phone number and prompt for `speech` while playing a ringtone in the background.
After the ringtone ends, we hangup the call.
```js
import { SignalWire } from "@signalwire/realtime-api";
const client = await SignalWire({ project: "ProjectID Here", token: "Token Here" })
const voiceClient = client.voice;
// Listen for incoming calls
await voiceClient.listen({
topics: ["office"],
onCallReceived: async (call) => {
console.log("Call received");
// Answer the call
call.answer();
// Play TTS on the call
await call.promptRingtone({
name: "it",
duration: 10,
speech: {
model: "enhanced.phone_call"
},
listen: {
onStarted: () => console.log("Prompt Ringtone started"),
onFailed: () => console.log("Prompt Ringtone failed"),
onUpdated: (event) => console.log("Prompt Ringtone updated", event.result),
onEnded: (event) => {
console.log("Prompt Ringtone ended", event.result);
// Hangup the call
call.hangup();
}
}
}).onStarted()
}
});
```