RelayCall

prompt_tts

View as MarkdownOpen in Claude

Play text-to-speech as a prompt and collect input. A typed convenience over play_and_collect() that builds the TTS media item for you.

Parameters

text
strRequired

The prompt to speak.

collect
dictRequired

Input collection configuration, in the same format as play_and_collect().

language
str | NoneDefaults to None

Language code for the voice, such as "en-US". Keyword-only.

gender
str | NoneDefaults to None

Voice gender, "male" or "female". Keyword-only.

voice
str | NoneDefaults to None

Voice ID. Keyword-only.

volume
float | NoneDefaults to None

Volume adjustment in dB, from -40.0 to 40.0. Keyword-only.

on_completed
Callable[[RelayEvent], Any] | NoneDefaults to None

Callback invoked when the operation reaches a terminal state. Can be a regular function or async coroutine. Keyword-only.

Returns

CollectAction — An action handle that resolves when input is collected, the operation times out, or an error occurs.

Example

from signalwire.relay import RelayClient
client = RelayClient(
project="your-project-id",
token="your-api-token",
contexts=["default"],
)
@client.on_call
async def handle_call(call):
await call.answer()
action = await call.prompt_tts(
"Press 1 to book a ride or 2 to check on a booking.",
{"digits": {"max": 1, "digit_timeout": 5}},
)
event = await action.wait()
print("Collect result:", event.params)
client.run()