telnyx 5.111.0 → 5.113.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/README.md +1 -1
  4. data/lib/telnyx/models/ai/openai_create_response_params.rb +3 -3
  5. data/lib/telnyx/models/ai_create_response_params.rb +4 -4
  6. data/lib/telnyx/models/call_conversation_ended.rb +13 -1
  7. data/lib/telnyx/models/calls/action_start_conversation_relay_params.rb +542 -0
  8. data/lib/telnyx/models/calls/action_start_conversation_relay_response.rb +37 -0
  9. data/lib/telnyx/models/calls/action_stop_conversation_relay_params.rb +44 -0
  10. data/lib/telnyx/models/calls/action_stop_conversation_relay_response.rb +18 -0
  11. data/lib/telnyx/models/calls/transcription_engine_speechmatics_config.rb +100 -0
  12. data/lib/telnyx/models/calls/transcription_start_request.rb +6 -3
  13. data/lib/telnyx/models/fax.rb +7 -5
  14. data/lib/telnyx/models/fax_create_params.rb +7 -5
  15. data/lib/telnyx/models/fax_delivered.rb +3 -2
  16. data/lib/telnyx/models/fax_failed.rb +3 -2
  17. data/lib/telnyx/models/fax_media_processed.rb +3 -2
  18. data/lib/telnyx/models/fax_queued.rb +3 -2
  19. data/lib/telnyx/models/fax_sending_started.rb +3 -2
  20. data/lib/telnyx/models/texml/accounts/call_calls_params.rb +62 -12
  21. data/lib/telnyx/models/texml_initiate_ai_call_params.rb +18 -4
  22. data/lib/telnyx/resources/ai/openai.rb +1 -1
  23. data/lib/telnyx/resources/ai.rb +3 -3
  24. data/lib/telnyx/resources/calls/actions.rb +95 -1
  25. data/lib/telnyx/resources/faxes.rb +13 -1
  26. data/lib/telnyx/resources/texml.rb +4 -2
  27. data/lib/telnyx/version.rb +1 -1
  28. data/lib/telnyx.rb +5 -0
  29. data/rbi/telnyx/models/ai/openai_create_response_params.rbi +4 -4
  30. data/rbi/telnyx/models/ai_create_response_params.rbi +4 -4
  31. data/rbi/telnyx/models/call_conversation_ended.rbi +10 -0
  32. data/rbi/telnyx/models/calls/action_start_conversation_relay_params.rbi +1192 -0
  33. data/rbi/telnyx/models/calls/action_start_conversation_relay_response.rbi +95 -0
  34. data/rbi/telnyx/models/calls/action_stop_conversation_relay_params.rbi +72 -0
  35. data/rbi/telnyx/models/calls/action_stop_conversation_relay_response.rbi +39 -0
  36. data/rbi/telnyx/models/calls/transcription_engine_speechmatics_config.rbi +289 -0
  37. data/rbi/telnyx/models/calls/transcription_start_request.rbi +10 -0
  38. data/rbi/telnyx/models/fax.rbi +12 -8
  39. data/rbi/telnyx/models/fax_create_params.rbi +12 -8
  40. data/rbi/telnyx/models/fax_delivered.rbi +6 -4
  41. data/rbi/telnyx/models/fax_failed.rbi +6 -4
  42. data/rbi/telnyx/models/fax_media_processed.rbi +6 -4
  43. data/rbi/telnyx/models/fax_queued.rbi +6 -4
  44. data/rbi/telnyx/models/fax_sending_started.rbi +6 -4
  45. data/rbi/telnyx/models/texml/accounts/call_calls_params.rbi +81 -9
  46. data/rbi/telnyx/models/texml_initiate_ai_call_params.rbi +27 -3
  47. data/rbi/telnyx/resources/ai/openai.rbi +1 -1
  48. data/rbi/telnyx/resources/ai.rbi +2 -2
  49. data/rbi/telnyx/resources/calls/actions.rbi +146 -0
  50. data/rbi/telnyx/resources/faxes.rbi +18 -4
  51. data/rbi/telnyx/resources/texml.rbi +7 -1
  52. data/sig/telnyx/models/ai/openai_create_response_params.rbs +5 -5
  53. data/sig/telnyx/models/ai_create_response_params.rbs +5 -4
  54. data/sig/telnyx/models/call_conversation_ended.rbs +5 -0
  55. data/sig/telnyx/models/calls/action_start_conversation_relay_params.rbs +455 -0
  56. data/sig/telnyx/models/calls/action_start_conversation_relay_response.rbs +45 -0
  57. data/sig/telnyx/models/calls/action_stop_conversation_relay_params.rbs +38 -0
  58. data/sig/telnyx/models/calls/action_stop_conversation_relay_response.rbs +20 -0
  59. data/sig/telnyx/models/calls/transcription_engine_speechmatics_config.rbs +114 -0
  60. data/sig/telnyx/models/calls/transcription_start_request.rbs +11 -1
  61. data/sig/telnyx/models/texml/accounts/call_calls_params.rbs +27 -3
  62. data/sig/telnyx/models/texml_initiate_ai_call_params.rbs +9 -1
  63. data/sig/telnyx/resources/ai/openai.rbs +1 -1
  64. data/sig/telnyx/resources/ai.rbs +1 -1
  65. data/sig/telnyx/resources/calls/actions.rbs +27 -0
  66. data/sig/telnyx/resources/texml.rbs +1 -0
  67. metadata +17 -2
@@ -0,0 +1,1192 @@
1
+ # typed: strong
2
+
3
+ module Telnyx
4
+ module Models
5
+ module Calls
6
+ class ActionStartConversationRelayParams < Telnyx::Internal::Type::BaseModel
7
+ extend Telnyx::Internal::Type::RequestParameters::Converter
8
+ include Telnyx::Internal::Type::RequestParameters
9
+
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(
13
+ Telnyx::Calls::ActionStartConversationRelayParams,
14
+ Telnyx::Internal::AnyHash
15
+ )
16
+ end
17
+
18
+ sig { returns(String) }
19
+ attr_accessor :call_control_id
20
+
21
+ # Custom parameters for the Conversation Relay session. Pass key-value data as
22
+ # `assistant.dynamic_variables` to make it available to the relay session.
23
+ sig do
24
+ returns(
25
+ T.nilable(
26
+ Telnyx::Calls::ActionStartConversationRelayParams::Assistant
27
+ )
28
+ )
29
+ end
30
+ attr_reader :assistant
31
+
32
+ sig do
33
+ params(
34
+ assistant:
35
+ Telnyx::Calls::ActionStartConversationRelayParams::Assistant::OrHash
36
+ ).void
37
+ end
38
+ attr_writer :assistant
39
+
40
+ # Use this field to add state to subsequent webhooks. It must be a valid Base-64
41
+ # encoded string.
42
+ sig { returns(T.nilable(String)) }
43
+ attr_reader :client_state
44
+
45
+ sig { params(client_state: String).void }
46
+ attr_writer :client_state
47
+
48
+ # Use this field to avoid duplicate commands. Telnyx will ignore any command with
49
+ # the same `command_id` for the same `call_control_id`.
50
+ sig { returns(T.nilable(String)) }
51
+ attr_reader :command_id
52
+
53
+ sig { params(command_id: String).void }
54
+ attr_writer :command_id
55
+
56
+ # Enable DTMF detection for the relay session.
57
+ sig { returns(T.nilable(T::Boolean)) }
58
+ attr_reader :conversation_relay_dtmf_detection
59
+
60
+ sig { params(conversation_relay_dtmf_detection: T::Boolean).void }
61
+ attr_writer :conversation_relay_dtmf_detection
62
+
63
+ # Conversation Relay connection settings. This object is used by TeXML Call
64
+ # Scripting's `<ConversationRelay>` verb. The `interruptible` and
65
+ # `interruptible_greeting` fields are shorthand for
66
+ # `interruption_settings.interruptible` and
67
+ # `interruption_settings.interruptible_greeting`; use top-level
68
+ # `interruption_settings` for the full interruption settings shape.
69
+ sig do
70
+ returns(
71
+ T.nilable(
72
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings
73
+ )
74
+ )
75
+ end
76
+ attr_reader :conversation_relay_settings
77
+
78
+ sig do
79
+ params(
80
+ conversation_relay_settings:
81
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::OrHash
82
+ ).void
83
+ end
84
+ attr_writer :conversation_relay_settings
85
+
86
+ # WebSocket URL for your Conversation Relay server. Must start with `ws://` or
87
+ # `wss://`.
88
+ sig { returns(T.nilable(String)) }
89
+ attr_reader :conversation_relay_url
90
+
91
+ sig { params(conversation_relay_url: String).void }
92
+ attr_writer :conversation_relay_url
93
+
94
+ # Text played when the relay session starts.
95
+ sig { returns(T.nilable(String)) }
96
+ attr_reader :greeting
97
+
98
+ sig { params(greeting: String).void }
99
+ attr_writer :greeting
100
+
101
+ # Settings for handling caller interruptions during Conversation Relay speech.
102
+ sig do
103
+ returns(
104
+ T.nilable(
105
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings
106
+ )
107
+ )
108
+ end
109
+ attr_reader :interruption_settings
110
+
111
+ sig do
112
+ params(
113
+ interruption_settings:
114
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::OrHash
115
+ ).void
116
+ end
117
+ attr_writer :interruption_settings
118
+
119
+ # Default language for the relay session. This value is used for both
120
+ # text-to-speech and speech recognition unless `tts_language` or
121
+ # `transcription_language` are provided.
122
+ sig { returns(T.nilable(String)) }
123
+ attr_reader :language
124
+
125
+ sig { params(language: String).void }
126
+ attr_writer :language
127
+
128
+ # Language-specific TTS and transcription settings. Use this when the relay
129
+ # session needs per-language provider, voice, or speech model configuration.
130
+ sig do
131
+ returns(
132
+ T.nilable(
133
+ T::Array[
134
+ Telnyx::Calls::ActionStartConversationRelayParams::Language
135
+ ]
136
+ )
137
+ )
138
+ end
139
+ attr_reader :languages
140
+
141
+ sig do
142
+ params(
143
+ languages:
144
+ T::Array[
145
+ Telnyx::Calls::ActionStartConversationRelayParams::Language::OrHash
146
+ ]
147
+ ).void
148
+ end
149
+ attr_writer :languages
150
+
151
+ # Speech-to-text settings for Conversation Relay.
152
+ sig do
153
+ returns(
154
+ T.nilable(
155
+ Telnyx::Calls::ActionStartConversationRelayParams::Transcription
156
+ )
157
+ )
158
+ end
159
+ attr_reader :transcription
160
+
161
+ sig do
162
+ params(
163
+ transcription:
164
+ Telnyx::Calls::ActionStartConversationRelayParams::Transcription::OrHash
165
+ ).void
166
+ end
167
+ attr_writer :transcription
168
+
169
+ # Language to use for speech recognition. Overrides `language` for transcription
170
+ # when provided.
171
+ sig { returns(T.nilable(String)) }
172
+ attr_reader :transcription_language
173
+
174
+ sig { params(transcription_language: String).void }
175
+ attr_writer :transcription_language
176
+
177
+ # Language to use for text-to-speech. Overrides `language` for TTS when provided.
178
+ sig { returns(T.nilable(String)) }
179
+ attr_reader :tts_language
180
+
181
+ sig { params(tts_language: String).void }
182
+ attr_writer :tts_language
183
+
184
+ # The voice to be used by the voice assistant. Currently we support ElevenLabs,
185
+ # Telnyx and AWS voices.
186
+ #
187
+ # **Supported Providers:**
188
+ #
189
+ # - **AWS:** Use `AWS.Polly.<VoiceId>` (e.g., `AWS.Polly.Joanna`). For neural
190
+ # voices, which provide more realistic, human-like speech, append `-Neural` to
191
+ # the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the
192
+ # [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html)
193
+ # for compatibility.
194
+ # - **Azure:** Use `Azure.<VoiceId>. (e.g. Azure.en-CA-ClaraNeural,
195
+ # Azure.en-CA-LiamNeural, Azure.en-US-BrianMultilingualNeural,
196
+ # Azure.en-US-Ava:DragonHDLatestNeural. For a complete list of voices, go to
197
+ # [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).)
198
+ # - **ElevenLabs:** Use `ElevenLabs.<ModelId>.<VoiceId>` (e.g.,
199
+ # `ElevenLabs.BaseModel.John`). The `ModelId` part is optional. To use
200
+ # ElevenLabs, you must provide your ElevenLabs API key as an integration secret
201
+ # under `"voice_settings": {"api_key_ref": "<secret_id>"}`. See
202
+ # [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret)
203
+ # for details. Check
204
+ # [available voices](https://elevenlabs.io/docs/api-reference/get-voices).
205
+ # - **Telnyx:** Use `Telnyx.<model_id>.<voice_id>`
206
+ # - **Inworld:** Use `Inworld.<ModelId>.<VoiceId>` (e.g., `Inworld.Mini.Loretta`,
207
+ # `Inworld.Max.Oliver`). Supported models: `Mini`, `Max`.
208
+ # - **xAI:** Use `xAI.<VoiceId>` (e.g., `xAI.eve`). Available voices: `eve`,
209
+ # `ara`, `rex`, `sal`, `leo`.
210
+ sig { returns(T.nilable(String)) }
211
+ attr_reader :voice
212
+
213
+ sig { params(voice: String).void }
214
+ attr_writer :voice
215
+
216
+ # The settings associated with the voice selected
217
+ sig do
218
+ returns(
219
+ T.nilable(
220
+ T.any(
221
+ Telnyx::Calls::ElevenLabsVoiceSettings,
222
+ Telnyx::Calls::TelnyxVoiceSettings,
223
+ Telnyx::Calls::AwsVoiceSettings,
224
+ Telnyx::AzureVoiceSettings,
225
+ Telnyx::RimeVoiceSettings,
226
+ Telnyx::ResembleVoiceSettings,
227
+ Telnyx::XaiVoiceSettings
228
+ )
229
+ )
230
+ )
231
+ end
232
+ attr_reader :voice_settings
233
+
234
+ sig do
235
+ params(
236
+ voice_settings:
237
+ T.any(
238
+ Telnyx::Calls::ElevenLabsVoiceSettings::OrHash,
239
+ Telnyx::Calls::TelnyxVoiceSettings::OrHash,
240
+ Telnyx::Calls::AwsVoiceSettings::OrHash,
241
+ Telnyx::AzureVoiceSettings::OrHash,
242
+ Telnyx::RimeVoiceSettings::OrHash,
243
+ Telnyx::ResembleVoiceSettings::OrHash,
244
+ Telnyx::XaiVoiceSettings::OrHash
245
+ )
246
+ ).void
247
+ end
248
+ attr_writer :voice_settings
249
+
250
+ sig do
251
+ params(
252
+ call_control_id: String,
253
+ assistant:
254
+ Telnyx::Calls::ActionStartConversationRelayParams::Assistant::OrHash,
255
+ client_state: String,
256
+ command_id: String,
257
+ conversation_relay_dtmf_detection: T::Boolean,
258
+ conversation_relay_settings:
259
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::OrHash,
260
+ conversation_relay_url: String,
261
+ greeting: String,
262
+ interruption_settings:
263
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::OrHash,
264
+ language: String,
265
+ languages:
266
+ T::Array[
267
+ Telnyx::Calls::ActionStartConversationRelayParams::Language::OrHash
268
+ ],
269
+ transcription:
270
+ Telnyx::Calls::ActionStartConversationRelayParams::Transcription::OrHash,
271
+ transcription_language: String,
272
+ tts_language: String,
273
+ voice: String,
274
+ voice_settings:
275
+ T.any(
276
+ Telnyx::Calls::ElevenLabsVoiceSettings::OrHash,
277
+ Telnyx::Calls::TelnyxVoiceSettings::OrHash,
278
+ Telnyx::Calls::AwsVoiceSettings::OrHash,
279
+ Telnyx::AzureVoiceSettings::OrHash,
280
+ Telnyx::RimeVoiceSettings::OrHash,
281
+ Telnyx::ResembleVoiceSettings::OrHash,
282
+ Telnyx::XaiVoiceSettings::OrHash
283
+ ),
284
+ request_options: Telnyx::RequestOptions::OrHash
285
+ ).returns(T.attached_class)
286
+ end
287
+ def self.new(
288
+ call_control_id:,
289
+ # Custom parameters for the Conversation Relay session. Pass key-value data as
290
+ # `assistant.dynamic_variables` to make it available to the relay session.
291
+ assistant: nil,
292
+ # Use this field to add state to subsequent webhooks. It must be a valid Base-64
293
+ # encoded string.
294
+ client_state: nil,
295
+ # Use this field to avoid duplicate commands. Telnyx will ignore any command with
296
+ # the same `command_id` for the same `call_control_id`.
297
+ command_id: nil,
298
+ # Enable DTMF detection for the relay session.
299
+ conversation_relay_dtmf_detection: nil,
300
+ # Conversation Relay connection settings. This object is used by TeXML Call
301
+ # Scripting's `<ConversationRelay>` verb. The `interruptible` and
302
+ # `interruptible_greeting` fields are shorthand for
303
+ # `interruption_settings.interruptible` and
304
+ # `interruption_settings.interruptible_greeting`; use top-level
305
+ # `interruption_settings` for the full interruption settings shape.
306
+ conversation_relay_settings: nil,
307
+ # WebSocket URL for your Conversation Relay server. Must start with `ws://` or
308
+ # `wss://`.
309
+ conversation_relay_url: nil,
310
+ # Text played when the relay session starts.
311
+ greeting: nil,
312
+ # Settings for handling caller interruptions during Conversation Relay speech.
313
+ interruption_settings: nil,
314
+ # Default language for the relay session. This value is used for both
315
+ # text-to-speech and speech recognition unless `tts_language` or
316
+ # `transcription_language` are provided.
317
+ language: nil,
318
+ # Language-specific TTS and transcription settings. Use this when the relay
319
+ # session needs per-language provider, voice, or speech model configuration.
320
+ languages: nil,
321
+ # Speech-to-text settings for Conversation Relay.
322
+ transcription: nil,
323
+ # Language to use for speech recognition. Overrides `language` for transcription
324
+ # when provided.
325
+ transcription_language: nil,
326
+ # Language to use for text-to-speech. Overrides `language` for TTS when provided.
327
+ tts_language: nil,
328
+ # The voice to be used by the voice assistant. Currently we support ElevenLabs,
329
+ # Telnyx and AWS voices.
330
+ #
331
+ # **Supported Providers:**
332
+ #
333
+ # - **AWS:** Use `AWS.Polly.<VoiceId>` (e.g., `AWS.Polly.Joanna`). For neural
334
+ # voices, which provide more realistic, human-like speech, append `-Neural` to
335
+ # the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the
336
+ # [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html)
337
+ # for compatibility.
338
+ # - **Azure:** Use `Azure.<VoiceId>. (e.g. Azure.en-CA-ClaraNeural,
339
+ # Azure.en-CA-LiamNeural, Azure.en-US-BrianMultilingualNeural,
340
+ # Azure.en-US-Ava:DragonHDLatestNeural. For a complete list of voices, go to
341
+ # [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).)
342
+ # - **ElevenLabs:** Use `ElevenLabs.<ModelId>.<VoiceId>` (e.g.,
343
+ # `ElevenLabs.BaseModel.John`). The `ModelId` part is optional. To use
344
+ # ElevenLabs, you must provide your ElevenLabs API key as an integration secret
345
+ # under `"voice_settings": {"api_key_ref": "<secret_id>"}`. See
346
+ # [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret)
347
+ # for details. Check
348
+ # [available voices](https://elevenlabs.io/docs/api-reference/get-voices).
349
+ # - **Telnyx:** Use `Telnyx.<model_id>.<voice_id>`
350
+ # - **Inworld:** Use `Inworld.<ModelId>.<VoiceId>` (e.g., `Inworld.Mini.Loretta`,
351
+ # `Inworld.Max.Oliver`). Supported models: `Mini`, `Max`.
352
+ # - **xAI:** Use `xAI.<VoiceId>` (e.g., `xAI.eve`). Available voices: `eve`,
353
+ # `ara`, `rex`, `sal`, `leo`.
354
+ voice: nil,
355
+ # The settings associated with the voice selected
356
+ voice_settings: nil,
357
+ request_options: {}
358
+ )
359
+ end
360
+
361
+ sig do
362
+ override.returns(
363
+ {
364
+ call_control_id: String,
365
+ assistant:
366
+ Telnyx::Calls::ActionStartConversationRelayParams::Assistant,
367
+ client_state: String,
368
+ command_id: String,
369
+ conversation_relay_dtmf_detection: T::Boolean,
370
+ conversation_relay_settings:
371
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings,
372
+ conversation_relay_url: String,
373
+ greeting: String,
374
+ interruption_settings:
375
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings,
376
+ language: String,
377
+ languages:
378
+ T::Array[
379
+ Telnyx::Calls::ActionStartConversationRelayParams::Language
380
+ ],
381
+ transcription:
382
+ Telnyx::Calls::ActionStartConversationRelayParams::Transcription,
383
+ transcription_language: String,
384
+ tts_language: String,
385
+ voice: String,
386
+ voice_settings:
387
+ T.any(
388
+ Telnyx::Calls::ElevenLabsVoiceSettings,
389
+ Telnyx::Calls::TelnyxVoiceSettings,
390
+ Telnyx::Calls::AwsVoiceSettings,
391
+ Telnyx::AzureVoiceSettings,
392
+ Telnyx::RimeVoiceSettings,
393
+ Telnyx::ResembleVoiceSettings,
394
+ Telnyx::XaiVoiceSettings
395
+ ),
396
+ request_options: Telnyx::RequestOptions
397
+ }
398
+ )
399
+ end
400
+ def to_hash
401
+ end
402
+
403
+ class Assistant < Telnyx::Internal::Type::BaseModel
404
+ OrHash =
405
+ T.type_alias do
406
+ T.any(
407
+ Telnyx::Calls::ActionStartConversationRelayParams::Assistant,
408
+ Telnyx::Internal::AnyHash
409
+ )
410
+ end
411
+
412
+ # Custom key-value parameters forwarded to the Conversation Relay session.
413
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
414
+ attr_reader :dynamic_variables
415
+
416
+ sig { params(dynamic_variables: T::Hash[Symbol, String]).void }
417
+ attr_writer :dynamic_variables
418
+
419
+ # Custom parameters for the Conversation Relay session. Pass key-value data as
420
+ # `assistant.dynamic_variables` to make it available to the relay session.
421
+ sig do
422
+ params(dynamic_variables: T::Hash[Symbol, String]).returns(
423
+ T.attached_class
424
+ )
425
+ end
426
+ def self.new(
427
+ # Custom key-value parameters forwarded to the Conversation Relay session.
428
+ dynamic_variables: nil
429
+ )
430
+ end
431
+
432
+ sig do
433
+ override.returns({ dynamic_variables: T::Hash[Symbol, String] })
434
+ end
435
+ def to_hash
436
+ end
437
+ end
438
+
439
+ class ConversationRelaySettings < Telnyx::Internal::Type::BaseModel
440
+ OrHash =
441
+ T.type_alias do
442
+ T.any(
443
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings,
444
+ Telnyx::Internal::AnyHash
445
+ )
446
+ end
447
+
448
+ # WebSocket URL for your Conversation Relay server. Must start with `ws://` or
449
+ # `wss://`.
450
+ sig { returns(String) }
451
+ attr_accessor :url
452
+
453
+ # Whether to enable DTMF detection during the relay session.
454
+ sig { returns(T.nilable(T::Boolean)) }
455
+ attr_reader :dtmf_detection
456
+
457
+ sig { params(dtmf_detection: T::Boolean).void }
458
+ attr_writer :dtmf_detection
459
+
460
+ # Controls when caller input can interrupt assistant speech. `any` allows speech
461
+ # or DTMF interruptions; `none` disables interruptions; `speech` allows speech
462
+ # only; `dtmf` allows DTMF only.
463
+ sig do
464
+ returns(
465
+ T.nilable(
466
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::Interruptible::OrSymbol
467
+ )
468
+ )
469
+ end
470
+ attr_reader :interruptible
471
+
472
+ sig do
473
+ params(
474
+ interruptible:
475
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::Interruptible::OrSymbol
476
+ ).void
477
+ end
478
+ attr_writer :interruptible
479
+
480
+ # Controls when caller input can interrupt assistant speech. `any` allows speech
481
+ # or DTMF interruptions; `none` disables interruptions; `speech` allows speech
482
+ # only; `dtmf` allows DTMF only.
483
+ sig do
484
+ returns(
485
+ T.nilable(
486
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::InterruptibleGreeting::OrSymbol
487
+ )
488
+ )
489
+ end
490
+ attr_reader :interruptible_greeting
491
+
492
+ sig do
493
+ params(
494
+ interruptible_greeting:
495
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::InterruptibleGreeting::OrSymbol
496
+ ).void
497
+ end
498
+ attr_writer :interruptible_greeting
499
+
500
+ # Language-specific TTS and transcription settings.
501
+ sig do
502
+ returns(
503
+ T.nilable(
504
+ T::Array[
505
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::Language
506
+ ]
507
+ )
508
+ )
509
+ end
510
+ attr_reader :languages
511
+
512
+ sig do
513
+ params(
514
+ languages:
515
+ T::Array[
516
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::Language::OrHash
517
+ ]
518
+ ).void
519
+ end
520
+ attr_writer :languages
521
+
522
+ # Conversation Relay connection settings. This object is used by TeXML Call
523
+ # Scripting's `<ConversationRelay>` verb. The `interruptible` and
524
+ # `interruptible_greeting` fields are shorthand for
525
+ # `interruption_settings.interruptible` and
526
+ # `interruption_settings.interruptible_greeting`; use top-level
527
+ # `interruption_settings` for the full interruption settings shape.
528
+ sig do
529
+ params(
530
+ url: String,
531
+ dtmf_detection: T::Boolean,
532
+ interruptible:
533
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::Interruptible::OrSymbol,
534
+ interruptible_greeting:
535
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::InterruptibleGreeting::OrSymbol,
536
+ languages:
537
+ T::Array[
538
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::Language::OrHash
539
+ ]
540
+ ).returns(T.attached_class)
541
+ end
542
+ def self.new(
543
+ # WebSocket URL for your Conversation Relay server. Must start with `ws://` or
544
+ # `wss://`.
545
+ url:,
546
+ # Whether to enable DTMF detection during the relay session.
547
+ dtmf_detection: nil,
548
+ # Controls when caller input can interrupt assistant speech. `any` allows speech
549
+ # or DTMF interruptions; `none` disables interruptions; `speech` allows speech
550
+ # only; `dtmf` allows DTMF only.
551
+ interruptible: nil,
552
+ # Controls when caller input can interrupt assistant speech. `any` allows speech
553
+ # or DTMF interruptions; `none` disables interruptions; `speech` allows speech
554
+ # only; `dtmf` allows DTMF only.
555
+ interruptible_greeting: nil,
556
+ # Language-specific TTS and transcription settings.
557
+ languages: nil
558
+ )
559
+ end
560
+
561
+ sig do
562
+ override.returns(
563
+ {
564
+ url: String,
565
+ dtmf_detection: T::Boolean,
566
+ interruptible:
567
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::Interruptible::OrSymbol,
568
+ interruptible_greeting:
569
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::InterruptibleGreeting::OrSymbol,
570
+ languages:
571
+ T::Array[
572
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::Language
573
+ ]
574
+ }
575
+ )
576
+ end
577
+ def to_hash
578
+ end
579
+
580
+ # Controls when caller input can interrupt assistant speech. `any` allows speech
581
+ # or DTMF interruptions; `none` disables interruptions; `speech` allows speech
582
+ # only; `dtmf` allows DTMF only.
583
+ module Interruptible
584
+ extend Telnyx::Internal::Type::Enum
585
+
586
+ TaggedSymbol =
587
+ T.type_alias do
588
+ T.all(
589
+ Symbol,
590
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::Interruptible
591
+ )
592
+ end
593
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
594
+
595
+ NONE =
596
+ T.let(
597
+ :none,
598
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::Interruptible::TaggedSymbol
599
+ )
600
+ ANY =
601
+ T.let(
602
+ :any,
603
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::Interruptible::TaggedSymbol
604
+ )
605
+ SPEECH =
606
+ T.let(
607
+ :speech,
608
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::Interruptible::TaggedSymbol
609
+ )
610
+ DTMF =
611
+ T.let(
612
+ :dtmf,
613
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::Interruptible::TaggedSymbol
614
+ )
615
+
616
+ sig do
617
+ override.returns(
618
+ T::Array[
619
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::Interruptible::TaggedSymbol
620
+ ]
621
+ )
622
+ end
623
+ def self.values
624
+ end
625
+ end
626
+
627
+ # Controls when caller input can interrupt assistant speech. `any` allows speech
628
+ # or DTMF interruptions; `none` disables interruptions; `speech` allows speech
629
+ # only; `dtmf` allows DTMF only.
630
+ module InterruptibleGreeting
631
+ extend Telnyx::Internal::Type::Enum
632
+
633
+ TaggedSymbol =
634
+ T.type_alias do
635
+ T.all(
636
+ Symbol,
637
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::InterruptibleGreeting
638
+ )
639
+ end
640
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
641
+
642
+ NONE =
643
+ T.let(
644
+ :none,
645
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::InterruptibleGreeting::TaggedSymbol
646
+ )
647
+ ANY =
648
+ T.let(
649
+ :any,
650
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::InterruptibleGreeting::TaggedSymbol
651
+ )
652
+ SPEECH =
653
+ T.let(
654
+ :speech,
655
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::InterruptibleGreeting::TaggedSymbol
656
+ )
657
+ DTMF =
658
+ T.let(
659
+ :dtmf,
660
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::InterruptibleGreeting::TaggedSymbol
661
+ )
662
+
663
+ sig do
664
+ override.returns(
665
+ T::Array[
666
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::InterruptibleGreeting::TaggedSymbol
667
+ ]
668
+ )
669
+ end
670
+ def self.values
671
+ end
672
+ end
673
+
674
+ class Language < Telnyx::Internal::Type::BaseModel
675
+ OrHash =
676
+ T.type_alias do
677
+ T.any(
678
+ Telnyx::Calls::ActionStartConversationRelayParams::ConversationRelaySettings::Language,
679
+ Telnyx::Internal::AnyHash
680
+ )
681
+ end
682
+
683
+ # BCP 47 language code.
684
+ sig { returns(T.nilable(String)) }
685
+ attr_reader :code
686
+
687
+ sig { params(code: String).void }
688
+ attr_writer :code
689
+
690
+ # Speech recognition model for this language.
691
+ sig { returns(T.nilable(String)) }
692
+ attr_reader :speech_model
693
+
694
+ sig { params(speech_model: String).void }
695
+ attr_writer :speech_model
696
+
697
+ # Speech-to-text provider for this language.
698
+ sig { returns(T.nilable(String)) }
699
+ attr_reader :transcription_provider
700
+
701
+ sig { params(transcription_provider: String).void }
702
+ attr_writer :transcription_provider
703
+
704
+ # Text-to-speech provider for this language.
705
+ sig { returns(T.nilable(String)) }
706
+ attr_reader :tts_provider
707
+
708
+ sig { params(tts_provider: String).void }
709
+ attr_writer :tts_provider
710
+
711
+ # Voice identifier for this language.
712
+ sig { returns(T.nilable(String)) }
713
+ attr_reader :voice
714
+
715
+ sig { params(voice: String).void }
716
+ attr_writer :voice
717
+
718
+ # Language-specific speech and transcription settings for Conversation Relay.
719
+ sig do
720
+ params(
721
+ code: String,
722
+ speech_model: String,
723
+ transcription_provider: String,
724
+ tts_provider: String,
725
+ voice: String
726
+ ).returns(T.attached_class)
727
+ end
728
+ def self.new(
729
+ # BCP 47 language code.
730
+ code: nil,
731
+ # Speech recognition model for this language.
732
+ speech_model: nil,
733
+ # Speech-to-text provider for this language.
734
+ transcription_provider: nil,
735
+ # Text-to-speech provider for this language.
736
+ tts_provider: nil,
737
+ # Voice identifier for this language.
738
+ voice: nil
739
+ )
740
+ end
741
+
742
+ sig do
743
+ override.returns(
744
+ {
745
+ code: String,
746
+ speech_model: String,
747
+ transcription_provider: String,
748
+ tts_provider: String,
749
+ voice: String
750
+ }
751
+ )
752
+ end
753
+ def to_hash
754
+ end
755
+ end
756
+ end
757
+
758
+ class InterruptionSettings < Telnyx::Internal::Type::BaseModel
759
+ OrHash =
760
+ T.type_alias do
761
+ T.any(
762
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings,
763
+ Telnyx::Internal::AnyHash
764
+ )
765
+ end
766
+
767
+ # Legacy boolean form. `true` is equivalent to `interruptible=any`; `false` is
768
+ # equivalent to `interruptible=none`.
769
+ sig { returns(T.nilable(T::Boolean)) }
770
+ attr_reader :enable
771
+
772
+ sig { params(enable: T::Boolean).void }
773
+ attr_writer :enable
774
+
775
+ # Controls when caller input can interrupt assistant speech. `any` allows speech
776
+ # or DTMF interruptions; `none` disables interruptions; `speech` allows speech
777
+ # only; `dtmf` allows DTMF only.
778
+ sig do
779
+ returns(
780
+ T.nilable(
781
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::Interruptible::OrSymbol
782
+ )
783
+ )
784
+ end
785
+ attr_reader :interruptible
786
+
787
+ sig do
788
+ params(
789
+ interruptible:
790
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::Interruptible::OrSymbol
791
+ ).void
792
+ end
793
+ attr_writer :interruptible
794
+
795
+ # Controls when caller input can interrupt assistant speech. `any` allows speech
796
+ # or DTMF interruptions; `none` disables interruptions; `speech` allows speech
797
+ # only; `dtmf` allows DTMF only.
798
+ sig do
799
+ returns(
800
+ T.nilable(
801
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::InterruptibleGreeting::OrSymbol
802
+ )
803
+ )
804
+ end
805
+ attr_reader :interruptible_greeting
806
+
807
+ sig do
808
+ params(
809
+ interruptible_greeting:
810
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::InterruptibleGreeting::OrSymbol
811
+ ).void
812
+ end
813
+ attr_writer :interruptible_greeting
814
+
815
+ # Controls when caller input can interrupt assistant speech. `any` allows speech
816
+ # or DTMF interruptions; `none` disables interruptions; `speech` allows speech
817
+ # only; `dtmf` allows DTMF only.
818
+ sig do
819
+ returns(
820
+ T.nilable(
821
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::WelcomeGreetingInterruptible::OrSymbol
822
+ )
823
+ )
824
+ end
825
+ attr_reader :welcome_greeting_interruptible
826
+
827
+ sig do
828
+ params(
829
+ welcome_greeting_interruptible:
830
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::WelcomeGreetingInterruptible::OrSymbol
831
+ ).void
832
+ end
833
+ attr_writer :welcome_greeting_interruptible
834
+
835
+ # Settings for handling caller interruptions during Conversation Relay speech.
836
+ sig do
837
+ params(
838
+ enable: T::Boolean,
839
+ interruptible:
840
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::Interruptible::OrSymbol,
841
+ interruptible_greeting:
842
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::InterruptibleGreeting::OrSymbol,
843
+ welcome_greeting_interruptible:
844
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::WelcomeGreetingInterruptible::OrSymbol
845
+ ).returns(T.attached_class)
846
+ end
847
+ def self.new(
848
+ # Legacy boolean form. `true` is equivalent to `interruptible=any`; `false` is
849
+ # equivalent to `interruptible=none`.
850
+ enable: nil,
851
+ # Controls when caller input can interrupt assistant speech. `any` allows speech
852
+ # or DTMF interruptions; `none` disables interruptions; `speech` allows speech
853
+ # only; `dtmf` allows DTMF only.
854
+ interruptible: nil,
855
+ # Controls when caller input can interrupt assistant speech. `any` allows speech
856
+ # or DTMF interruptions; `none` disables interruptions; `speech` allows speech
857
+ # only; `dtmf` allows DTMF only.
858
+ interruptible_greeting: nil,
859
+ # Controls when caller input can interrupt assistant speech. `any` allows speech
860
+ # or DTMF interruptions; `none` disables interruptions; `speech` allows speech
861
+ # only; `dtmf` allows DTMF only.
862
+ welcome_greeting_interruptible: nil
863
+ )
864
+ end
865
+
866
+ sig do
867
+ override.returns(
868
+ {
869
+ enable: T::Boolean,
870
+ interruptible:
871
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::Interruptible::OrSymbol,
872
+ interruptible_greeting:
873
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::InterruptibleGreeting::OrSymbol,
874
+ welcome_greeting_interruptible:
875
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::WelcomeGreetingInterruptible::OrSymbol
876
+ }
877
+ )
878
+ end
879
+ def to_hash
880
+ end
881
+
882
+ # Controls when caller input can interrupt assistant speech. `any` allows speech
883
+ # or DTMF interruptions; `none` disables interruptions; `speech` allows speech
884
+ # only; `dtmf` allows DTMF only.
885
+ module Interruptible
886
+ extend Telnyx::Internal::Type::Enum
887
+
888
+ TaggedSymbol =
889
+ T.type_alias do
890
+ T.all(
891
+ Symbol,
892
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::Interruptible
893
+ )
894
+ end
895
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
896
+
897
+ NONE =
898
+ T.let(
899
+ :none,
900
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::Interruptible::TaggedSymbol
901
+ )
902
+ ANY =
903
+ T.let(
904
+ :any,
905
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::Interruptible::TaggedSymbol
906
+ )
907
+ SPEECH =
908
+ T.let(
909
+ :speech,
910
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::Interruptible::TaggedSymbol
911
+ )
912
+ DTMF =
913
+ T.let(
914
+ :dtmf,
915
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::Interruptible::TaggedSymbol
916
+ )
917
+
918
+ sig do
919
+ override.returns(
920
+ T::Array[
921
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::Interruptible::TaggedSymbol
922
+ ]
923
+ )
924
+ end
925
+ def self.values
926
+ end
927
+ end
928
+
929
+ # Controls when caller input can interrupt assistant speech. `any` allows speech
930
+ # or DTMF interruptions; `none` disables interruptions; `speech` allows speech
931
+ # only; `dtmf` allows DTMF only.
932
+ module InterruptibleGreeting
933
+ extend Telnyx::Internal::Type::Enum
934
+
935
+ TaggedSymbol =
936
+ T.type_alias do
937
+ T.all(
938
+ Symbol,
939
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::InterruptibleGreeting
940
+ )
941
+ end
942
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
943
+
944
+ NONE =
945
+ T.let(
946
+ :none,
947
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::InterruptibleGreeting::TaggedSymbol
948
+ )
949
+ ANY =
950
+ T.let(
951
+ :any,
952
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::InterruptibleGreeting::TaggedSymbol
953
+ )
954
+ SPEECH =
955
+ T.let(
956
+ :speech,
957
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::InterruptibleGreeting::TaggedSymbol
958
+ )
959
+ DTMF =
960
+ T.let(
961
+ :dtmf,
962
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::InterruptibleGreeting::TaggedSymbol
963
+ )
964
+
965
+ sig do
966
+ override.returns(
967
+ T::Array[
968
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::InterruptibleGreeting::TaggedSymbol
969
+ ]
970
+ )
971
+ end
972
+ def self.values
973
+ end
974
+ end
975
+
976
+ # Controls when caller input can interrupt assistant speech. `any` allows speech
977
+ # or DTMF interruptions; `none` disables interruptions; `speech` allows speech
978
+ # only; `dtmf` allows DTMF only.
979
+ module WelcomeGreetingInterruptible
980
+ extend Telnyx::Internal::Type::Enum
981
+
982
+ TaggedSymbol =
983
+ T.type_alias do
984
+ T.all(
985
+ Symbol,
986
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::WelcomeGreetingInterruptible
987
+ )
988
+ end
989
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
990
+
991
+ NONE =
992
+ T.let(
993
+ :none,
994
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::WelcomeGreetingInterruptible::TaggedSymbol
995
+ )
996
+ ANY =
997
+ T.let(
998
+ :any,
999
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::WelcomeGreetingInterruptible::TaggedSymbol
1000
+ )
1001
+ SPEECH =
1002
+ T.let(
1003
+ :speech,
1004
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::WelcomeGreetingInterruptible::TaggedSymbol
1005
+ )
1006
+ DTMF =
1007
+ T.let(
1008
+ :dtmf,
1009
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::WelcomeGreetingInterruptible::TaggedSymbol
1010
+ )
1011
+
1012
+ sig do
1013
+ override.returns(
1014
+ T::Array[
1015
+ Telnyx::Calls::ActionStartConversationRelayParams::InterruptionSettings::WelcomeGreetingInterruptible::TaggedSymbol
1016
+ ]
1017
+ )
1018
+ end
1019
+ def self.values
1020
+ end
1021
+ end
1022
+ end
1023
+
1024
+ class Language < Telnyx::Internal::Type::BaseModel
1025
+ OrHash =
1026
+ T.type_alias do
1027
+ T.any(
1028
+ Telnyx::Calls::ActionStartConversationRelayParams::Language,
1029
+ Telnyx::Internal::AnyHash
1030
+ )
1031
+ end
1032
+
1033
+ # BCP 47 language code.
1034
+ sig { returns(T.nilable(String)) }
1035
+ attr_reader :code
1036
+
1037
+ sig { params(code: String).void }
1038
+ attr_writer :code
1039
+
1040
+ # Speech recognition model for this language.
1041
+ sig { returns(T.nilable(String)) }
1042
+ attr_reader :speech_model
1043
+
1044
+ sig { params(speech_model: String).void }
1045
+ attr_writer :speech_model
1046
+
1047
+ # Speech-to-text provider for this language.
1048
+ sig { returns(T.nilable(String)) }
1049
+ attr_reader :transcription_provider
1050
+
1051
+ sig { params(transcription_provider: String).void }
1052
+ attr_writer :transcription_provider
1053
+
1054
+ # Text-to-speech provider for this language.
1055
+ sig { returns(T.nilable(String)) }
1056
+ attr_reader :tts_provider
1057
+
1058
+ sig { params(tts_provider: String).void }
1059
+ attr_writer :tts_provider
1060
+
1061
+ # Voice identifier for this language.
1062
+ sig { returns(T.nilable(String)) }
1063
+ attr_reader :voice
1064
+
1065
+ sig { params(voice: String).void }
1066
+ attr_writer :voice
1067
+
1068
+ # Language-specific speech and transcription settings for Conversation Relay.
1069
+ sig do
1070
+ params(
1071
+ code: String,
1072
+ speech_model: String,
1073
+ transcription_provider: String,
1074
+ tts_provider: String,
1075
+ voice: String
1076
+ ).returns(T.attached_class)
1077
+ end
1078
+ def self.new(
1079
+ # BCP 47 language code.
1080
+ code: nil,
1081
+ # Speech recognition model for this language.
1082
+ speech_model: nil,
1083
+ # Speech-to-text provider for this language.
1084
+ transcription_provider: nil,
1085
+ # Text-to-speech provider for this language.
1086
+ tts_provider: nil,
1087
+ # Voice identifier for this language.
1088
+ voice: nil
1089
+ )
1090
+ end
1091
+
1092
+ sig do
1093
+ override.returns(
1094
+ {
1095
+ code: String,
1096
+ speech_model: String,
1097
+ transcription_provider: String,
1098
+ tts_provider: String,
1099
+ voice: String
1100
+ }
1101
+ )
1102
+ end
1103
+ def to_hash
1104
+ end
1105
+ end
1106
+
1107
+ class Transcription < Telnyx::Internal::Type::BaseModel
1108
+ OrHash =
1109
+ T.type_alias do
1110
+ T.any(
1111
+ Telnyx::Calls::ActionStartConversationRelayParams::Transcription,
1112
+ Telnyx::Internal::AnyHash
1113
+ )
1114
+ end
1115
+
1116
+ # Transcription language.
1117
+ sig { returns(T.nilable(String)) }
1118
+ attr_reader :language
1119
+
1120
+ sig { params(language: String).void }
1121
+ attr_writer :language
1122
+
1123
+ # Transcription model to use.
1124
+ sig { returns(T.nilable(String)) }
1125
+ attr_reader :model
1126
+
1127
+ sig { params(model: String).void }
1128
+ attr_writer :model
1129
+
1130
+ # Transcription provider to use.
1131
+ sig { returns(T.nilable(String)) }
1132
+ attr_reader :provider
1133
+
1134
+ sig { params(provider: String).void }
1135
+ attr_writer :provider
1136
+
1137
+ # Speech-to-text settings for Conversation Relay.
1138
+ sig do
1139
+ params(language: String, model: String, provider: String).returns(
1140
+ T.attached_class
1141
+ )
1142
+ end
1143
+ def self.new(
1144
+ # Transcription language.
1145
+ language: nil,
1146
+ # Transcription model to use.
1147
+ model: nil,
1148
+ # Transcription provider to use.
1149
+ provider: nil
1150
+ )
1151
+ end
1152
+
1153
+ sig do
1154
+ override.returns(
1155
+ { language: String, model: String, provider: String }
1156
+ )
1157
+ end
1158
+ def to_hash
1159
+ end
1160
+ end
1161
+
1162
+ # The settings associated with the voice selected
1163
+ module VoiceSettings
1164
+ extend Telnyx::Internal::Type::Union
1165
+
1166
+ Variants =
1167
+ T.type_alias do
1168
+ T.any(
1169
+ Telnyx::Calls::ElevenLabsVoiceSettings,
1170
+ Telnyx::Calls::TelnyxVoiceSettings,
1171
+ Telnyx::Calls::AwsVoiceSettings,
1172
+ Telnyx::AzureVoiceSettings,
1173
+ Telnyx::RimeVoiceSettings,
1174
+ Telnyx::ResembleVoiceSettings,
1175
+ Telnyx::XaiVoiceSettings
1176
+ )
1177
+ end
1178
+
1179
+ sig do
1180
+ override.returns(
1181
+ T::Array[
1182
+ Telnyx::Calls::ActionStartConversationRelayParams::VoiceSettings::Variants
1183
+ ]
1184
+ )
1185
+ end
1186
+ def self.variants
1187
+ end
1188
+ end
1189
+ end
1190
+ end
1191
+ end
1192
+ end