*** id: ac5239c1-fe1a-4f9d-945d-a0eb24b9c653 title: promptAudio slug: /node/reference/voice/call/prompt-audio description: promptAudio 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 ### promptAudio * **promptAudio**(`params`): `Promise`\<[`CallPrompt`][callprompt]> Play an audio 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 audio. HTTP(s) URL to an audio resource to play. 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]. 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 audio 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 audio on the call while prompting for digits. After the digits are entered or a timeout occurs, the prompt session will end and return the digits results, and the call will hangup. await call.promptAudio({ url: "https://cdn.signalwire.com/default-music/welcome.mp3", digits: { max: 4, digitTimeout: 10, terminators: "#*" }, listen: { onStarted: () => console.log("Prompt started!"), onFailed: () => console.log("Prompt failed!"), onUpdated: (promptResult) => console.log("Prompt updated!", promptResult.result), onEnded: (promptResult) => { console.log("Prompt ended!", promptResult.result); call.hangup(); } } }).onStarted(); } }); ``` **Speech Example** In this example, we dial a phone number and prompt for `speech` while playing audio 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.promptAudio({ url: "https://cdn.signalwire.com/default-music/welcome.mp3", speech: { model: "enhanced.phone_call", }, listen: { onStarted: () => console.log("Prompt started!"), onFailed: () => console.log("Prompt failed!"), onUpdated: (promptResult) => console.log("Prompt updated!", promptResult.result), onEnded: (promptResult) => { console.log("Prompt ended!", promptResult.result); call.hangup(); } } }).onStarted(); } }); ```