revox 0.2.0 → 0.4.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 (208) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -0
  3. data/README.md +38 -38
  4. data/lib/revox/client.rb +8 -0
  5. data/lib/revox/internal/type/base_model.rb +3 -3
  6. data/lib/revox/models/assistant_clone_params.rb +20 -0
  7. data/lib/revox/models/assistant_clone_response.rb +1616 -0
  8. data/lib/revox/models/assistant_create_params.rb +90 -66
  9. data/lib/revox/models/assistant_create_response.rb +87 -65
  10. data/lib/revox/models/assistant_list_response.rb +87 -65
  11. data/lib/revox/models/assistant_retrieve_response.rb +86 -65
  12. data/lib/revox/models/assistant_update_params.rb +90 -66
  13. data/lib/revox/models/assistant_update_response.rb +87 -65
  14. data/lib/revox/models/auth_status_retrieve_params.rb +14 -0
  15. data/lib/revox/models/auth_status_retrieve_response.rb +17 -0
  16. data/lib/revox/models/call_cancel_params.rb +20 -0
  17. data/lib/revox/models/call_cancel_response.rb +16 -0
  18. data/lib/revox/models/call_create_params.rb +117 -90
  19. data/lib/revox/models/call_create_response.rb +680 -90
  20. data/lib/revox/models/call_export_params.rb +203 -0
  21. data/lib/revox/models/call_export_response.rb +22 -0
  22. data/lib/revox/models/call_pause_params.rb +20 -0
  23. data/lib/revox/models/call_pause_response.rb +16 -0
  24. data/lib/revox/models/call_phone_history_params.rb +14 -0
  25. data/lib/revox/models/call_phone_history_response.rb +95 -0
  26. data/lib/revox/models/call_resume_params.rb +20 -0
  27. data/lib/revox/models/call_resume_response.rb +16 -0
  28. data/lib/revox/models/call_retrieve_response.rb +681 -90
  29. data/lib/revox/models/call_search_params.rb +169 -0
  30. data/lib/revox/models/call_search_response.rb +3694 -0
  31. data/lib/revox/models/campaign_create_params.rb +7 -57
  32. data/lib/revox/models/campaign_create_response.rb +108 -119
  33. data/lib/revox/models/campaign_get_rows_response.rb +682 -90
  34. data/lib/revox/models/campaign_list_response.rb +108 -119
  35. data/lib/revox/models/campaign_pause_params.rb +20 -0
  36. data/lib/revox/models/campaign_pause_response.rb +16 -0
  37. data/lib/revox/models/campaign_resume_params.rb +20 -0
  38. data/lib/revox/models/campaign_resume_response.rb +16 -0
  39. data/lib/revox/models/campaign_retrieve_response.rb +108 -119
  40. data/lib/revox/models/campaign_statistics_params.rb +20 -0
  41. data/lib/revox/models/campaign_statistics_response.rb +514 -0
  42. data/lib/revox/models/campaign_update_params.rb +165 -0
  43. data/lib/revox/models/campaign_update_response.rb +2019 -0
  44. data/lib/revox/models/phone_number_delete_params.rb +20 -0
  45. data/lib/revox/models/phone_number_delete_response.rb +16 -0
  46. data/lib/revox/models/phone_number_list_params.rb +14 -0
  47. data/lib/revox/models/phone_number_list_response.rb +1799 -0
  48. data/lib/revox/models/phone_number_update_params.rb +32 -0
  49. data/lib/revox/models/phone_number_update_response.rb +1799 -0
  50. data/lib/revox/models/user_retrieve_params.rb +14 -0
  51. data/lib/revox/models/user_retrieve_response.rb +99 -0
  52. data/lib/revox/models/voice_clone_params.rb +78 -0
  53. data/lib/revox/models/voice_clone_response.rb +40 -0
  54. data/lib/revox/models/voice_delete_params.rb +20 -0
  55. data/lib/revox/models/voice_delete_response.rb +16 -0
  56. data/lib/revox/models/voice_list_response.rb +1 -0
  57. data/lib/revox/models/voice_preview_params.rb +1 -0
  58. data/lib/revox/models/voice_retrieve_params.rb +1 -0
  59. data/lib/revox/models.rb +35 -1
  60. data/lib/revox/resources/assistants.rb +31 -10
  61. data/lib/revox/resources/auth_status.rb +32 -0
  62. data/lib/revox/resources/call.rb +149 -4
  63. data/lib/revox/resources/campaigns.rb +110 -11
  64. data/lib/revox/resources/phone_numbers.rb +74 -0
  65. data/lib/revox/resources/users.rb +17 -3
  66. data/lib/revox/resources/voices.rb +50 -0
  67. data/lib/revox/version.rb +1 -1
  68. data/lib/revox.rb +38 -5
  69. data/rbi/revox/client.rbi +6 -0
  70. data/rbi/revox/models/assistant_clone_params.rbi +33 -0
  71. data/rbi/revox/models/assistant_clone_response.rbi +3351 -0
  72. data/rbi/revox/models/assistant_create_params.rbi +148 -162
  73. data/rbi/revox/models/assistant_create_response.rbi +157 -147
  74. data/rbi/revox/models/assistant_list_response.rbi +157 -147
  75. data/rbi/revox/models/assistant_retrieve_response.rbi +153 -147
  76. data/rbi/revox/models/assistant_update_params.rbi +148 -162
  77. data/rbi/revox/models/assistant_update_response.rbi +157 -147
  78. data/rbi/revox/models/auth_status_retrieve_params.rbi +27 -0
  79. data/rbi/revox/models/auth_status_retrieve_response.rbi +30 -0
  80. data/rbi/revox/models/call_cancel_params.rbi +33 -0
  81. data/rbi/revox/models/call_cancel_response.rbi +23 -0
  82. data/rbi/revox/models/call_create_params.rbi +190 -187
  83. data/rbi/revox/models/call_create_response.rbi +1150 -227
  84. data/rbi/revox/models/call_export_params.rbi +446 -0
  85. data/rbi/revox/models/call_export_response.rbi +26 -0
  86. data/rbi/revox/models/call_pause_params.rbi +31 -0
  87. data/rbi/revox/models/call_pause_response.rbi +23 -0
  88. data/rbi/revox/models/call_phone_history_params.rbi +27 -0
  89. data/rbi/revox/models/call_phone_history_response.rbi +209 -0
  90. data/rbi/revox/models/call_resume_params.rbi +33 -0
  91. data/rbi/revox/models/call_resume_response.rbi +23 -0
  92. data/rbi/revox/models/call_retrieve_response.rbi +1150 -227
  93. data/rbi/revox/models/call_search_params.rbi +281 -0
  94. data/rbi/revox/models/call_search_response.rbi +7504 -0
  95. data/rbi/revox/models/campaign_create_params.rbi +9 -87
  96. data/rbi/revox/models/campaign_create_response.rbi +188 -266
  97. data/rbi/revox/models/campaign_get_rows_response.rbi +1150 -225
  98. data/rbi/revox/models/campaign_list_response.rbi +188 -262
  99. data/rbi/revox/models/campaign_pause_params.rbi +33 -0
  100. data/rbi/revox/models/campaign_pause_response.rbi +23 -0
  101. data/rbi/revox/models/campaign_resume_params.rbi +33 -0
  102. data/rbi/revox/models/campaign_resume_response.rbi +23 -0
  103. data/rbi/revox/models/campaign_retrieve_response.rbi +188 -266
  104. data/rbi/revox/models/campaign_statistics_params.rbi +33 -0
  105. data/rbi/revox/models/campaign_statistics_response.rbi +1069 -0
  106. data/rbi/revox/models/campaign_update_params.rbi +313 -0
  107. data/rbi/revox/models/campaign_update_response.rbi +4092 -0
  108. data/rbi/revox/models/phone_number_delete_params.rbi +33 -0
  109. data/rbi/revox/models/phone_number_delete_response.rbi +26 -0
  110. data/rbi/revox/models/phone_number_list_params.rbi +27 -0
  111. data/rbi/revox/models/phone_number_list_response.rbi +3690 -0
  112. data/rbi/revox/models/phone_number_update_params.rbi +53 -0
  113. data/rbi/revox/models/phone_number_update_response.rbi +3693 -0
  114. data/rbi/revox/models/user_retrieve_params.rbi +27 -0
  115. data/rbi/revox/models/user_retrieve_response.rbi +140 -0
  116. data/rbi/revox/models/voice_clone_params.rbi +141 -0
  117. data/rbi/revox/models/voice_clone_response.rbi +53 -0
  118. data/rbi/revox/models/voice_delete_params.rbi +33 -0
  119. data/rbi/revox/models/voice_delete_response.rbi +23 -0
  120. data/rbi/revox/models/voice_list_response.rbi +5 -0
  121. data/rbi/revox/models/voice_preview_params.rbi +2 -0
  122. data/rbi/revox/models/voice_retrieve_params.rbi +2 -0
  123. data/rbi/revox/models.rbi +35 -1
  124. data/rbi/revox/resources/assistants.rbi +52 -22
  125. data/rbi/revox/resources/auth_status.rbi +21 -0
  126. data/rbi/revox/resources/call.rbi +114 -4
  127. data/rbi/revox/resources/campaigns.rbi +77 -15
  128. data/rbi/revox/resources/phone_numbers.rbi +43 -0
  129. data/rbi/revox/resources/users.rbi +8 -2
  130. data/rbi/revox/resources/voices.rbi +39 -0
  131. data/sig/revox/client.rbs +4 -0
  132. data/sig/revox/models/assistant_clone_params.rbs +20 -0
  133. data/sig/revox/models/assistant_clone_response.rbs +1310 -0
  134. data/sig/revox/models/assistant_create_params.rbs +39 -58
  135. data/sig/revox/models/assistant_create_response.rbs +46 -54
  136. data/sig/revox/models/assistant_list_response.rbs +46 -54
  137. data/sig/revox/models/assistant_retrieve_response.rbs +46 -54
  138. data/sig/revox/models/assistant_update_params.rbs +39 -58
  139. data/sig/revox/models/assistant_update_response.rbs +46 -54
  140. data/sig/revox/models/auth_status_retrieve_params.rbs +15 -0
  141. data/sig/revox/models/auth_status_retrieve_response.rbs +13 -0
  142. data/sig/revox/models/call_cancel_params.rbs +20 -0
  143. data/sig/revox/models/call_cancel_response.rbs +13 -0
  144. data/sig/revox/models/call_create_params.rbs +50 -71
  145. data/sig/revox/models/call_create_response.rbs +473 -77
  146. data/sig/revox/models/call_export_params.rbs +230 -0
  147. data/sig/revox/models/call_export_response.rbs +15 -0
  148. data/sig/revox/models/call_pause_params.rbs +20 -0
  149. data/sig/revox/models/call_pause_response.rbs +13 -0
  150. data/sig/revox/models/call_phone_history_params.rbs +15 -0
  151. data/sig/revox/models/call_phone_history_response.rbs +93 -0
  152. data/sig/revox/models/call_resume_params.rbs +20 -0
  153. data/sig/revox/models/call_resume_response.rbs +13 -0
  154. data/sig/revox/models/call_retrieve_response.rbs +473 -77
  155. data/sig/revox/models/call_search_params.rbs +194 -0
  156. data/sig/revox/models/call_search_response.rbs +3045 -0
  157. data/sig/revox/models/campaign_create_params.rbs +5 -50
  158. data/sig/revox/models/campaign_create_response.rbs +62 -98
  159. data/sig/revox/models/campaign_get_rows_response.rbs +472 -73
  160. data/sig/revox/models/campaign_list_response.rbs +62 -98
  161. data/sig/revox/models/campaign_pause_params.rbs +20 -0
  162. data/sig/revox/models/campaign_pause_response.rbs +13 -0
  163. data/sig/revox/models/campaign_resume_params.rbs +20 -0
  164. data/sig/revox/models/campaign_resume_response.rbs +13 -0
  165. data/sig/revox/models/campaign_retrieve_response.rbs +62 -98
  166. data/sig/revox/models/campaign_statistics_params.rbs +20 -0
  167. data/sig/revox/models/campaign_statistics_response.rbs +489 -0
  168. data/sig/revox/models/campaign_update_params.rbs +135 -0
  169. data/sig/revox/models/campaign_update_response.rbs +1658 -0
  170. data/sig/revox/models/phone_number_delete_params.rbs +20 -0
  171. data/sig/revox/models/phone_number_delete_response.rbs +13 -0
  172. data/sig/revox/models/phone_number_list_params.rbs +15 -0
  173. data/sig/revox/models/phone_number_list_response.rbs +1454 -0
  174. data/sig/revox/models/phone_number_update_params.rbs +32 -0
  175. data/sig/revox/models/phone_number_update_response.rbs +1452 -0
  176. data/sig/revox/models/user_retrieve_params.rbs +14 -0
  177. data/sig/revox/models/user_retrieve_response.rbs +71 -0
  178. data/sig/revox/models/voice_clone_params.rbs +79 -0
  179. data/sig/revox/models/voice_clone_response.rbs +40 -0
  180. data/sig/revox/models/voice_delete_params.rbs +20 -0
  181. data/sig/revox/models/voice_delete_response.rbs +13 -0
  182. data/sig/revox/models/voice_list_response.rbs +2 -1
  183. data/sig/revox/models/voice_preview_params.rbs +2 -1
  184. data/sig/revox/models/voice_retrieve_params.rbs +2 -1
  185. data/sig/revox/models.rbs +35 -1
  186. data/sig/revox/resources/assistants.rbs +9 -4
  187. data/sig/revox/resources/auth_status.rbs +11 -0
  188. data/sig/revox/resources/call.rbs +46 -1
  189. data/sig/revox/resources/campaigns.rbs +24 -3
  190. data/sig/revox/resources/phone_numbers.rbs +23 -0
  191. data/sig/revox/resources/users.rbs +3 -1
  192. data/sig/revox/resources/voices.rbs +13 -0
  193. metadata +116 -17
  194. data/lib/revox/models/users/me_retrieve_params.rb +0 -16
  195. data/lib/revox/models/users/me_retrieve_response.rb +0 -101
  196. data/lib/revox/models/users/me_update_params.rb +0 -22
  197. data/lib/revox/models/users/me_update_response.rb +0 -101
  198. data/lib/revox/resources/users/me.rb +0 -55
  199. data/rbi/revox/models/users/me_retrieve_params.rbi +0 -29
  200. data/rbi/revox/models/users/me_retrieve_response.rbi +0 -149
  201. data/rbi/revox/models/users/me_update_params.rbi +0 -43
  202. data/rbi/revox/models/users/me_update_response.rbi +0 -149
  203. data/rbi/revox/resources/users/me.rbi +0 -33
  204. data/sig/revox/models/users/me_retrieve_params.rbs +0 -16
  205. data/sig/revox/models/users/me_retrieve_response.rbs +0 -75
  206. data/sig/revox/models/users/me_update_params.rbs +0 -28
  207. data/sig/revox/models/users/me_update_response.rbs +0 -75
  208. data/sig/revox/resources/users/me.rbs +0 -18
@@ -163,6 +163,14 @@ module Revox
163
163
  # @return [Object]
164
164
  required :updated_at, Revox::Internal::Type::Unknown
165
165
 
166
+ # @!attribute follow_up_emails
167
+ # Extra notification recipients resolved from the agent prompt's own routing
168
+ # rules, when it defines any. Added to the assistant's configured notification
169
+ # recipients; never replaces them. Null when the prompt defines no routing rules.
170
+ #
171
+ # @return [Array<String>, nil]
172
+ optional :follow_up_emails, Revox::Internal::Type::ArrayOf[String], nil?: true
173
+
166
174
  # @!attribute outcome
167
175
  # Business outcome of the call. Null if not computed or no transcript.
168
176
  #
@@ -175,7 +183,16 @@ module Revox
175
183
  # @return [String, nil]
176
184
  optional :outcome_summary, String, nil?: true
177
185
 
178
- # @!method initialize(id:, assignee:, assistant:, call_attempts:, call_retry_config:, calls_count:, campaign:, contact:, created_at:, direction:, first_sentence_delay_ms:, from_phone_number:, is_cancelled:, is_completed:, last_call_attempt:, llm_model:, metadata:, organization_id:, prompt_variables:, scheduled_at:, status:, to_phone_number:, updated_at:, outcome: nil, outcome_summary: nil)
186
+ # @!attribute slack_channel_ids
187
+ # Slack channels resolved from the agent prompt's own routing rules, when it
188
+ # defines any. Always a subset of the channels configured on the assistant. Null
189
+ # when the prompt defines no routing rules, in which case every configured channel
190
+ # is notified.
191
+ #
192
+ # @return [Array<String>, nil]
193
+ optional :slack_channel_ids, Revox::Internal::Type::ArrayOf[String], nil?: true
194
+
195
+ # @!method initialize(id:, assignee:, assistant:, call_attempts:, call_retry_config:, calls_count:, campaign:, contact:, created_at:, direction:, first_sentence_delay_ms:, from_phone_number:, is_cancelled:, is_completed:, last_call_attempt:, llm_model:, metadata:, organization_id:, prompt_variables:, scheduled_at:, status:, to_phone_number:, updated_at:, follow_up_emails: nil, outcome: nil, outcome_summary: nil, slack_channel_ids: nil)
179
196
  # Some parameter documentations has been truncated, see
180
197
  # {Revox::Models::CallRetrieveResponse::Call} for more details.
181
198
  #
@@ -228,9 +245,13 @@ module Revox
228
245
  #
229
246
  # @param updated_at [Object] The time the call order was last updated (any state change, retry, or analysis r
230
247
  #
248
+ # @param follow_up_emails [Array<String>, nil] Extra notification recipients resolved from the agent prompt's own routing rules
249
+ #
231
250
  # @param outcome [Symbol, Revox::Models::CallRetrieveResponse::Call::Outcome, nil] Business outcome of the call. Null if not computed or no transcript.
232
251
  #
233
252
  # @param outcome_summary [String, nil] LLM explanation for the outcome, when outcome was computed from the transcript.
253
+ #
254
+ # @param slack_channel_ids [Array<String>, nil] Slack channels resolved from the agent prompt's own routing rules, when it defin
234
255
 
235
256
  # @see Revox::Models::CallRetrieveResponse::Call#assignee
236
257
  class Assignee < Revox::Internal::Type::BaseModel
@@ -344,13 +365,6 @@ module Revox
344
365
  # @return [String, nil]
345
366
  required :email_notification_address, String, nil?: true
346
367
 
347
- # @!attribute email_notification_language
348
- # The language used for the notification email content. One of "en" or "fr".
349
- #
350
- # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationLanguage]
351
- required :email_notification_language,
352
- enum: -> { Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationLanguage }
353
-
354
368
  # @!attribute email_notification_outcomes
355
369
  # Which call outcomes trigger an email notification. E.g. ["interested",
356
370
  # "completed", "none"]. Use "none" when outcome is null.
@@ -390,8 +404,8 @@ module Revox
390
404
  required :from_phone_number, String, nil?: true
391
405
 
392
406
  # @!attribute human_transfer_mode
393
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
394
- # not configured.
407
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
408
+ # transfer is not configured.
395
409
  #
396
410
  # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::HumanTransferMode, nil]
397
411
  required :human_transfer_mode,
@@ -447,6 +461,13 @@ module Revox
447
461
  # @return [Revox::Models::CallRetrieveResponse::Call::Assistant::Position, nil]
448
462
  required :position, -> { Revox::Models::CallRetrieveResponse::Call::Assistant::Position }, nil?: true
449
463
 
464
+ # @!attribute precall_lookup_url
465
+ # URL fetched before an inbound call is answered to resolve the assistant's prompt
466
+ # variables. Null when no lookup is configured.
467
+ #
468
+ # @return [String, nil]
469
+ required :precall_lookup_url, String, nil?: true
470
+
450
471
  # @!attribute prompt
451
472
  #
452
473
  # @return [String]
@@ -530,11 +551,14 @@ module Revox
530
551
  # @return [Float]
531
552
  required :thinking_sound_volume, Float
532
553
 
533
- # @!attribute transfer_phone_number
534
- # Phone number to transfer calls to when users request to speak to a human agent.
554
+ # @!attribute transfer_destinations
555
+ # Where calls can be transferred to when users ask to speak to a human. Null or
556
+ # empty when transfer is not configured.
535
557
  #
536
- # @return [String, nil]
537
- required :transfer_phone_number, String, nil?: true
558
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::TransferDestination>, nil]
559
+ required :transfer_destinations,
560
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::Assistant::TransferDestination] },
561
+ nil?: true
538
562
 
539
563
  # @!attribute type
540
564
  #
@@ -595,6 +619,11 @@ module Revox
595
619
  optional :faq_items,
596
620
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem] }
597
621
 
622
+ # @!attribute is_inbound_receptionist
623
+ #
624
+ # @return [Boolean, nil]
625
+ optional :is_inbound_receptionist, Revox::Internal::Type::Boolean
626
+
598
627
  # @!attribute is_realestate_assistant
599
628
  #
600
629
  # @return [Boolean, nil]
@@ -605,7 +634,7 @@ module Revox
605
634
  # @return [Float, nil]
606
635
  optional :pending_faq_count, Float
607
636
 
608
- # @!method initialize(id:, after_call_sms_outcomes:, after_call_sms_prompt:, background_sound:, background_sound_volume:, calendly:, call_retry_config:, cartesia_dictionary_pronunciation_id:, created_at:, custom_tools:, email_notification_address:, email_notification_language:, email_notification_outcomes:, end_of_call_sentence:, first_sentence:, first_sentence_delay_ms:, first_sentence_mode:, from_phone_number:, human_transfer_mode:, ivr_navigation_enabled:, llm_model:, logo_url:, max_call_duration_secs:, max_duration_end_message:, name:, organization_id:, position:, prompt:, prompt_flow:, slack:, sms_enabled:, sms_template:, structured_output_config:, structured_output_prompt:, stt_context:, stt_model:, thinking_sound:, thinking_sound_probability:, thinking_sound_volume:, transfer_phone_number:, type:, updated_at:, voice:, voicemail_message:, voicemail_sms_prompt:, warm_transfer_summary_instructions:, webhook_url:, zoho:, created_by: nil, faq_items: nil, is_realestate_assistant: nil, pending_faq_count: nil)
637
+ # @!method initialize(id:, after_call_sms_outcomes:, after_call_sms_prompt:, background_sound:, background_sound_volume:, calendly:, call_retry_config:, cartesia_dictionary_pronunciation_id:, created_at:, custom_tools:, email_notification_address:, email_notification_outcomes:, end_of_call_sentence:, first_sentence:, first_sentence_delay_ms:, first_sentence_mode:, from_phone_number:, human_transfer_mode:, ivr_navigation_enabled:, llm_model:, logo_url:, max_call_duration_secs:, max_duration_end_message:, name:, organization_id:, position:, precall_lookup_url:, prompt:, prompt_flow:, slack:, sms_enabled:, sms_template:, structured_output_config:, structured_output_prompt:, stt_context:, stt_model:, thinking_sound:, thinking_sound_probability:, thinking_sound_volume:, transfer_destinations:, type:, updated_at:, voice:, voicemail_message:, voicemail_sms_prompt:, warm_transfer_summary_instructions:, webhook_url:, zoho:, created_by: nil, faq_items: nil, is_inbound_receptionist: nil, is_realestate_assistant: nil, pending_faq_count: nil)
609
638
  # Some parameter documentations has been truncated, see
610
639
  # {Revox::Models::CallRetrieveResponse::Call::Assistant} for more details.
611
640
  #
@@ -631,8 +660,6 @@ module Revox
631
660
  #
632
661
  # @param email_notification_address [String, nil] Email address(es) to receive notifications when a call ends with a matching outc
633
662
  #
634
- # @param email_notification_language [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationLanguage] The language used for the notification email content. One of "en" or "fr".
635
- #
636
663
  # @param email_notification_outcomes [Array<Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationOutcome>, nil] Which call outcomes trigger an email notification. E.g. ["interested", "complete
637
664
  #
638
665
  # @param end_of_call_sentence [String, nil]
@@ -645,7 +672,7 @@ module Revox
645
672
  #
646
673
  # @param from_phone_number [String, nil] Override the default outbound phone number for calls placed with this assistant.
647
674
  #
648
- # @param human_transfer_mode [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::HumanTransferMode, nil] Warm or cold transfer when transfer_phone_number is set; null when transfer is n
675
+ # @param human_transfer_mode [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::HumanTransferMode, nil] Warm or cold transfer when transfer_destinations is non-empty; null when transfe
649
676
  #
650
677
  # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
651
678
  #
@@ -663,6 +690,8 @@ module Revox
663
690
  #
664
691
  # @param position [Revox::Models::CallRetrieveResponse::Call::Assistant::Position, nil]
665
692
  #
693
+ # @param precall_lookup_url [String, nil] URL fetched before an inbound call is answered to resolve the assistant's prompt
694
+ #
666
695
  # @param prompt [String]
667
696
  #
668
697
  # @param prompt_flow [Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow, nil]
@@ -687,7 +716,7 @@ module Revox
687
716
  #
688
717
  # @param thinking_sound_volume [Float] Volume of the thinking sound (0 = silent, 1 = max).
689
718
  #
690
- # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent.
719
+ # @param transfer_destinations [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::TransferDestination>, nil] Where calls can be transferred to when users ask to speak to a human. Null or em
691
720
  #
692
721
  # @param type [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::Type]
693
722
  #
@@ -709,6 +738,8 @@ module Revox
709
738
  #
710
739
  # @param faq_items [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem>]
711
740
  #
741
+ # @param is_inbound_receptionist [Boolean]
742
+ #
712
743
  # @param is_realestate_assistant [Boolean]
713
744
  #
714
745
  # @param pending_faq_count [Float]
@@ -720,9 +751,6 @@ module Revox
720
751
  INTERESTED = :interested
721
752
  COMPLETED = :completed
722
753
  REQUESTED_CALLBACK_LATER = :requested_callback_later
723
- REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
724
- DO_NOT_CONTACT = :do_not_contact
725
- AI_AVERSE = :ai_averse
726
754
  NONE = :none
727
755
 
728
756
  # @!method self.values
@@ -856,7 +884,8 @@ module Revox
856
884
  required :calling_window_start_time, String
857
885
 
858
886
  # @!attribute retry_delay_seconds
859
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
887
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
888
+ # allows. Default: 7200 (2 hours).
860
889
  #
861
890
  # @return [Integer]
862
891
  required :retry_delay_seconds, Integer
@@ -870,7 +899,7 @@ module Revox
870
899
  #
871
900
  # @param calling_window_start_time [String] Start time for the calling window in the recipient's timezone (or timezone_overr
872
901
  #
873
- # @param retry_delay_seconds [Integer] Delay between retry attempts in seconds. Default: 7200 (2 hours).
902
+ # @param retry_delay_seconds [Integer] Delay between retry attempts in seconds. 0 retries as soon as the calling window
874
903
  end
875
904
  end
876
905
 
@@ -1053,19 +1082,6 @@ module Revox
1053
1082
  end
1054
1083
  end
1055
1084
 
1056
- # The language used for the notification email content. One of "en" or "fr".
1057
- #
1058
- # @see Revox::Models::CallRetrieveResponse::Call::Assistant#email_notification_language
1059
- module EmailNotificationLanguage
1060
- extend Revox::Internal::Type::Enum
1061
-
1062
- EN = :en
1063
- FR = :fr
1064
-
1065
- # @!method self.values
1066
- # @return [Array<Symbol>]
1067
- end
1068
-
1069
1085
  module EmailNotificationOutcome
1070
1086
  extend Revox::Internal::Type::Enum
1071
1087
 
@@ -1073,9 +1089,6 @@ module Revox
1073
1089
  INTERESTED = :interested
1074
1090
  COMPLETED = :completed
1075
1091
  REQUESTED_CALLBACK_LATER = :requested_callback_later
1076
- REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1077
- DO_NOT_CONTACT = :do_not_contact
1078
- AI_AVERSE = :ai_averse
1079
1092
  NONE = :none
1080
1093
 
1081
1094
  # @!method self.values
@@ -1094,8 +1107,8 @@ module Revox
1094
1107
  # @return [Array<Symbol>]
1095
1108
  end
1096
1109
 
1097
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
1098
- # not configured.
1110
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
1111
+ # transfer is not configured.
1099
1112
  #
1100
1113
  # @see Revox::Models::CallRetrieveResponse::Call::Assistant#human_transfer_mode
1101
1114
  module HumanTransferMode
@@ -1386,11 +1399,14 @@ module Revox
1386
1399
 
1387
1400
  # @see Revox::Models::CallRetrieveResponse::Call::Assistant#slack
1388
1401
  class Slack < Revox::Internal::Type::BaseModel
1389
- # @!attribute channel_id
1390
- # The Slack channel ID where the notification will be posted.
1402
+ # @!attribute channels
1403
+ # The Slack channels eligible to receive the notification. When more than one is
1404
+ # configured, the agent prompt may define routing rules to narrow it down per
1405
+ # call; with no such rules every channel here is notified.
1391
1406
  #
1392
- # @return [String]
1393
- required :channel_id, String
1407
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Channel>]
1408
+ required :channels,
1409
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Channel] }
1394
1410
 
1395
1411
  # @!attribute connection_id
1396
1412
  # The Nango connection ID linking the org's Slack workspace to Revox.
@@ -1406,37 +1422,53 @@ module Revox
1406
1422
  required :outcomes,
1407
1423
  -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Outcome] }
1408
1424
 
1409
- # @!attribute channel_name
1410
- # Human-readable Slack channel name, cached for display in the UI.
1411
- #
1412
- # @return [String, nil]
1413
- optional :channel_name, String, nil?: true
1414
-
1415
1425
  # @!attribute template
1416
1426
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1417
1427
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
1418
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
1419
- # prompt_variables and structured_output keys. When null/empty a default template
1420
- # is used.
1428
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
1429
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
1430
+ # null/empty a default template is used.
1421
1431
  #
1422
1432
  # @return [String, nil]
1423
1433
  optional :template, String, nil?: true
1424
1434
 
1425
- # @!method initialize(channel_id:, connection_id:, outcomes:, channel_name: nil, template: nil)
1435
+ # @!method initialize(channels:, connection_id:, outcomes:, template: nil)
1426
1436
  # Some parameter documentations has been truncated, see
1427
1437
  # {Revox::Models::CallRetrieveResponse::Call::Assistant::Slack} for more details.
1428
1438
  #
1429
- # @param channel_id [String] The Slack channel ID where the notification will be posted.
1439
+ # @param channels [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Channel>] The Slack channels eligible to receive the notification. When more than one is c
1430
1440
  #
1431
1441
  # @param connection_id [String] The Nango connection ID linking the org's Slack workspace to Revox.
1432
1442
  #
1433
1443
  # @param outcomes [Array<Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Outcome>] Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1434
1444
  #
1435
- # @param channel_name [String, nil] Human-readable Slack channel name, cached for display in the UI.
1436
- #
1437
1445
  # @param template [String, nil] Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1438
1446
  # {{call\_
1439
1447
 
1448
+ class Channel < Revox::Internal::Type::BaseModel
1449
+ # @!attribute id
1450
+ # The Slack channel ID (e.g. 'C01234567').
1451
+ #
1452
+ # @return [String]
1453
+ required :id, String
1454
+
1455
+ # @!attribute name
1456
+ # Human-readable Slack channel name, cached for display in the UI and given to the
1457
+ # LLM when the agent prompt routes by channel name.
1458
+ #
1459
+ # @return [String, nil]
1460
+ optional :name, String, nil?: true
1461
+
1462
+ # @!method initialize(id:, name: nil)
1463
+ # Some parameter documentations has been truncated, see
1464
+ # {Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Channel} for more
1465
+ # details.
1466
+ #
1467
+ # @param id [String] The Slack channel ID (e.g. 'C01234567').
1468
+ #
1469
+ # @param name [String, nil] Human-readable Slack channel name, cached for display in the UI and given to the
1470
+ end
1471
+
1440
1472
  module Outcome
1441
1473
  extend Revox::Internal::Type::Enum
1442
1474
 
@@ -1444,9 +1476,6 @@ module Revox
1444
1476
  INTERESTED = :interested
1445
1477
  COMPLETED = :completed
1446
1478
  REQUESTED_CALLBACK_LATER = :requested_callback_later
1447
- REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1448
- DO_NOT_CONTACT = :do_not_contact
1449
- AI_AVERSE = :ai_averse
1450
1479
  NONE = :none
1451
1480
 
1452
1481
  # @!method self.values
@@ -1574,6 +1603,22 @@ module Revox
1574
1603
  # @return [Array<Symbol>]
1575
1604
  end
1576
1605
 
1606
+ class TransferDestination < Revox::Internal::Type::BaseModel
1607
+ # @!attribute label
1608
+ #
1609
+ # @return [String]
1610
+ required :label, String
1611
+
1612
+ # @!attribute phone_number
1613
+ #
1614
+ # @return [String]
1615
+ required :phone_number, String
1616
+
1617
+ # @!method initialize(label:, phone_number:)
1618
+ # @param label [String]
1619
+ # @param phone_number [String]
1620
+ end
1621
+
1577
1622
  # @see Revox::Models::CallRetrieveResponse::Call::Assistant#type
1578
1623
  module Type
1579
1624
  extend Revox::Internal::Type::Enum
@@ -1609,7 +1654,7 @@ module Revox
1609
1654
 
1610
1655
  # @!attribute speed
1611
1656
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1612
- # 0.7–1.2. Default is 1.0.
1657
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
1613
1658
  #
1614
1659
  # @return [Float, nil]
1615
1660
  optional :speed, Float
@@ -1643,6 +1688,7 @@ module Revox
1643
1688
 
1644
1689
  CARTESIA = :cartesia
1645
1690
  ELEVENLABS = :elevenlabs
1691
+ GRADIUM = :gradium
1646
1692
 
1647
1693
  # @!method self.values
1648
1694
  # @return [Array<Symbol>]
@@ -1757,9 +1803,6 @@ module Revox
1757
1803
  INTERESTED = :interested
1758
1804
  COMPLETED = :completed
1759
1805
  REQUESTED_CALLBACK_LATER = :requested_callback_later
1760
- REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1761
- DO_NOT_CONTACT = :do_not_contact
1762
- AI_AVERSE = :ai_averse
1763
1806
  NONE = :none
1764
1807
 
1765
1808
  # @!method self.values
@@ -1875,6 +1918,29 @@ module Revox
1875
1918
  # @return [Object]
1876
1919
  required :ended_at, Revox::Internal::Type::Unknown
1877
1920
 
1921
+ # @!attribute handled_by_ai
1922
+ # Whether the AI agent conducted the conversation on this attempt. False for a
1923
+ # silent speed-dial probe (whose agent only detects a human) and for attempts that
1924
+ # were never answered.
1925
+ #
1926
+ # @return [Boolean]
1927
+ required :handled_by_ai, Revox::Internal::Type::Boolean
1928
+
1929
+ # @!attribute handled_by_human
1930
+ # Whether a human operator conducted (part of) this attempt — a jump-in takeover
1931
+ # or a speed-dial operator connection (both stamp human_takeover_at).
1932
+ #
1933
+ # @return [Boolean]
1934
+ required :handled_by_human, Revox::Internal::Type::Boolean
1935
+
1936
+ # @!attribute handled_by_user
1937
+ # The team member responsible for following up on this call.
1938
+ #
1939
+ # @return [Revox::Models::CallRetrieveResponse::Call::CallAttempt::HandledByUser, nil]
1940
+ required :handled_by_user,
1941
+ -> { Revox::Models::CallRetrieveResponse::Call::CallAttempt::HandledByUser },
1942
+ nil?: true
1943
+
1878
1944
  # @!attribute phone_number
1879
1945
  # The phone number that was called. Formatted in E.164 format. Example:
1880
1946
  # +1234567890
@@ -1911,6 +1977,15 @@ module Revox
1911
1977
  # @return [Array<String>, nil]
1912
1978
  optional :assistants_used, Revox::Internal::Type::ArrayOf[String], nil?: true
1913
1979
 
1980
+ # @!attribute email_log
1981
+ # Notification emails sent in connection with the call, ordered oldest first
1982
+ # (from/to addresses, subject, sent time).
1983
+ #
1984
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::CallAttempt::EmailLog>, nil]
1985
+ optional :email_log,
1986
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::CallAttempt::EmailLog] },
1987
+ nil?: true
1988
+
1914
1989
  # @!attribute end_reason
1915
1990
  # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
1916
1991
  # 'voicemail', 'transfer', 'ivr_no_navigate'.
@@ -1948,6 +2023,16 @@ module Revox
1948
2023
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog] },
1949
2024
  nil?: true
1950
2025
 
2026
+ # @!attribute speech_events
2027
+ # Per-turn speech segments (VAD-derived) with timing and pipeline latencies,
2028
+ # ordered by started_speaking_at_ms. Empty for calls recorded before this was
2029
+ # tracked or for realtime sessions that don't emit them.
2030
+ #
2031
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent>, nil]
2032
+ optional :speech_events,
2033
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent] },
2034
+ nil?: true
2035
+
1951
2036
  # @!attribute structured_output
1952
2037
  # The data extracted from the call, using the structured output config from the
1953
2038
  # parent call object.
@@ -1965,7 +2050,7 @@ module Revox
1965
2050
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript] },
1966
2051
  nil?: true
1967
2052
 
1968
- # @!method initialize(id:, answered_at:, dial_error:, ended_at:, phone_number:, recording_url:, result:, started_at:, status:, assistants_used: nil, end_reason: nil, ended_by: nil, post_call_transcript: nil, sms_log: nil, structured_output: nil, transcript: nil)
2053
+ # @!method initialize(id:, answered_at:, dial_error:, ended_at:, handled_by_ai:, handled_by_human:, handled_by_user:, phone_number:, recording_url:, result:, started_at:, status:, assistants_used: nil, email_log: nil, end_reason: nil, ended_by: nil, post_call_transcript: nil, sms_log: nil, speech_events: nil, structured_output: nil, transcript: nil)
1969
2054
  # Some parameter documentations has been truncated, see
1970
2055
  # {Revox::Models::CallRetrieveResponse::Call::CallAttempt} for more details.
1971
2056
  #
@@ -1980,6 +2065,12 @@ module Revox
1980
2065
  #
1981
2066
  # @param ended_at [Object] The time the call ended.
1982
2067
  #
2068
+ # @param handled_by_ai [Boolean] Whether the AI agent conducted the conversation on this attempt. False for a sil
2069
+ #
2070
+ # @param handled_by_human [Boolean] Whether a human operator conducted (part of) this attempt — a jump-in takeover o
2071
+ #
2072
+ # @param handled_by_user [Revox::Models::CallRetrieveResponse::Call::CallAttempt::HandledByUser, nil] The team member responsible for following up on this call.
2073
+ #
1983
2074
  # @param phone_number [String] The phone number that was called. Formatted in E.164 format. Example: +123456789
1984
2075
  #
1985
2076
  # @param recording_url [String, nil] The URL of the audio recording of the call.
@@ -1992,6 +2083,8 @@ module Revox
1992
2083
  #
1993
2084
  # @param assistants_used [Array<String>, nil] Assistant node ids entered during this attempt, in traversal order.
1994
2085
  #
2086
+ # @param email_log [Array<Revox::Models::CallRetrieveResponse::Call::CallAttempt::EmailLog>, nil] Notification emails sent in connection with the call, ordered oldest first (from
2087
+ #
1995
2088
  # @param end_reason [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndReason, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
1996
2089
  #
1997
2090
  # @param ended_by [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndedBy, nil] Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or 'syst
@@ -2000,6 +2093,8 @@ module Revox
2000
2093
  #
2001
2094
  # @param sms_log [Array<Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog>, nil] Automatic SMS sent after the call (voicemail and after-call), ordered oldest fir
2002
2095
  #
2096
+ # @param speech_events [Array<Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent>, nil] Per-turn speech segments (VAD-derived) with timing and pipeline latencies, order
2097
+ #
2003
2098
  # @param structured_output [Hash{Symbol=>Object}, nil] The data extracted from the call, using the structured output config from the pa
2004
2099
  #
2005
2100
  # @param transcript [Array<Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript>, nil] The live transcript of the call, built in real time.
@@ -2023,6 +2118,41 @@ module Revox
2023
2118
  # @return [Array<Symbol>]
2024
2119
  end
2025
2120
 
2121
+ # @see Revox::Models::CallRetrieveResponse::Call::CallAttempt#handled_by_user
2122
+ class HandledByUser < Revox::Internal::Type::BaseModel
2123
+ # @!attribute id
2124
+ # The database user id of the assignee.
2125
+ #
2126
+ # @return [String]
2127
+ required :id, String
2128
+
2129
+ # @!attribute email
2130
+ #
2131
+ # @return [String]
2132
+ required :email, String
2133
+
2134
+ # @!attribute first_name
2135
+ #
2136
+ # @return [String, nil]
2137
+ required :first_name, String, nil?: true
2138
+
2139
+ # @!attribute last_name
2140
+ #
2141
+ # @return [String, nil]
2142
+ required :last_name, String, nil?: true
2143
+
2144
+ # @!method initialize(id:, email:, first_name:, last_name:)
2145
+ # The team member responsible for following up on this call.
2146
+ #
2147
+ # @param id [String] The database user id of the assignee.
2148
+ #
2149
+ # @param email [String]
2150
+ #
2151
+ # @param first_name [String, nil]
2152
+ #
2153
+ # @param last_name [String, nil]
2154
+ end
2155
+
2026
2156
  # @see Revox::Models::CallRetrieveResponse::Call::CallAttempt#result
2027
2157
  module Result
2028
2158
  extend Revox::Internal::Type::Enum
@@ -2053,6 +2183,52 @@ module Revox
2053
2183
  # @return [Array<Symbol>]
2054
2184
  end
2055
2185
 
2186
+ class EmailLog < Revox::Internal::Type::BaseModel
2187
+ # @!attribute id
2188
+ #
2189
+ # @return [String]
2190
+ required :id, String
2191
+
2192
+ # @!attribute created_at
2193
+ # When the email was sent.
2194
+ #
2195
+ # @return [Object]
2196
+ required :created_at, Revox::Internal::Type::Unknown
2197
+
2198
+ # @!attribute from_address
2199
+ #
2200
+ # @return [String]
2201
+ required :from_address, String
2202
+
2203
+ # @!attribute resend_message_id
2204
+ #
2205
+ # @return [String, nil]
2206
+ required :resend_message_id, String, nil?: true
2207
+
2208
+ # @!attribute subject
2209
+ #
2210
+ # @return [String]
2211
+ required :subject, String
2212
+
2213
+ # @!attribute to_emails
2214
+ #
2215
+ # @return [Array<String>]
2216
+ required :to_emails, Revox::Internal::Type::ArrayOf[String]
2217
+
2218
+ # @!method initialize(id:, created_at:, from_address:, resend_message_id:, subject:, to_emails:)
2219
+ # @param id [String]
2220
+ #
2221
+ # @param created_at [Object] When the email was sent.
2222
+ #
2223
+ # @param from_address [String]
2224
+ #
2225
+ # @param resend_message_id [String, nil]
2226
+ #
2227
+ # @param subject [String]
2228
+ #
2229
+ # @param to_emails [Array<String>]
2230
+ end
2231
+
2056
2232
  # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2057
2233
  # 'voicemail', 'transfer', 'ivr_no_navigate'.
2058
2234
  #
@@ -2183,34 +2359,52 @@ module Revox
2183
2359
  # @return [String]
2184
2360
  required :message_body, String
2185
2361
 
2186
- # @!attribute to_phone_number
2362
+ # @!attribute provider
2187
2363
  #
2188
- # @return [String]
2189
- required :to_phone_number, String
2364
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Provider]
2365
+ required :provider, enum: -> { Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Provider }
2190
2366
 
2191
- # @!attribute twilio_message_sid
2367
+ # @!attribute provider_message_id
2192
2368
  #
2193
2369
  # @return [String, nil]
2194
- required :twilio_message_sid, String, nil?: true
2370
+ required :provider_message_id, String, nil?: true
2371
+
2372
+ # @!attribute to_phone_number
2373
+ #
2374
+ # @return [String]
2375
+ required :to_phone_number, String
2195
2376
 
2196
2377
  # @!attribute type
2197
2378
  #
2198
2379
  # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Type]
2199
2380
  required :type, enum: -> { Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Type }
2200
2381
 
2201
- # @!method initialize(id:, created_at:, message_body:, to_phone_number:, twilio_message_sid:, type:)
2382
+ # @!method initialize(id:, created_at:, message_body:, provider:, provider_message_id:, to_phone_number:, type:)
2202
2383
  # @param id [String]
2203
2384
  #
2204
2385
  # @param created_at [Object] When the SMS was sent.
2205
2386
  #
2206
2387
  # @param message_body [String]
2207
2388
  #
2208
- # @param to_phone_number [String]
2389
+ # @param provider [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Provider]
2209
2390
  #
2210
- # @param twilio_message_sid [String, nil]
2391
+ # @param provider_message_id [String, nil]
2392
+ #
2393
+ # @param to_phone_number [String]
2211
2394
  #
2212
2395
  # @param type [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Type]
2213
2396
 
2397
+ # @see Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog#provider
2398
+ module Provider
2399
+ extend Revox::Internal::Type::Enum
2400
+
2401
+ TWILIO = :twilio
2402
+ VONAGE = :vonage
2403
+
2404
+ # @!method self.values
2405
+ # @return [Array<Symbol>]
2406
+ end
2407
+
2214
2408
  # @see Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog#type
2215
2409
  module Type
2216
2410
  extend Revox::Internal::Type::Enum
@@ -2224,6 +2418,126 @@ module Revox
2224
2418
  end
2225
2419
  end
2226
2420
 
2421
+ class SpeechEvent < Revox::Internal::Type::BaseModel
2422
+ # @!attribute id
2423
+ #
2424
+ # @return [String]
2425
+ required :id, String
2426
+
2427
+ # @!attribute is_real_turn
2428
+ # False when the segment was flagged as noise/blip rather than a meaningful turn.
2429
+ #
2430
+ # @return [Boolean]
2431
+ required :is_real_turn, Revox::Internal::Type::Boolean
2432
+
2433
+ # @!attribute llm_system_prompt
2434
+ # Agent-only: despite the name, the whole prompt the LLM was given for this turn —
2435
+ # system instructions plus conversation history — as JSON.
2436
+ #
2437
+ # @return [String, nil]
2438
+ required :llm_system_prompt, String, nil?: true
2439
+
2440
+ # @!attribute llm_ttft_ms
2441
+ # Agent-only: LLM time-to-first-token for the reply, in ms.
2442
+ #
2443
+ # @return [Float, nil]
2444
+ required :llm_ttft_ms, Float, nil?: true
2445
+
2446
+ # @!attribute llm_winner_model
2447
+ # Agent-only: the model that produced the reply — the winning leg when the LLM is
2448
+ # a race, which is also the model `llm_ttft_ms` describes.
2449
+ #
2450
+ # @return [String, nil]
2451
+ required :llm_winner_model, String, nil?: true
2452
+
2453
+ # @!attribute speaker
2454
+ # Who was speaking during this segment.
2455
+ #
2456
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent::Speaker]
2457
+ required :speaker,
2458
+ enum: -> { Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent::Speaker }
2459
+
2460
+ # @!attribute started_speaking_at_ms
2461
+ # Milliseconds since session start when speech began.
2462
+ #
2463
+ # @return [Float]
2464
+ required :started_speaking_at_ms, Float
2465
+
2466
+ # @!attribute stopped_speaking_at_ms
2467
+ # Milliseconds since session start when speech ended. Null when the session ended
2468
+ # before the turn closed.
2469
+ #
2470
+ # @return [Float, nil]
2471
+ required :stopped_speaking_at_ms, Float, nil?: true
2472
+
2473
+ # @!attribute stt_transcription_delay_ms
2474
+ # User-only: time from end-of-speech to final transcript, in ms.
2475
+ #
2476
+ # @return [Float, nil]
2477
+ required :stt_transcription_delay_ms, Float, nil?: true
2478
+
2479
+ # @!attribute transcript
2480
+ # Recognized text for this segment, when available.
2481
+ #
2482
+ # @return [String, nil]
2483
+ required :transcript, String, nil?: true
2484
+
2485
+ # @!attribute tts_ttfb_ms
2486
+ # Agent-only: TTS time-to-first-audio-byte for the reply, in ms.
2487
+ #
2488
+ # @return [Float, nil]
2489
+ required :tts_ttfb_ms, Float, nil?: true
2490
+
2491
+ # @!attribute was_cut
2492
+ # Agent-only: true when the agent's audio was interrupted (real or auto-resumed).
2493
+ # Null on user segments.
2494
+ #
2495
+ # @return [Boolean, nil]
2496
+ required :was_cut, Revox::Internal::Type::Boolean, nil?: true
2497
+
2498
+ # @!method initialize(id:, is_real_turn:, llm_system_prompt:, llm_ttft_ms:, llm_winner_model:, speaker:, started_speaking_at_ms:, stopped_speaking_at_ms:, stt_transcription_delay_ms:, transcript:, tts_ttfb_ms:, was_cut:)
2499
+ # Some parameter documentations has been truncated, see
2500
+ # {Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent} for more
2501
+ # details.
2502
+ #
2503
+ # @param id [String]
2504
+ #
2505
+ # @param is_real_turn [Boolean] False when the segment was flagged as noise/blip rather than a meaningful turn.
2506
+ #
2507
+ # @param llm_system_prompt [String, nil] Agent-only: despite the name, the whole prompt the LLM was given for this turn —
2508
+ #
2509
+ # @param llm_ttft_ms [Float, nil] Agent-only: LLM time-to-first-token for the reply, in ms.
2510
+ #
2511
+ # @param llm_winner_model [String, nil] Agent-only: the model that produced the reply — the winning leg when the LLM is
2512
+ #
2513
+ # @param speaker [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent::Speaker] Who was speaking during this segment.
2514
+ #
2515
+ # @param started_speaking_at_ms [Float] Milliseconds since session start when speech began.
2516
+ #
2517
+ # @param stopped_speaking_at_ms [Float, nil] Milliseconds since session start when speech ended. Null when the session ended
2518
+ #
2519
+ # @param stt_transcription_delay_ms [Float, nil] User-only: time from end-of-speech to final transcript, in ms.
2520
+ #
2521
+ # @param transcript [String, nil] Recognized text for this segment, when available.
2522
+ #
2523
+ # @param tts_ttfb_ms [Float, nil] Agent-only: TTS time-to-first-audio-byte for the reply, in ms.
2524
+ #
2525
+ # @param was_cut [Boolean, nil] Agent-only: true when the agent's audio was interrupted (real or auto-resumed).
2526
+
2527
+ # Who was speaking during this segment.
2528
+ #
2529
+ # @see Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent#speaker
2530
+ module Speaker
2531
+ extend Revox::Internal::Type::Enum
2532
+
2533
+ USER = :user
2534
+ AGENT = :agent
2535
+
2536
+ # @!method self.values
2537
+ # @return [Array<Symbol>]
2538
+ end
2539
+ end
2540
+
2227
2541
  class Transcript < Revox::Internal::Type::BaseModel
2228
2542
  # @!attribute content
2229
2543
  #
@@ -2383,7 +2697,8 @@ module Revox
2383
2697
  required :calling_window_start_time, String
2384
2698
 
2385
2699
  # @!attribute retry_delay_seconds
2386
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
2700
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
2701
+ # allows. Default: 7200 (2 hours).
2387
2702
  #
2388
2703
  # @return [Integer]
2389
2704
  required :retry_delay_seconds, Integer
@@ -2397,7 +2712,7 @@ module Revox
2397
2712
  #
2398
2713
  # @param calling_window_start_time [String] Start time for the calling window in the recipient's timezone (or timezone_overr
2399
2714
  #
2400
- # @param retry_delay_seconds [Integer] Delay between retry attempts in seconds. Default: 7200 (2 hours).
2715
+ # @param retry_delay_seconds [Integer] Delay between retry attempts in seconds. 0 retries as soon as the calling window
2401
2716
  end
2402
2717
  end
2403
2718
 
@@ -2435,18 +2750,24 @@ module Revox
2435
2750
  # @return [String, nil]
2436
2751
  required :first_name, String, nil?: true
2437
2752
 
2753
+ # @!attribute job_title
2754
+ #
2755
+ # @return [String, nil]
2756
+ required :job_title, String, nil?: true
2757
+
2438
2758
  # @!attribute last_name
2439
2759
  #
2440
2760
  # @return [String, nil]
2441
2761
  required :last_name, String, nil?: true
2442
2762
 
2443
- # @!method initialize(company:, email:, first_name:, last_name:)
2763
+ # @!method initialize(company:, email:, first_name:, job_title:, last_name:)
2444
2764
  # Magic contact variables (prospect identity) extracted from the call's input data
2445
2765
  # and transcript.
2446
2766
  #
2447
2767
  # @param company [String, nil]
2448
2768
  # @param email [String, nil]
2449
2769
  # @param first_name [String, nil]
2770
+ # @param job_title [String, nil]
2450
2771
  # @param last_name [String, nil]
2451
2772
  end
2452
2773
 
@@ -2491,6 +2812,29 @@ module Revox
2491
2812
  # @return [Object]
2492
2813
  required :ended_at, Revox::Internal::Type::Unknown
2493
2814
 
2815
+ # @!attribute handled_by_ai
2816
+ # Whether the AI agent conducted the conversation on this attempt. False for a
2817
+ # silent speed-dial probe (whose agent only detects a human) and for attempts that
2818
+ # were never answered.
2819
+ #
2820
+ # @return [Boolean]
2821
+ required :handled_by_ai, Revox::Internal::Type::Boolean
2822
+
2823
+ # @!attribute handled_by_human
2824
+ # Whether a human operator conducted (part of) this attempt — a jump-in takeover
2825
+ # or a speed-dial operator connection (both stamp human_takeover_at).
2826
+ #
2827
+ # @return [Boolean]
2828
+ required :handled_by_human, Revox::Internal::Type::Boolean
2829
+
2830
+ # @!attribute handled_by_user
2831
+ # The team member responsible for following up on this call.
2832
+ #
2833
+ # @return [Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::HandledByUser, nil]
2834
+ required :handled_by_user,
2835
+ -> { Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::HandledByUser },
2836
+ nil?: true
2837
+
2494
2838
  # @!attribute phone_number
2495
2839
  # The phone number that was called. Formatted in E.164 format. Example:
2496
2840
  # +1234567890
@@ -2529,6 +2873,15 @@ module Revox
2529
2873
  # @return [Array<String>, nil]
2530
2874
  optional :assistants_used, Revox::Internal::Type::ArrayOf[String], nil?: true
2531
2875
 
2876
+ # @!attribute email_log
2877
+ # Notification emails sent in connection with the call, ordered oldest first
2878
+ # (from/to addresses, subject, sent time).
2879
+ #
2880
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EmailLog>, nil]
2881
+ optional :email_log,
2882
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EmailLog] },
2883
+ nil?: true
2884
+
2532
2885
  # @!attribute end_reason
2533
2886
  # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2534
2887
  # 'voicemail', 'transfer', 'ivr_no_navigate'.
@@ -2566,6 +2919,16 @@ module Revox
2566
2919
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog] },
2567
2920
  nil?: true
2568
2921
 
2922
+ # @!attribute speech_events
2923
+ # Per-turn speech segments (VAD-derived) with timing and pipeline latencies,
2924
+ # ordered by started_speaking_at_ms. Empty for calls recorded before this was
2925
+ # tracked or for realtime sessions that don't emit them.
2926
+ #
2927
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent>, nil]
2928
+ optional :speech_events,
2929
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent] },
2930
+ nil?: true
2931
+
2569
2932
  # @!attribute structured_output
2570
2933
  # The data extracted from the call, using the structured output config from the
2571
2934
  # parent call object.
@@ -2583,7 +2946,7 @@ module Revox
2583
2946
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript] },
2584
2947
  nil?: true
2585
2948
 
2586
- # @!method initialize(id:, answered_at:, dial_error:, ended_at:, phone_number:, recording_url:, result:, started_at:, status:, assistants_used: nil, end_reason: nil, ended_by: nil, post_call_transcript: nil, sms_log: nil, structured_output: nil, transcript: nil)
2949
+ # @!method initialize(id:, answered_at:, dial_error:, ended_at:, handled_by_ai:, handled_by_human:, handled_by_user:, phone_number:, recording_url:, result:, started_at:, status:, assistants_used: nil, email_log: nil, end_reason: nil, ended_by: nil, post_call_transcript: nil, sms_log: nil, speech_events: nil, structured_output: nil, transcript: nil)
2587
2950
  # Some parameter documentations has been truncated, see
2588
2951
  # {Revox::Models::CallRetrieveResponse::Call::LastCallAttempt} for more details.
2589
2952
  #
@@ -2598,6 +2961,12 @@ module Revox
2598
2961
  #
2599
2962
  # @param ended_at [Object] The time the call ended.
2600
2963
  #
2964
+ # @param handled_by_ai [Boolean] Whether the AI agent conducted the conversation on this attempt. False for a sil
2965
+ #
2966
+ # @param handled_by_human [Boolean] Whether a human operator conducted (part of) this attempt — a jump-in takeover o
2967
+ #
2968
+ # @param handled_by_user [Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::HandledByUser, nil] The team member responsible for following up on this call.
2969
+ #
2601
2970
  # @param phone_number [String] The phone number that was called. Formatted in E.164 format. Example: +123456789
2602
2971
  #
2603
2972
  # @param recording_url [String, nil] The URL of the audio recording of the call.
@@ -2610,6 +2979,8 @@ module Revox
2610
2979
  #
2611
2980
  # @param assistants_used [Array<String>, nil] Assistant node ids entered during this attempt, in traversal order.
2612
2981
  #
2982
+ # @param email_log [Array<Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EmailLog>, nil] Notification emails sent in connection with the call, ordered oldest first (from
2983
+ #
2613
2984
  # @param end_reason [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndReason, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
2614
2985
  #
2615
2986
  # @param ended_by [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndedBy, nil] Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or 'syst
@@ -2618,6 +2989,8 @@ module Revox
2618
2989
  #
2619
2990
  # @param sms_log [Array<Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog>, nil] Automatic SMS sent after the call (voicemail and after-call), ordered oldest fir
2620
2991
  #
2992
+ # @param speech_events [Array<Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent>, nil] Per-turn speech segments (VAD-derived) with timing and pipeline latencies, order
2993
+ #
2621
2994
  # @param structured_output [Hash{Symbol=>Object}, nil] The data extracted from the call, using the structured output config from the pa
2622
2995
  #
2623
2996
  # @param transcript [Array<Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript>, nil] The live transcript of the call, built in real time.
@@ -2641,6 +3014,41 @@ module Revox
2641
3014
  # @return [Array<Symbol>]
2642
3015
  end
2643
3016
 
3017
+ # @see Revox::Models::CallRetrieveResponse::Call::LastCallAttempt#handled_by_user
3018
+ class HandledByUser < Revox::Internal::Type::BaseModel
3019
+ # @!attribute id
3020
+ # The database user id of the assignee.
3021
+ #
3022
+ # @return [String]
3023
+ required :id, String
3024
+
3025
+ # @!attribute email
3026
+ #
3027
+ # @return [String]
3028
+ required :email, String
3029
+
3030
+ # @!attribute first_name
3031
+ #
3032
+ # @return [String, nil]
3033
+ required :first_name, String, nil?: true
3034
+
3035
+ # @!attribute last_name
3036
+ #
3037
+ # @return [String, nil]
3038
+ required :last_name, String, nil?: true
3039
+
3040
+ # @!method initialize(id:, email:, first_name:, last_name:)
3041
+ # The team member responsible for following up on this call.
3042
+ #
3043
+ # @param id [String] The database user id of the assignee.
3044
+ #
3045
+ # @param email [String]
3046
+ #
3047
+ # @param first_name [String, nil]
3048
+ #
3049
+ # @param last_name [String, nil]
3050
+ end
3051
+
2644
3052
  # @see Revox::Models::CallRetrieveResponse::Call::LastCallAttempt#result
2645
3053
  module Result
2646
3054
  extend Revox::Internal::Type::Enum
@@ -2671,6 +3079,52 @@ module Revox
2671
3079
  # @return [Array<Symbol>]
2672
3080
  end
2673
3081
 
3082
+ class EmailLog < Revox::Internal::Type::BaseModel
3083
+ # @!attribute id
3084
+ #
3085
+ # @return [String]
3086
+ required :id, String
3087
+
3088
+ # @!attribute created_at
3089
+ # When the email was sent.
3090
+ #
3091
+ # @return [Object]
3092
+ required :created_at, Revox::Internal::Type::Unknown
3093
+
3094
+ # @!attribute from_address
3095
+ #
3096
+ # @return [String]
3097
+ required :from_address, String
3098
+
3099
+ # @!attribute resend_message_id
3100
+ #
3101
+ # @return [String, nil]
3102
+ required :resend_message_id, String, nil?: true
3103
+
3104
+ # @!attribute subject
3105
+ #
3106
+ # @return [String]
3107
+ required :subject, String
3108
+
3109
+ # @!attribute to_emails
3110
+ #
3111
+ # @return [Array<String>]
3112
+ required :to_emails, Revox::Internal::Type::ArrayOf[String]
3113
+
3114
+ # @!method initialize(id:, created_at:, from_address:, resend_message_id:, subject:, to_emails:)
3115
+ # @param id [String]
3116
+ #
3117
+ # @param created_at [Object] When the email was sent.
3118
+ #
3119
+ # @param from_address [String]
3120
+ #
3121
+ # @param resend_message_id [String, nil]
3122
+ #
3123
+ # @param subject [String]
3124
+ #
3125
+ # @param to_emails [Array<String>]
3126
+ end
3127
+
2674
3128
  # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2675
3129
  # 'voicemail', 'transfer', 'ivr_no_navigate'.
2676
3130
  #
@@ -2801,34 +3255,53 @@ module Revox
2801
3255
  # @return [String]
2802
3256
  required :message_body, String
2803
3257
 
2804
- # @!attribute to_phone_number
3258
+ # @!attribute provider
2805
3259
  #
2806
- # @return [String]
2807
- required :to_phone_number, String
3260
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Provider]
3261
+ required :provider,
3262
+ enum: -> { Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Provider }
2808
3263
 
2809
- # @!attribute twilio_message_sid
3264
+ # @!attribute provider_message_id
2810
3265
  #
2811
3266
  # @return [String, nil]
2812
- required :twilio_message_sid, String, nil?: true
3267
+ required :provider_message_id, String, nil?: true
3268
+
3269
+ # @!attribute to_phone_number
3270
+ #
3271
+ # @return [String]
3272
+ required :to_phone_number, String
2813
3273
 
2814
3274
  # @!attribute type
2815
3275
  #
2816
3276
  # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Type]
2817
3277
  required :type, enum: -> { Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Type }
2818
3278
 
2819
- # @!method initialize(id:, created_at:, message_body:, to_phone_number:, twilio_message_sid:, type:)
3279
+ # @!method initialize(id:, created_at:, message_body:, provider:, provider_message_id:, to_phone_number:, type:)
2820
3280
  # @param id [String]
2821
3281
  #
2822
3282
  # @param created_at [Object] When the SMS was sent.
2823
3283
  #
2824
3284
  # @param message_body [String]
2825
3285
  #
2826
- # @param to_phone_number [String]
3286
+ # @param provider [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Provider]
3287
+ #
3288
+ # @param provider_message_id [String, nil]
2827
3289
  #
2828
- # @param twilio_message_sid [String, nil]
3290
+ # @param to_phone_number [String]
2829
3291
  #
2830
3292
  # @param type [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Type]
2831
3293
 
3294
+ # @see Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog#provider
3295
+ module Provider
3296
+ extend Revox::Internal::Type::Enum
3297
+
3298
+ TWILIO = :twilio
3299
+ VONAGE = :vonage
3300
+
3301
+ # @!method self.values
3302
+ # @return [Array<Symbol>]
3303
+ end
3304
+
2832
3305
  # @see Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog#type
2833
3306
  module Type
2834
3307
  extend Revox::Internal::Type::Enum
@@ -2842,6 +3315,126 @@ module Revox
2842
3315
  end
2843
3316
  end
2844
3317
 
3318
+ class SpeechEvent < Revox::Internal::Type::BaseModel
3319
+ # @!attribute id
3320
+ #
3321
+ # @return [String]
3322
+ required :id, String
3323
+
3324
+ # @!attribute is_real_turn
3325
+ # False when the segment was flagged as noise/blip rather than a meaningful turn.
3326
+ #
3327
+ # @return [Boolean]
3328
+ required :is_real_turn, Revox::Internal::Type::Boolean
3329
+
3330
+ # @!attribute llm_system_prompt
3331
+ # Agent-only: despite the name, the whole prompt the LLM was given for this turn —
3332
+ # system instructions plus conversation history — as JSON.
3333
+ #
3334
+ # @return [String, nil]
3335
+ required :llm_system_prompt, String, nil?: true
3336
+
3337
+ # @!attribute llm_ttft_ms
3338
+ # Agent-only: LLM time-to-first-token for the reply, in ms.
3339
+ #
3340
+ # @return [Float, nil]
3341
+ required :llm_ttft_ms, Float, nil?: true
3342
+
3343
+ # @!attribute llm_winner_model
3344
+ # Agent-only: the model that produced the reply — the winning leg when the LLM is
3345
+ # a race, which is also the model `llm_ttft_ms` describes.
3346
+ #
3347
+ # @return [String, nil]
3348
+ required :llm_winner_model, String, nil?: true
3349
+
3350
+ # @!attribute speaker
3351
+ # Who was speaking during this segment.
3352
+ #
3353
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent::Speaker]
3354
+ required :speaker,
3355
+ enum: -> { Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent::Speaker }
3356
+
3357
+ # @!attribute started_speaking_at_ms
3358
+ # Milliseconds since session start when speech began.
3359
+ #
3360
+ # @return [Float]
3361
+ required :started_speaking_at_ms, Float
3362
+
3363
+ # @!attribute stopped_speaking_at_ms
3364
+ # Milliseconds since session start when speech ended. Null when the session ended
3365
+ # before the turn closed.
3366
+ #
3367
+ # @return [Float, nil]
3368
+ required :stopped_speaking_at_ms, Float, nil?: true
3369
+
3370
+ # @!attribute stt_transcription_delay_ms
3371
+ # User-only: time from end-of-speech to final transcript, in ms.
3372
+ #
3373
+ # @return [Float, nil]
3374
+ required :stt_transcription_delay_ms, Float, nil?: true
3375
+
3376
+ # @!attribute transcript
3377
+ # Recognized text for this segment, when available.
3378
+ #
3379
+ # @return [String, nil]
3380
+ required :transcript, String, nil?: true
3381
+
3382
+ # @!attribute tts_ttfb_ms
3383
+ # Agent-only: TTS time-to-first-audio-byte for the reply, in ms.
3384
+ #
3385
+ # @return [Float, nil]
3386
+ required :tts_ttfb_ms, Float, nil?: true
3387
+
3388
+ # @!attribute was_cut
3389
+ # Agent-only: true when the agent's audio was interrupted (real or auto-resumed).
3390
+ # Null on user segments.
3391
+ #
3392
+ # @return [Boolean, nil]
3393
+ required :was_cut, Revox::Internal::Type::Boolean, nil?: true
3394
+
3395
+ # @!method initialize(id:, is_real_turn:, llm_system_prompt:, llm_ttft_ms:, llm_winner_model:, speaker:, started_speaking_at_ms:, stopped_speaking_at_ms:, stt_transcription_delay_ms:, transcript:, tts_ttfb_ms:, was_cut:)
3396
+ # Some parameter documentations has been truncated, see
3397
+ # {Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent} for
3398
+ # more details.
3399
+ #
3400
+ # @param id [String]
3401
+ #
3402
+ # @param is_real_turn [Boolean] False when the segment was flagged as noise/blip rather than a meaningful turn.
3403
+ #
3404
+ # @param llm_system_prompt [String, nil] Agent-only: despite the name, the whole prompt the LLM was given for this turn —
3405
+ #
3406
+ # @param llm_ttft_ms [Float, nil] Agent-only: LLM time-to-first-token for the reply, in ms.
3407
+ #
3408
+ # @param llm_winner_model [String, nil] Agent-only: the model that produced the reply — the winning leg when the LLM is
3409
+ #
3410
+ # @param speaker [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent::Speaker] Who was speaking during this segment.
3411
+ #
3412
+ # @param started_speaking_at_ms [Float] Milliseconds since session start when speech began.
3413
+ #
3414
+ # @param stopped_speaking_at_ms [Float, nil] Milliseconds since session start when speech ended. Null when the session ended
3415
+ #
3416
+ # @param stt_transcription_delay_ms [Float, nil] User-only: time from end-of-speech to final transcript, in ms.
3417
+ #
3418
+ # @param transcript [String, nil] Recognized text for this segment, when available.
3419
+ #
3420
+ # @param tts_ttfb_ms [Float, nil] Agent-only: TTS time-to-first-audio-byte for the reply, in ms.
3421
+ #
3422
+ # @param was_cut [Boolean, nil] Agent-only: true when the agent's audio was interrupted (real or auto-resumed).
3423
+
3424
+ # Who was speaking during this segment.
3425
+ #
3426
+ # @see Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent#speaker
3427
+ module Speaker
3428
+ extend Revox::Internal::Type::Enum
3429
+
3430
+ USER = :user
3431
+ AGENT = :agent
3432
+
3433
+ # @!method self.values
3434
+ # @return [Array<Symbol>]
3435
+ end
3436
+ end
3437
+
2845
3438
  class Transcript < Revox::Internal::Type::BaseModel
2846
3439
  # @!attribute content
2847
3440
  #
@@ -3076,6 +3669,7 @@ module Revox
3076
3669
  QUEUED_FOR_CALLING = :queued_for_calling
3077
3670
  CALLING = :calling
3078
3671
  POST_PROCESSING = :post_processing
3672
+ NOT_LAUNCHED = :not_launched
3079
3673
  SCHEDULED = :scheduled
3080
3674
  PAUSED = :paused
3081
3675
  COMPLETED = :completed
@@ -3096,9 +3690,6 @@ module Revox
3096
3690
  INTERESTED = :interested
3097
3691
  COMPLETED = :completed
3098
3692
  REQUESTED_CALLBACK_LATER = :requested_callback_later
3099
- REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
3100
- DO_NOT_CONTACT = :do_not_contact
3101
- AI_AVERSE = :ai_averse
3102
3693
 
3103
3694
  # @!method self.values
3104
3695
  # @return [Array<Symbol>]