revox 0.1.0 → 0.3.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 (224) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +81 -0
  3. data/README.md +39 -14
  4. data/lib/revox/client.rb +23 -1
  5. data/lib/revox/internal/transport/base_client.rb +5 -0
  6. data/lib/revox/internal/type/base_model.rb +3 -3
  7. data/lib/revox/internal/util.rb +22 -7
  8. data/lib/revox/models/assistant_clone_params.rb +20 -0
  9. data/lib/revox/models/assistant_clone_response.rb +1594 -0
  10. data/lib/revox/models/assistant_create_params.rb +1038 -13
  11. data/lib/revox/models/assistant_create_response.rb +1071 -11
  12. data/lib/revox/models/assistant_list_response.rb +1070 -11
  13. data/lib/revox/models/assistant_retrieve_response.rb +1066 -11
  14. data/lib/revox/models/assistant_update_params.rb +1038 -13
  15. data/lib/revox/models/assistant_update_response.rb +1097 -12
  16. data/lib/revox/models/auth_status_retrieve_params.rb +14 -0
  17. data/lib/revox/models/auth_status_retrieve_response.rb +17 -0
  18. data/lib/revox/models/call_cancel_params.rb +20 -0
  19. data/lib/revox/models/call_cancel_response.rb +16 -0
  20. data/lib/revox/models/call_create_params.rb +1065 -13
  21. data/lib/revox/models/call_create_response.rb +1820 -98
  22. data/lib/revox/models/call_export_params.rb +205 -0
  23. data/lib/revox/models/call_export_response.rb +22 -0
  24. data/lib/revox/models/call_pause_params.rb +20 -0
  25. data/lib/revox/models/call_pause_response.rb +16 -0
  26. data/lib/revox/models/call_phone_history_params.rb +14 -0
  27. data/lib/revox/models/call_phone_history_response.rb +98 -0
  28. data/lib/revox/models/call_resume_params.rb +20 -0
  29. data/lib/revox/models/call_resume_response.rb +16 -0
  30. data/lib/revox/models/call_retrieve_response.rb +1822 -98
  31. data/lib/revox/models/call_search_params.rb +171 -0
  32. data/lib/revox/models/call_search_response.rb +3114 -0
  33. data/lib/revox/models/campaign_create_params.rb +67 -2
  34. data/lib/revox/models/campaign_create_response.rb +1314 -59
  35. data/lib/revox/models/campaign_get_rows_params.rb +1 -46
  36. data/lib/revox/models/campaign_get_rows_response.rb +1833 -115
  37. data/lib/revox/models/campaign_launch_params.rb +20 -0
  38. data/lib/revox/models/campaign_launch_response.rb +2030 -0
  39. data/lib/revox/models/campaign_list_response.rb +1312 -59
  40. data/lib/revox/models/campaign_pause_params.rb +20 -0
  41. data/lib/revox/models/campaign_pause_response.rb +16 -0
  42. data/lib/revox/models/campaign_resume_params.rb +20 -0
  43. data/lib/revox/models/campaign_resume_response.rb +16 -0
  44. data/lib/revox/models/campaign_retrieve_response.rb +1312 -56
  45. data/lib/revox/models/campaign_statistics_params.rb +20 -0
  46. data/lib/revox/models/campaign_statistics_response.rb +486 -0
  47. data/lib/revox/models/campaign_update_params.rb +234 -0
  48. data/lib/revox/models/campaign_update_response.rb +2030 -0
  49. data/lib/revox/models/phone_number_delete_params.rb +20 -0
  50. data/lib/revox/models/phone_number_delete_response.rb +16 -0
  51. data/lib/revox/models/phone_number_list_params.rb +14 -0
  52. data/lib/revox/models/phone_number_list_response.rb +1777 -0
  53. data/lib/revox/models/phone_number_update_params.rb +32 -0
  54. data/lib/revox/models/phone_number_update_response.rb +1777 -0
  55. data/lib/revox/models/user_retrieve_params.rb +14 -0
  56. data/lib/revox/models/user_retrieve_response.rb +99 -0
  57. data/lib/revox/models/voice_clone_params.rb +78 -0
  58. data/lib/revox/models/voice_clone_response.rb +40 -0
  59. data/lib/revox/models/voice_delete_params.rb +20 -0
  60. data/lib/revox/models/voice_delete_response.rb +16 -0
  61. data/lib/revox/models/voice_list_response.rb +55 -1
  62. data/lib/revox/models/voice_preview_params.rb +49 -1
  63. data/lib/revox/models.rb +36 -2
  64. data/lib/revox/resources/assistants.rb +137 -8
  65. data/lib/revox/resources/auth_status.rb +32 -0
  66. data/lib/revox/resources/call.rb +131 -15
  67. data/lib/revox/resources/campaigns.rb +143 -17
  68. data/lib/revox/resources/phone_numbers.rb +74 -0
  69. data/lib/revox/resources/users.rb +17 -3
  70. data/lib/revox/resources/voices.rb +66 -10
  71. data/lib/revox/version.rb +1 -1
  72. data/lib/revox.rb +40 -7
  73. data/rbi/revox/client.rbi +6 -0
  74. data/rbi/revox/internal/util.rbi +8 -0
  75. data/rbi/revox/models/assistant_clone_params.rbi +33 -0
  76. data/rbi/revox/models/assistant_clone_response.rbi +3341 -0
  77. data/rbi/revox/models/assistant_create_params.rbi +2138 -103
  78. data/rbi/revox/models/assistant_create_response.rbi +2454 -199
  79. data/rbi/revox/models/assistant_list_response.rbi +2448 -195
  80. data/rbi/revox/models/assistant_retrieve_response.rbi +2401 -210
  81. data/rbi/revox/models/assistant_update_params.rbi +2138 -103
  82. data/rbi/revox/models/assistant_update_response.rbi +2504 -198
  83. data/rbi/revox/models/auth_status_retrieve_params.rbi +27 -0
  84. data/rbi/revox/models/auth_status_retrieve_response.rbi +30 -0
  85. data/rbi/revox/models/call_cancel_params.rbi +33 -0
  86. data/rbi/revox/models/call_cancel_response.rbi +23 -0
  87. data/rbi/revox/models/call_create_params.rbi +2382 -225
  88. data/rbi/revox/models/call_create_response.rbi +4116 -384
  89. data/rbi/revox/models/call_export_params.rbi +456 -0
  90. data/rbi/revox/models/call_export_response.rbi +26 -0
  91. data/rbi/revox/models/call_pause_params.rbi +31 -0
  92. data/rbi/revox/models/call_pause_response.rbi +23 -0
  93. data/rbi/revox/models/call_phone_history_params.rbi +27 -0
  94. data/rbi/revox/models/call_phone_history_response.rbi +224 -0
  95. data/rbi/revox/models/call_resume_params.rbi +33 -0
  96. data/rbi/revox/models/call_resume_response.rbi +23 -0
  97. data/rbi/revox/models/call_retrieve_response.rbi +4133 -399
  98. data/rbi/revox/models/call_search_params.rbi +288 -0
  99. data/rbi/revox/models/call_search_response.rbi +6593 -0
  100. data/rbi/revox/models/campaign_create_params.rbi +136 -0
  101. data/rbi/revox/models/campaign_create_response.rbi +2911 -231
  102. data/rbi/revox/models/campaign_get_rows_params.rbi +2 -82
  103. data/rbi/revox/models/campaign_get_rows_response.rbi +4146 -409
  104. data/rbi/revox/models/campaign_launch_params.rbi +33 -0
  105. data/rbi/revox/models/campaign_launch_response.rbi +4170 -0
  106. data/rbi/revox/models/campaign_list_response.rbi +2904 -230
  107. data/rbi/revox/models/campaign_pause_params.rbi +33 -0
  108. data/rbi/revox/models/campaign_pause_response.rbi +23 -0
  109. data/rbi/revox/models/campaign_resume_params.rbi +33 -0
  110. data/rbi/revox/models/campaign_resume_response.rbi +23 -0
  111. data/rbi/revox/models/campaign_retrieve_response.rbi +2911 -231
  112. data/rbi/revox/models/campaign_statistics_params.rbi +33 -0
  113. data/rbi/revox/models/campaign_statistics_response.rbi +1011 -0
  114. data/rbi/revox/models/campaign_update_params.rbi +431 -0
  115. data/rbi/revox/models/campaign_update_response.rbi +4170 -0
  116. data/rbi/revox/models/phone_number_delete_params.rbi +33 -0
  117. data/rbi/revox/models/phone_number_delete_response.rbi +26 -0
  118. data/rbi/revox/models/phone_number_list_params.rbi +27 -0
  119. data/rbi/revox/models/phone_number_list_response.rbi +3680 -0
  120. data/rbi/revox/models/phone_number_update_params.rbi +53 -0
  121. data/rbi/revox/models/phone_number_update_response.rbi +3683 -0
  122. data/rbi/revox/models/user_retrieve_params.rbi +27 -0
  123. data/rbi/revox/models/user_retrieve_response.rbi +140 -0
  124. data/rbi/revox/models/voice_clone_params.rbi +141 -0
  125. data/rbi/revox/models/voice_clone_response.rbi +53 -0
  126. data/rbi/revox/models/voice_delete_params.rbi +33 -0
  127. data/rbi/revox/models/voice_delete_response.rbi +23 -0
  128. data/rbi/revox/models/voice_list_response.rbi +105 -3
  129. data/rbi/revox/models/voice_preview_params.rbi +69 -0
  130. data/rbi/revox/models.rbi +36 -2
  131. data/rbi/revox/resources/assistants.rbi +296 -8
  132. data/rbi/revox/resources/auth_status.rbi +21 -0
  133. data/rbi/revox/resources/call.rbi +92 -6
  134. data/rbi/revox/resources/campaigns.rbi +106 -19
  135. data/rbi/revox/resources/phone_numbers.rbi +43 -0
  136. data/rbi/revox/resources/users.rbi +8 -2
  137. data/rbi/revox/resources/voices.rbi +56 -9
  138. data/sig/revox/client.rbs +4 -0
  139. data/sig/revox/internal/util.rbs +4 -0
  140. data/sig/revox/models/assistant_clone_params.rbs +20 -0
  141. data/sig/revox/models/assistant_clone_response.rbs +1318 -0
  142. data/sig/revox/models/assistant_create_params.rbs +844 -11
  143. data/sig/revox/models/assistant_create_response.rbs +860 -3
  144. data/sig/revox/models/assistant_list_response.rbs +860 -3
  145. data/sig/revox/models/assistant_retrieve_response.rbs +859 -3
  146. data/sig/revox/models/assistant_update_params.rbs +844 -11
  147. data/sig/revox/models/assistant_update_response.rbs +886 -6
  148. data/sig/revox/models/auth_status_retrieve_params.rbs +15 -0
  149. data/sig/revox/models/auth_status_retrieve_response.rbs +13 -0
  150. data/sig/revox/models/call_cancel_params.rbs +20 -0
  151. data/sig/revox/models/call_cancel_response.rbs +13 -0
  152. data/sig/revox/models/call_create_params.rbs +847 -13
  153. data/sig/revox/models/call_create_response.rbs +1519 -34
  154. data/sig/revox/models/call_export_params.rbs +234 -0
  155. data/sig/revox/models/call_export_response.rbs +15 -0
  156. data/sig/revox/models/call_pause_params.rbs +20 -0
  157. data/sig/revox/models/call_pause_response.rbs +13 -0
  158. data/sig/revox/models/call_phone_history_params.rbs +15 -0
  159. data/sig/revox/models/call_phone_history_response.rbs +102 -0
  160. data/sig/revox/models/call_resume_params.rbs +20 -0
  161. data/sig/revox/models/call_resume_response.rbs +13 -0
  162. data/sig/revox/models/call_retrieve_response.rbs +1519 -34
  163. data/sig/revox/models/call_search_params.rbs +198 -0
  164. data/sig/revox/models/call_search_response.rbs +2654 -0
  165. data/sig/revox/models/campaign_create_params.rbs +54 -0
  166. data/sig/revox/models/campaign_create_response.rbs +1034 -6
  167. data/sig/revox/models/campaign_get_rows_params.rbs +2 -64
  168. data/sig/revox/models/campaign_get_rows_response.rbs +1527 -54
  169. data/sig/revox/models/campaign_launch_params.rbs +20 -0
  170. data/sig/revox/models/campaign_launch_response.rbs +1694 -0
  171. data/sig/revox/models/campaign_list_response.rbs +1034 -6
  172. data/sig/revox/models/campaign_pause_params.rbs +20 -0
  173. data/sig/revox/models/campaign_pause_response.rbs +13 -0
  174. data/sig/revox/models/campaign_resume_params.rbs +20 -0
  175. data/sig/revox/models/campaign_resume_response.rbs +13 -0
  176. data/sig/revox/models/campaign_retrieve_response.rbs +1034 -6
  177. data/sig/revox/models/campaign_statistics_params.rbs +20 -0
  178. data/sig/revox/models/campaign_statistics_response.rbs +458 -0
  179. data/sig/revox/models/campaign_update_params.rbs +203 -0
  180. data/sig/revox/models/campaign_update_response.rbs +1694 -0
  181. data/sig/revox/models/phone_number_delete_params.rbs +20 -0
  182. data/sig/revox/models/phone_number_delete_response.rbs +13 -0
  183. data/sig/revox/models/phone_number_list_params.rbs +15 -0
  184. data/sig/revox/models/phone_number_list_response.rbs +1462 -0
  185. data/sig/revox/models/phone_number_update_params.rbs +32 -0
  186. data/sig/revox/models/phone_number_update_response.rbs +1460 -0
  187. data/sig/revox/models/user_retrieve_params.rbs +14 -0
  188. data/sig/revox/models/user_retrieve_response.rbs +71 -0
  189. data/sig/revox/models/voice_clone_params.rbs +79 -0
  190. data/sig/revox/models/voice_clone_response.rbs +40 -0
  191. data/sig/revox/models/voice_delete_params.rbs +20 -0
  192. data/sig/revox/models/voice_delete_response.rbs +13 -0
  193. data/sig/revox/models/voice_list_response.rbs +45 -3
  194. data/sig/revox/models/voice_preview_params.rbs +42 -1
  195. data/sig/revox/models.rbs +36 -2
  196. data/sig/revox/resources/assistants.rbs +61 -2
  197. data/sig/revox/resources/auth_status.rbs +11 -0
  198. data/sig/revox/resources/call.rbs +41 -3
  199. data/sig/revox/resources/campaigns.rbs +35 -5
  200. data/sig/revox/resources/phone_numbers.rbs +23 -0
  201. data/sig/revox/resources/users.rbs +3 -1
  202. data/sig/revox/resources/voices.rbs +17 -0
  203. metadata +122 -23
  204. data/lib/revox/models/call_list_params.rb +0 -52
  205. data/lib/revox/models/call_list_response.rb +0 -259
  206. data/lib/revox/models/users/me_retrieve_params.rb +0 -16
  207. data/lib/revox/models/users/me_retrieve_response.rb +0 -89
  208. data/lib/revox/models/users/me_update_params.rb +0 -22
  209. data/lib/revox/models/users/me_update_response.rb +0 -89
  210. data/lib/revox/resources/users/me.rb +0 -55
  211. data/rbi/revox/models/call_list_params.rbi +0 -94
  212. data/rbi/revox/models/call_list_response.rbi +0 -563
  213. data/rbi/revox/models/users/me_retrieve_params.rbi +0 -29
  214. data/rbi/revox/models/users/me_retrieve_response.rbi +0 -139
  215. data/rbi/revox/models/users/me_update_params.rbi +0 -43
  216. data/rbi/revox/models/users/me_update_response.rbi +0 -139
  217. data/rbi/revox/resources/users/me.rbi +0 -33
  218. data/sig/revox/models/call_list_params.rbs +0 -63
  219. data/sig/revox/models/call_list_response.rbs +0 -226
  220. data/sig/revox/models/users/me_retrieve_params.rbs +0 -16
  221. data/sig/revox/models/users/me_retrieve_response.rbs +0 -70
  222. data/sig/revox/models/users/me_update_params.rbs +0 -28
  223. data/sig/revox/models/users/me_update_response.rbs +0 -70
  224. data/sig/revox/resources/users/me.rbs +0 -18
@@ -4,31 +4,13 @@ module Revox
4
4
  module Models
5
5
  # @see Revox::Resources::Campaigns#get_rows
6
6
  class CampaignGetRowsResponse < Revox::Internal::Type::BaseModel
7
- # @!attribute page
8
- #
9
- # @return [Float]
10
- required :page, Float
11
-
12
- # @!attribute page_size
13
- #
14
- # @return [Float]
15
- required :page_size, Float
16
-
17
7
  # @!attribute rows
18
8
  #
19
9
  # @return [Array<Revox::Models::CampaignGetRowsResponse::Row>]
20
10
  required :rows, -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row] }
21
11
 
22
- # @!attribute total
23
- #
24
- # @return [Float]
25
- required :total, Float
26
-
27
- # @!method initialize(page:, page_size:, rows:, total:)
28
- # @param page [Float]
29
- # @param page_size [Float]
12
+ # @!method initialize(rows:)
30
13
  # @param rows [Array<Revox::Models::CampaignGetRowsResponse::Row>]
31
- # @param total [Float]
32
14
 
33
15
  class Row < Revox::Internal::Type::BaseModel
34
16
  # @!attribute id
@@ -80,6 +62,12 @@ module Revox
80
62
  # @return [String]
81
63
  required :id, String
82
64
 
65
+ # @!attribute assignee
66
+ # The team member responsible for following up on this call.
67
+ #
68
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assignee, nil]
69
+ required :assignee, -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assignee }, nil?: true
70
+
83
71
  # @!attribute assistant
84
72
  #
85
73
  # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant, nil]
@@ -112,6 +100,13 @@ module Revox
112
100
  # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Campaign, nil]
113
101
  required :campaign, -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Campaign }, nil?: true
114
102
 
103
+ # @!attribute contact
104
+ # Magic contact variables (prospect identity) extracted from the call's input data
105
+ # and transcript.
106
+ #
107
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Contact]
108
+ required :contact, -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Contact }
109
+
115
110
  # @!attribute created_at
116
111
  # The time the call order was created.
117
112
  #
@@ -162,7 +157,7 @@ module Revox
162
157
 
163
158
  # @!attribute llm_model
164
159
  #
165
- # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember1]
160
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember1, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember2, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember3]
166
161
  required :llm_model, union: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel }
167
162
 
168
163
  # @!attribute metadata
@@ -177,6 +172,12 @@ module Revox
177
172
  # @return [String]
178
173
  required :organization_id, String
179
174
 
175
+ # @!attribute prompt_variables
176
+ # Variables used to interpolate the prompt.
177
+ #
178
+ # @return [Hash{Symbol=>String}, nil]
179
+ required :prompt_variables, Revox::Internal::Type::HashOf[String], nil?: true
180
+
180
181
  # @!attribute scheduled_at
181
182
  # The time the call order is scheduled to start.
182
183
  #
@@ -196,7 +197,34 @@ module Revox
196
197
  # @return [String]
197
198
  required :to_phone_number, String
198
199
 
199
- # @!method initialize(id:, assistant:, call_attempts:, call_retry_config:, calls_count:, campaign:, created_at:, direction:, first_sentence_delay_ms:, from_phone_number:, is_cancelled:, is_completed:, last_call_attempt:, llm_model:, metadata:, organization_id:, scheduled_at:, status:, to_phone_number:)
200
+ # @!attribute updated_at
201
+ # The time the call order was last updated (any state change, retry, or analysis
202
+ # result).
203
+ #
204
+ # @return [Object]
205
+ required :updated_at, Revox::Internal::Type::Unknown
206
+
207
+ # @!attribute follow_up_emails
208
+ # Extra notification recipients resolved from the agent prompt's own routing
209
+ # rules, when it defines any. Added to the assistant's configured notification
210
+ # recipients; never replaces them. Null when the prompt defines no routing rules.
211
+ #
212
+ # @return [Array<String>, nil]
213
+ optional :follow_up_emails, Revox::Internal::Type::ArrayOf[String], nil?: true
214
+
215
+ # @!attribute outcome
216
+ # Business outcome of the call. Null if not computed or no transcript.
217
+ #
218
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Outcome, nil]
219
+ optional :outcome, enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Outcome }, nil?: true
220
+
221
+ # @!attribute outcome_summary
222
+ # LLM explanation for the outcome, when outcome was computed from the transcript.
223
+ #
224
+ # @return [String, nil]
225
+ optional :outcome_summary, String, nil?: true
226
+
227
+ # @!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)
200
228
  # Some parameter documentations has been truncated, see
201
229
  # {Revox::Models::CampaignGetRowsResponse::Row::Call} for more details.
202
230
  #
@@ -205,6 +233,8 @@ module Revox
205
233
  #
206
234
  # @param id [String] The ID of the call.
207
235
  #
236
+ # @param assignee [Revox::Models::CampaignGetRowsResponse::Row::Call::Assignee, nil] The team member responsible for following up on this call.
237
+ #
208
238
  # @param assistant [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant, nil]
209
239
  #
210
240
  # @param call_attempts [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt>] All call attempts for this call order, ordered by most recent first.
@@ -215,6 +245,8 @@ module Revox
215
245
  #
216
246
  # @param campaign [Revox::Models::CampaignGetRowsResponse::Row::Call::Campaign, nil]
217
247
  #
248
+ # @param contact [Revox::Models::CampaignGetRowsResponse::Row::Call::Contact] Magic contact variables (prospect identity) extracted from the call's input data
249
+ #
218
250
  # @param created_at [Object] The time the call order was created.
219
251
  #
220
252
  # @param direction [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Direction] Whether the call is inbound or outbound.
@@ -229,17 +261,62 @@ module Revox
229
261
  #
230
262
  # @param last_call_attempt [Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt, nil] This represent a single call attempt. A call attempt is a single call made to th
231
263
  #
232
- # @param llm_model [Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember1]
264
+ # @param llm_model [Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember1, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember2, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember3]
233
265
  #
234
266
  # @param metadata [Hash{Symbol=>String}, nil] Metadata stored with the call.
235
267
  #
236
268
  # @param organization_id [String] The ID of the organization that owns the call.
237
269
  #
270
+ # @param prompt_variables [Hash{Symbol=>String}, nil] Variables used to interpolate the prompt.
271
+ #
238
272
  # @param scheduled_at [Object] The time the call order is scheduled to start.
239
273
  #
240
274
  # @param status [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Status] The status of the call.
241
275
  #
242
276
  # @param to_phone_number [String] The phone number that received the call. Formatted in E.164 format. Example: +12
277
+ #
278
+ # @param updated_at [Object] The time the call order was last updated (any state change, retry, or analysis r
279
+ #
280
+ # @param follow_up_emails [Array<String>, nil] Extra notification recipients resolved from the agent prompt's own routing rules
281
+ #
282
+ # @param outcome [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Outcome, nil] Business outcome of the call. Null if not computed or no transcript.
283
+ #
284
+ # @param outcome_summary [String, nil] LLM explanation for the outcome, when outcome was computed from the transcript.
285
+
286
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call#assignee
287
+ class Assignee < Revox::Internal::Type::BaseModel
288
+ # @!attribute id
289
+ # The database user id of the assignee.
290
+ #
291
+ # @return [String]
292
+ required :id, String
293
+
294
+ # @!attribute email
295
+ #
296
+ # @return [String]
297
+ required :email, String
298
+
299
+ # @!attribute first_name
300
+ #
301
+ # @return [String, nil]
302
+ required :first_name, String, nil?: true
303
+
304
+ # @!attribute last_name
305
+ #
306
+ # @return [String, nil]
307
+ required :last_name, String, nil?: true
308
+
309
+ # @!method initialize(id:, email:, first_name:, last_name:)
310
+ # The team member responsible for following up on this call.
311
+ #
312
+ # @param id [String] The database user id of the assignee.
313
+ #
314
+ # @param email [String]
315
+ #
316
+ # @param first_name [String, nil]
317
+ #
318
+ # @param last_name [String, nil]
319
+ end
243
320
 
244
321
  # @see Revox::Models::CampaignGetRowsResponse::Row::Call#assistant
245
322
  class Assistant < Revox::Internal::Type::BaseModel
@@ -248,15 +325,36 @@ module Revox
248
325
  # @return [String]
249
326
  required :id, String
250
327
 
328
+ # @!attribute after_call_sms_outcomes
329
+ # Which call outcomes trigger the after-call SMS. When empty or null, no
330
+ # after-call SMS is sent. Use "none" when outcome is null.
331
+ #
332
+ # @return [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::AfterCallSMSOutcome>, nil]
333
+ required :after_call_sms_outcomes,
334
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::AfterCallSMSOutcome] },
335
+ nil?: true
336
+
337
+ # @!attribute after_call_sms_prompt
338
+ # Prompt / instructions for the after-call SMS. Supports {{variable}}
339
+ # placeholders. When null, no after-call SMS is sent.
340
+ #
341
+ # @return [String, nil]
342
+ required :after_call_sms_prompt, String, nil?: true
343
+
251
344
  # @!attribute background_sound
252
- # The background sound to play during the call. Useful to give the impression that
253
- # your AI agent is in an office.
345
+ # Ambient background sound to play during the call. null disables it.
254
346
  #
255
347
  # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::BackgroundSound, nil]
256
348
  required :background_sound,
257
349
  enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::BackgroundSound },
258
350
  nil?: true
259
351
 
352
+ # @!attribute background_sound_volume
353
+ # Volume of the ambient background sound (0 = silent, 1 = max).
354
+ #
355
+ # @return [Float]
356
+ required :background_sound_volume, Float
357
+
260
358
  # @!attribute calendly
261
359
  #
262
360
  # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Calendly, nil]
@@ -273,11 +371,48 @@ module Revox
273
371
  -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig },
274
372
  nil?: true
275
373
 
374
+ # @!attribute cartesia_dictionary_pronunciation_id
375
+ # Optional Cartesia pronunciation dictionary ID linked to this assistant.
376
+ #
377
+ # @return [String, nil]
378
+ required :cartesia_dictionary_pronunciation_id, String, nil?: true
379
+
276
380
  # @!attribute created_at
277
381
  #
278
382
  # @return [Object]
279
383
  required :created_at, Revox::Internal::Type::Unknown
280
384
 
385
+ # @!attribute custom_tools
386
+ #
387
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool>, nil]
388
+ required :custom_tools,
389
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool] },
390
+ nil?: true
391
+
392
+ # @!attribute email_notification_address
393
+ # Email address(es) to receive notifications when a call ends with a matching
394
+ # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
395
+ # bob@y.com").
396
+ #
397
+ # @return [String, nil]
398
+ required :email_notification_address, String, nil?: true
399
+
400
+ # @!attribute email_notification_language
401
+ # The language used for the notification email content. One of "en" or "fr".
402
+ #
403
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationLanguage]
404
+ required :email_notification_language,
405
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationLanguage }
406
+
407
+ # @!attribute email_notification_outcomes
408
+ # Which call outcomes trigger an email notification. E.g. ["interested",
409
+ # "completed", "none"]. Use "none" when outcome is null.
410
+ #
411
+ # @return [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationOutcome>, nil]
412
+ required :email_notification_outcomes,
413
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationOutcome] },
414
+ nil?: true
415
+
281
416
  # @!attribute end_of_call_sentence
282
417
  #
283
418
  # @return [String, nil]
@@ -300,6 +435,22 @@ module Revox
300
435
  required :first_sentence_mode,
301
436
  enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FirstSentenceMode }
302
437
 
438
+ # @!attribute from_phone_number
439
+ # Override the default outbound phone number for calls placed with this assistant.
440
+ # When null, the organization's default phone number is used.
441
+ #
442
+ # @return [String, nil]
443
+ required :from_phone_number, String, nil?: true
444
+
445
+ # @!attribute human_transfer_mode
446
+ # Warm or cold transfer when transfer_phone_number is set; null when transfer is
447
+ # not configured.
448
+ #
449
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::HumanTransferMode, nil]
450
+ required :human_transfer_mode,
451
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::HumanTransferMode },
452
+ nil?: true
453
+
303
454
  # @!attribute ivr_navigation_enabled
304
455
  # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
305
456
  # skip turns to navigate phone menus.
@@ -309,9 +460,16 @@ module Revox
309
460
 
310
461
  # @!attribute llm_model
311
462
  #
312
- # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember1]
463
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember3]
313
464
  required :llm_model, union: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel }
314
465
 
466
+ # @!attribute logo_url
467
+ # Public URL of the brand logo shown on the assistant's demo page. Null when
468
+ # unset.
469
+ #
470
+ # @return [String, nil]
471
+ required :logo_url, String, nil?: true
472
+
315
473
  # @!attribute max_call_duration_secs
316
474
  # The maximum duration of the call in seconds. This is the maximum time the call
317
475
  # will be allowed to run.
@@ -319,6 +477,14 @@ module Revox
319
477
  # @return [Float]
320
478
  required :max_call_duration_secs, Float
321
479
 
480
+ # @!attribute max_duration_end_message
481
+ # Optional message the agent will say, without being interruptible, when the call
482
+ # reaches its max duration. Kept short so it fits inside the farewell buffer. If
483
+ # null, the call ends silently.
484
+ #
485
+ # @return [String, nil]
486
+ required :max_duration_end_message, String, nil?: true
487
+
322
488
  # @!attribute name
323
489
  #
324
490
  # @return [String]
@@ -329,11 +495,45 @@ module Revox
329
495
  # @return [String]
330
496
  required :organization_id, String
331
497
 
498
+ # @!attribute position
499
+ #
500
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Position, nil]
501
+ required :position,
502
+ -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Position },
503
+ nil?: true
504
+
332
505
  # @!attribute prompt
333
506
  #
334
507
  # @return [String]
335
508
  required :prompt, String
336
509
 
510
+ # @!attribute prompt_flow
511
+ #
512
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow, nil]
513
+ required :prompt_flow,
514
+ -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow },
515
+ nil?: true
516
+
517
+ # @!attribute slack
518
+ #
519
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack, nil]
520
+ required :slack, -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack }, nil?: true
521
+
522
+ # @!attribute sms_enabled
523
+ # Enable SMS tool during calls. When enabled, the agent can send SMS messages to
524
+ # the user on the call.
525
+ #
526
+ # @return [Boolean]
527
+ required :sms_enabled, Revox::Internal::Type::Boolean
528
+
529
+ # @!attribute sms_template
530
+ # Hardcoded SMS template to send during calls. When set, this exact text is sent
531
+ # instead of letting the agent generate the message. Supports {{variable}}
532
+ # placeholders.
533
+ #
534
+ # @return [String, nil]
535
+ required :sms_template, String, nil?: true
536
+
337
537
  # @!attribute structured_output_config
338
538
  # The structured output config to use for the call. This is used to extract the
339
539
  # data from the call (like email, name, company name, etc.).
@@ -343,12 +543,63 @@ module Revox
343
543
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig] },
344
544
  nil?: true
345
545
 
546
+ # @!attribute structured_output_prompt
547
+ # Custom prompt for structured data extraction. If not provided, a default prompt
548
+ # is used. Available variables: {{transcript}}, {{call_direction}},
549
+ # {{user_phone_number}}, {{agent_phone_number}}.
550
+ #
551
+ # @return [String, nil]
552
+ required :structured_output_prompt, String, nil?: true
553
+
554
+ # @!attribute stt_context
555
+ # Assistant-level speech-to-text context: structured `general` key/value pairs
556
+ # plus a list of domain `terms`. Prompt-derived context is merged in without
557
+ # replacing existing entries.
558
+ #
559
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttContext, nil]
560
+ required :stt_context,
561
+ -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttContext },
562
+ nil?: true
563
+
564
+ # @!attribute stt_model
565
+ # Transcriber (speech-to-text) model used for the assistant.
566
+ #
567
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttModel]
568
+ required :stt_model, enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttModel }
569
+
570
+ # @!attribute thinking_sound
571
+ # Audio clip to play while the agent is processing a response. One of the built-in
572
+ # LiveKit audio clips; null disables it.
573
+ #
574
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::ThinkingSound, nil]
575
+ required :thinking_sound,
576
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::ThinkingSound },
577
+ nil?: true
578
+
579
+ # @!attribute thinking_sound_probability
580
+ # Probability [0..1] that the thinking sound plays on any given turn; otherwise
581
+ # the agent is silent while thinking.
582
+ #
583
+ # @return [Float]
584
+ required :thinking_sound_probability, Float
585
+
586
+ # @!attribute thinking_sound_volume
587
+ # Volume of the thinking sound (0 = silent, 1 = max).
588
+ #
589
+ # @return [Float]
590
+ required :thinking_sound_volume, Float
591
+
346
592
  # @!attribute transfer_phone_number
347
593
  # Phone number to transfer calls to when users request to speak to a human agent.
348
594
  #
349
595
  # @return [String, nil]
350
596
  required :transfer_phone_number, String, nil?: true
351
597
 
598
+ # @!attribute type
599
+ #
600
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Type]
601
+ required :type, enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Type }
602
+
352
603
  # @!attribute updated_at
353
604
  #
354
605
  # @return [Object]
@@ -366,37 +617,85 @@ module Revox
366
617
  # @return [String, nil]
367
618
  required :voicemail_message, String, nil?: true
368
619
 
620
+ # @!attribute voicemail_sms_prompt
621
+ # Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
622
+ # When null, no SMS is sent on voicemail.
623
+ #
624
+ # @return [String, nil]
625
+ required :voicemail_sms_prompt, String, nil?: true
626
+
627
+ # @!attribute warm_transfer_summary_instructions
628
+ # Warm transfer only: instructions for the supervisor handoff summary; null when
629
+ # not configured or cold transfer.
630
+ #
631
+ # @return [String, nil]
632
+ required :warm_transfer_summary_instructions, String, nil?: true
633
+
369
634
  # @!attribute webhook_url
370
635
  # The webhook URL to call when the call is completed.
371
636
  #
372
637
  # @return [String, nil]
373
638
  required :webhook_url, String, nil?: true
374
639
 
640
+ # @!attribute zoho
641
+ #
642
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho, nil]
643
+ required :zoho, -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho }, nil?: true
644
+
645
+ # @!attribute created_by
646
+ # The user who created the assistant.
647
+ #
648
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CreatedBy, nil]
649
+ optional :created_by,
650
+ -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CreatedBy },
651
+ nil?: true
652
+
375
653
  # @!attribute faq_items
376
654
  #
377
655
  # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem>, nil]
378
656
  optional :faq_items,
379
657
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem] }
380
658
 
659
+ # @!attribute is_realestate_assistant
660
+ #
661
+ # @return [Boolean, nil]
662
+ optional :is_realestate_assistant, Revox::Internal::Type::Boolean
663
+
381
664
  # @!attribute pending_faq_count
382
665
  #
383
666
  # @return [Float, nil]
384
667
  optional :pending_faq_count, Float
385
668
 
386
- # @!method initialize(id:, background_sound:, calendly:, call_retry_config:, created_at:, end_of_call_sentence:, first_sentence:, first_sentence_delay_ms:, first_sentence_mode:, ivr_navigation_enabled:, llm_model:, max_call_duration_secs:, name:, organization_id:, prompt:, structured_output_config:, transfer_phone_number:, updated_at:, voice:, voicemail_message:, webhook_url:, faq_items: nil, pending_faq_count: nil)
669
+ # @!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)
387
670
  # Some parameter documentations has been truncated, see
388
671
  # {Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant} for more details.
389
672
  #
390
673
  # @param id [String]
391
674
  #
392
- # @param background_sound [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::BackgroundSound, nil] The background sound to play during the call. Useful to give the impression that
675
+ # @param after_call_sms_outcomes [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::AfterCallSMSOutcome>, nil] Which call outcomes trigger the after-call SMS. When empty or null, no after-cal
676
+ #
677
+ # @param after_call_sms_prompt [String, nil] Prompt / instructions for the after-call SMS. Supports {{variable}} placeholders
678
+ #
679
+ # @param background_sound [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::BackgroundSound, nil] Ambient background sound to play during the call. null disables it.
680
+ #
681
+ # @param background_sound_volume [Float] Volume of the ambient background sound (0 = silent, 1 = max).
393
682
  #
394
683
  # @param calendly [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Calendly, nil]
395
684
  #
396
685
  # @param call_retry_config [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig, nil] Configuration for call retry behavior including time windows, delays, and max it
397
686
  #
687
+ # @param cartesia_dictionary_pronunciation_id [String, nil] Optional Cartesia pronunciation dictionary ID linked to this assistant.
688
+ #
398
689
  # @param created_at [Object]
399
690
  #
691
+ # @param custom_tools [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool>, nil]
692
+ #
693
+ # @param email_notification_address [String, nil] Email address(es) to receive notifications when a call ends with a matching outc
694
+ #
695
+ # @param email_notification_language [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationLanguage] The language used for the notification email content. One of "en" or "fr".
696
+ #
697
+ # @param email_notification_outcomes [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationOutcome>, nil] Which call outcomes trigger an email notification. E.g. ["interested", "complete
698
+ #
400
699
  # @param end_of_call_sentence [String, nil]
401
700
  #
402
701
  # @param first_sentence [String, nil]
@@ -405,36 +704,93 @@ module Revox
405
704
  #
406
705
  # @param first_sentence_mode [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FirstSentenceMode]
407
706
  #
707
+ # @param from_phone_number [String, nil] Override the default outbound phone number for calls placed with this assistant.
708
+ #
709
+ # @param human_transfer_mode [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::HumanTransferMode, nil] Warm or cold transfer when transfer_phone_number is set; null when transfer is n
710
+ #
408
711
  # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
409
712
  #
410
- # @param llm_model [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember1]
713
+ # @param llm_model [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember3]
714
+ #
715
+ # @param logo_url [String, nil] Public URL of the brand logo shown on the assistant's demo page. Null when unset
411
716
  #
412
717
  # @param max_call_duration_secs [Float] The maximum duration of the call in seconds. This is the maximum time the call w
413
718
  #
719
+ # @param max_duration_end_message [String, nil] Optional message the agent will say, without being interruptible, when the call
720
+ #
414
721
  # @param name [String]
415
722
  #
416
723
  # @param organization_id [String]
417
724
  #
725
+ # @param position [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Position, nil]
726
+ #
418
727
  # @param prompt [String]
419
728
  #
729
+ # @param prompt_flow [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow, nil]
730
+ #
731
+ # @param slack [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack, nil]
732
+ #
733
+ # @param sms_enabled [Boolean] Enable SMS tool during calls. When enabled, the agent can send SMS messages to t
734
+ #
735
+ # @param sms_template [String, nil] Hardcoded SMS template to send during calls. When set, this exact text is sent i
736
+ #
420
737
  # @param structured_output_config [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig>, nil] The structured output config to use for the call. This is used to extract the da
421
738
  #
739
+ # @param structured_output_prompt [String, nil] Custom prompt for structured data extraction. If not provided, a default prompt
740
+ #
741
+ # @param stt_context [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttContext, nil] Assistant-level speech-to-text context: structured `general` key/value pairs plu
742
+ #
743
+ # @param stt_model [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttModel] Transcriber (speech-to-text) model used for the assistant.
744
+ #
745
+ # @param thinking_sound [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::ThinkingSound, nil] Audio clip to play while the agent is processing a response. One of the built-in
746
+ #
747
+ # @param thinking_sound_probability [Float] Probability [0..1] that the thinking sound plays on any given turn; otherwise th
748
+ #
749
+ # @param thinking_sound_volume [Float] Volume of the thinking sound (0 = silent, 1 = max).
750
+ #
422
751
  # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent.
423
752
  #
753
+ # @param type [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Type]
754
+ #
424
755
  # @param updated_at [Object]
425
756
  #
426
757
  # @param voice [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice, nil]
427
758
  #
428
759
  # @param voicemail_message [String, nil] If set, when voicemail is detected the agent will speak this message then hang u
429
760
  #
761
+ # @param voicemail_sms_prompt [String, nil] Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
762
+ #
763
+ # @param warm_transfer_summary_instructions [String, nil] Warm transfer only: instructions for the supervisor handoff summary; null when n
764
+ #
430
765
  # @param webhook_url [String, nil] The webhook URL to call when the call is completed.
431
766
  #
767
+ # @param zoho [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho, nil]
768
+ #
769
+ # @param created_by [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CreatedBy, nil] The user who created the assistant.
770
+ #
432
771
  # @param faq_items [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem>]
433
772
  #
773
+ # @param is_realestate_assistant [Boolean]
774
+ #
434
775
  # @param pending_faq_count [Float]
435
776
 
436
- # The background sound to play during the call. Useful to give the impression that
437
- # your AI agent is in an office.
777
+ module AfterCallSMSOutcome
778
+ extend Revox::Internal::Type::Enum
779
+
780
+ NOT_INTERESTED = :not_interested
781
+ INTERESTED = :interested
782
+ COMPLETED = :completed
783
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
784
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
785
+ DO_NOT_CONTACT = :do_not_contact
786
+ AI_AVERSE = :ai_averse
787
+ NONE = :none
788
+
789
+ # @!method self.values
790
+ # @return [Array<Symbol>]
791
+ end
792
+
793
+ # Ambient background sound to play during the call. null disables it.
438
794
  #
439
795
  # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#background_sound
440
796
  module BackgroundSound
@@ -473,6 +829,23 @@ module Revox
473
829
 
474
830
  # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#call_retry_config
475
831
  class CallRetryConfig < Revox::Internal::Type::BaseModel
832
+ # @!attribute allowed_days
833
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
834
+ # Monday through Friday.
835
+ #
836
+ # @return [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig::AllowedDay>]
837
+ required :allowed_days,
838
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig::AllowedDay] }
839
+
840
+ # @!attribute call_twice_in_a_row
841
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
842
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
843
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
844
+ # Default: false.
845
+ #
846
+ # @return [Boolean]
847
+ required :call_twice_in_a_row, Revox::Internal::Type::Boolean
848
+
476
849
  # @!attribute calling_windows
477
850
  #
478
851
  # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig::CallingWindow>]
@@ -493,7 +866,7 @@ module Revox
493
866
  # @return [String, nil]
494
867
  optional :timezone, String, nil?: true
495
868
 
496
- # @!method initialize(calling_windows:, max_retry_attempts:, timezone: nil)
869
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
497
870
  # Some parameter documentations has been truncated, see
498
871
  # {Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig}
499
872
  # for more details.
@@ -501,12 +874,31 @@ module Revox
501
874
  # Configuration for call retry behavior including time windows, delays, and max
502
875
  # iterations. If not provided, defaults will be used.
503
876
  #
877
+ # @param allowed_days [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig::AllowedDay>] Days of the week when calls are allowed, in the recipient's timezone. Default: M
878
+ #
879
+ # @param call_twice_in_a_row [Boolean] If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping retr
880
+ #
504
881
  # @param calling_windows [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig::CallingWindow>]
505
882
  #
506
883
  # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
507
884
  #
508
885
  # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
509
886
 
887
+ module AllowedDay
888
+ extend Revox::Internal::Type::Enum
889
+
890
+ MONDAY = :monday
891
+ TUESDAY = :tuesday
892
+ WEDNESDAY = :wednesday
893
+ THURSDAY = :thursday
894
+ FRIDAY = :friday
895
+ SATURDAY = :saturday
896
+ SUNDAY = :sunday
897
+
898
+ # @!method self.values
899
+ # @return [Array<Symbol>]
900
+ end
901
+
510
902
  class CallingWindow < Revox::Internal::Type::BaseModel
511
903
  # @!attribute calling_window_end_time
512
904
  # End time for the calling window in the recipient's timezone (or
@@ -543,61 +935,287 @@ module Revox
543
935
  end
544
936
  end
545
937
 
546
- # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#first_sentence_mode
547
- module FirstSentenceMode
548
- extend Revox::Internal::Type::Enum
938
+ class CustomTool < Revox::Internal::Type::BaseModel
939
+ # @!attribute body_template
940
+ # JSON body template for the request. Use quoted {{variable}} placeholders (e.g.
941
+ # "{{name}}") for dynamic values
942
+ #
943
+ # @return [String, nil]
944
+ required :body_template, String, nil?: true
549
945
 
550
- GENERATED = :generated
551
- STATIC = :static
552
- NONE = :none
946
+ # @!attribute description
947
+ # Human-readable description of what the tool does, used by the LLM to decide when
948
+ # to call it
949
+ #
950
+ # @return [String]
951
+ required :description, String
553
952
 
554
- # @!method self.values
555
- # @return [Array<Symbol>]
556
- end
953
+ # @!attribute headers
954
+ # HTTP headers to include in the request. Values support {{variable}} placeholders
955
+ #
956
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::Header>]
957
+ required :headers,
958
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::Header] }
557
959
 
558
- # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#llm_model
559
- module LlmModel
560
- extend Revox::Internal::Type::Union
960
+ # @!attribute input_schema
961
+ # Schema defining the parameters the LLM should extract from the conversation to
962
+ # pass to this tool
963
+ #
964
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::InputSchema>]
965
+ required :input_schema,
966
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::InputSchema] }
561
967
 
562
- variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0 }
968
+ # @!attribute method_
969
+ # HTTP method to use when calling the API endpoint
970
+ #
971
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::Method]
972
+ required :method_,
973
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::Method },
974
+ api_name: :method
563
975
 
564
- variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember1 }
976
+ # @!attribute name
977
+ # Unique tool name in lowercase_snake_case (e.g. check_inventory)
978
+ #
979
+ # @return [String]
980
+ required :name, String
565
981
 
566
- class UnionMember0 < Revox::Internal::Type::BaseModel
982
+ # @!attribute query_params
983
+ # Query string parameters appended to the URL. Values support {{variable}}
984
+ # placeholders
985
+ #
986
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::QueryParam>]
987
+ required :query_params,
988
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::QueryParam] }
989
+
990
+ # @!attribute url
991
+ # Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic
992
+ # values
993
+ #
994
+ # @return [String]
995
+ required :url, String
996
+
997
+ # @!method initialize(body_template:, description:, headers:, input_schema:, method_:, name:, query_params:, url:)
998
+ # Some parameter documentations has been truncated, see
999
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool} for
1000
+ # more details.
1001
+ #
1002
+ # @param body_template [String, nil] JSON body template for the request. Use quoted {{variable}} placeholders (e.g. "
1003
+ #
1004
+ # @param description [String] Human-readable description of what the tool does, used by the LLM to decide when
1005
+ #
1006
+ # @param headers [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::Header>] HTTP headers to include in the request. Values support {{variable}} placeholders
1007
+ #
1008
+ # @param input_schema [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::InputSchema>] Schema defining the parameters the LLM should extract from the conversation to p
1009
+ #
1010
+ # @param method_ [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::Method] HTTP method to use when calling the API endpoint
1011
+ #
1012
+ # @param name [String] Unique tool name in lowercase_snake_case (e.g. check_inventory)
1013
+ #
1014
+ # @param query_params [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::QueryParam>] Query string parameters appended to the URL. Values support {{variable}} placeho
1015
+ #
1016
+ # @param url [String] Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic val
1017
+
1018
+ class Header < Revox::Internal::Type::BaseModel
1019
+ # @!attribute key
1020
+ #
1021
+ # @return [String]
1022
+ required :key, String
1023
+
1024
+ # @!attribute value
1025
+ #
1026
+ # @return [String]
1027
+ required :value, String
1028
+
1029
+ # @!method initialize(key:, value:)
1030
+ # @param key [String]
1031
+ # @param value [String]
1032
+ end
1033
+
1034
+ class InputSchema < Revox::Internal::Type::BaseModel
567
1035
  # @!attribute name
568
1036
  #
569
- # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0::Name]
570
- required :name,
571
- enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0::Name }
1037
+ # @return [String]
1038
+ required :name, String
1039
+
1040
+ # @!attribute required
1041
+ #
1042
+ # @return [Boolean]
1043
+ required :required, Revox::Internal::Type::Boolean
572
1044
 
573
1045
  # @!attribute type
574
1046
  #
575
- # @return [Symbol, :"dedicated-instance"]
576
- required :type, const: :"dedicated-instance"
1047
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::InputSchema::Type]
1048
+ required :type,
1049
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::InputSchema::Type }
577
1050
 
578
- # @!method initialize(name:, type: :"dedicated-instance")
579
- # @param name [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0::Name]
580
- # @param type [Symbol, :"dedicated-instance"]
1051
+ # @!attribute description
1052
+ #
1053
+ # @return [String, nil]
1054
+ optional :description, String
581
1055
 
582
- # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0#name
583
- module Name
1056
+ # @!attribute enum_options
1057
+ #
1058
+ # @return [Array<String>, nil]
1059
+ optional :enum_options, Revox::Internal::Type::ArrayOf[String]
1060
+
1061
+ # @!method initialize(name:, required:, type:, description: nil, enum_options: nil)
1062
+ # @param name [String]
1063
+ # @param required [Boolean]
1064
+ # @param type [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::InputSchema::Type]
1065
+ # @param description [String]
1066
+ # @param enum_options [Array<String>]
1067
+
1068
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool::InputSchema#type
1069
+ module Type
584
1070
  extend Revox::Internal::Type::Enum
585
1071
 
586
- GPT_4_1 = :"gpt-4.1"
587
- MINISTRAL_3_8B_INSTRUCT = :"ministral-3-8b-instruct"
1072
+ STRING = :string
1073
+ NUMBER = :number
1074
+ BOOLEAN = :boolean
1075
+ ENUM = :enum
1076
+ DATE = :date
1077
+ DATETIME = :datetime
588
1078
 
589
1079
  # @!method self.values
590
1080
  # @return [Array<Symbol>]
591
1081
  end
592
1082
  end
593
1083
 
594
- class UnionMember1 < Revox::Internal::Type::BaseModel
595
- # @!attribute openrouter_model_id
596
- # The model ID to use from OpenRouter. eg: openai/gpt-4.1
597
- #
598
- # @return [String]
599
- required :openrouter_model_id, String
600
-
1084
+ # HTTP method to use when calling the API endpoint
1085
+ #
1086
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CustomTool#method_
1087
+ module Method
1088
+ extend Revox::Internal::Type::Enum
1089
+
1090
+ GET = :GET
1091
+ POST = :POST
1092
+ PUT = :PUT
1093
+ PATCH = :PATCH
1094
+ DELETE = :DELETE
1095
+
1096
+ # @!method self.values
1097
+ # @return [Array<Symbol>]
1098
+ end
1099
+
1100
+ class QueryParam < Revox::Internal::Type::BaseModel
1101
+ # @!attribute key
1102
+ #
1103
+ # @return [String]
1104
+ required :key, String
1105
+
1106
+ # @!attribute value
1107
+ #
1108
+ # @return [String]
1109
+ required :value, String
1110
+
1111
+ # @!method initialize(key:, value:)
1112
+ # @param key [String]
1113
+ # @param value [String]
1114
+ end
1115
+ end
1116
+
1117
+ # The language used for the notification email content. One of "en" or "fr".
1118
+ #
1119
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#email_notification_language
1120
+ module EmailNotificationLanguage
1121
+ extend Revox::Internal::Type::Enum
1122
+
1123
+ EN = :en
1124
+ FR = :fr
1125
+
1126
+ # @!method self.values
1127
+ # @return [Array<Symbol>]
1128
+ end
1129
+
1130
+ module EmailNotificationOutcome
1131
+ extend Revox::Internal::Type::Enum
1132
+
1133
+ NOT_INTERESTED = :not_interested
1134
+ INTERESTED = :interested
1135
+ COMPLETED = :completed
1136
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1137
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1138
+ DO_NOT_CONTACT = :do_not_contact
1139
+ AI_AVERSE = :ai_averse
1140
+ NONE = :none
1141
+
1142
+ # @!method self.values
1143
+ # @return [Array<Symbol>]
1144
+ end
1145
+
1146
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#first_sentence_mode
1147
+ module FirstSentenceMode
1148
+ extend Revox::Internal::Type::Enum
1149
+
1150
+ GENERATED = :generated
1151
+ STATIC = :static
1152
+ NONE = :none
1153
+
1154
+ # @!method self.values
1155
+ # @return [Array<Symbol>]
1156
+ end
1157
+
1158
+ # Warm or cold transfer when transfer_phone_number is set; null when transfer is
1159
+ # not configured.
1160
+ #
1161
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#human_transfer_mode
1162
+ module HumanTransferMode
1163
+ extend Revox::Internal::Type::Enum
1164
+
1165
+ WARM = :warm
1166
+ COLD = :cold
1167
+
1168
+ # @!method self.values
1169
+ # @return [Array<Symbol>]
1170
+ end
1171
+
1172
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#llm_model
1173
+ module LlmModel
1174
+ extend Revox::Internal::Type::Union
1175
+
1176
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0 }
1177
+
1178
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember1 }
1179
+
1180
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember2 }
1181
+
1182
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember3 }
1183
+
1184
+ class UnionMember0 < Revox::Internal::Type::BaseModel
1185
+ # @!attribute name
1186
+ #
1187
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0::Name]
1188
+ required :name,
1189
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0::Name }
1190
+
1191
+ # @!attribute type
1192
+ #
1193
+ # @return [Symbol, :"dedicated-instance"]
1194
+ required :type, const: :"dedicated-instance"
1195
+
1196
+ # @!method initialize(name:, type: :"dedicated-instance")
1197
+ # @param name [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0::Name]
1198
+ # @param type [Symbol, :"dedicated-instance"]
1199
+
1200
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0#name
1201
+ module Name
1202
+ extend Revox::Internal::Type::Enum
1203
+
1204
+ GPT_4_1 = :"gpt-4.1"
1205
+ MINISTRAL_3_8B_INSTRUCT = :"ministral-3-8b-instruct"
1206
+
1207
+ # @!method self.values
1208
+ # @return [Array<Symbol>]
1209
+ end
1210
+ end
1211
+
1212
+ class UnionMember1 < Revox::Internal::Type::BaseModel
1213
+ # @!attribute openrouter_model_id
1214
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
1215
+ #
1216
+ # @return [String]
1217
+ required :openrouter_model_id, String
1218
+
601
1219
  # @!attribute openrouter_provider
602
1220
  # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
603
1221
  #
@@ -618,8 +1236,285 @@ module Revox
618
1236
  # @param type [Symbol, :openrouter] Use a model from OpenRouter.
619
1237
  end
620
1238
 
1239
+ class UnionMember2 < Revox::Internal::Type::BaseModel
1240
+ # @!attribute api_key
1241
+ # API key sent as Bearer token to the custom endpoint.
1242
+ #
1243
+ # @return [String]
1244
+ required :api_key, String
1245
+
1246
+ # @!attribute api_url
1247
+ # Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
1248
+ #
1249
+ # @return [String]
1250
+ required :api_url, String
1251
+
1252
+ # @!attribute model_name
1253
+ # Model name as expected by the provider, e.g. meta-llama/llama-3-70b
1254
+ #
1255
+ # @return [String]
1256
+ required :model_name, String
1257
+
1258
+ # @!attribute type
1259
+ # OpenAI-compatible chat completions API (bring your own endpoint and key).
1260
+ #
1261
+ # @return [Symbol, :custom]
1262
+ required :type, const: :custom
1263
+
1264
+ # @!method initialize(api_key:, api_url:, model_name:, type: :custom)
1265
+ # @param api_key [String] API key sent as Bearer token to the custom endpoint.
1266
+ #
1267
+ # @param api_url [String] Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
1268
+ #
1269
+ # @param model_name [String] Model name as expected by the provider, e.g. meta-llama/llama-3-70b
1270
+ #
1271
+ # @param type [Symbol, :custom] OpenAI-compatible chat completions API (bring your own endpoint and key).
1272
+ end
1273
+
1274
+ class UnionMember3 < Revox::Internal::Type::BaseModel
1275
+ # @!attribute provider
1276
+ # The provider to use from Realtime. eg: openai, google.
1277
+ #
1278
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember3::Provider]
1279
+ required :provider,
1280
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember3::Provider }
1281
+
1282
+ # @!attribute realtime_model_id
1283
+ # The model ID to use from Realtime. eg: gpt-4.1
1284
+ #
1285
+ # @return [String]
1286
+ required :realtime_model_id, String
1287
+
1288
+ # @!attribute type
1289
+ # Use a model from Realtime.
1290
+ #
1291
+ # @return [Symbol, :realtime]
1292
+ required :type, const: :realtime
1293
+
1294
+ # @!attribute realtime_voice_id
1295
+ # Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
1296
+ #
1297
+ # @return [String, nil]
1298
+ optional :realtime_voice_id, String
1299
+
1300
+ # @!method initialize(provider:, realtime_model_id:, realtime_voice_id: nil, type: :realtime)
1301
+ # @param provider [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember3::Provider] The provider to use from Realtime. eg: openai, google.
1302
+ #
1303
+ # @param realtime_model_id [String] The model ID to use from Realtime. eg: gpt-4.1
1304
+ #
1305
+ # @param realtime_voice_id [String] Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
1306
+ #
1307
+ # @param type [Symbol, :realtime] Use a model from Realtime.
1308
+
1309
+ # The provider to use from Realtime. eg: openai, google.
1310
+ #
1311
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember3#provider
1312
+ module Provider
1313
+ extend Revox::Internal::Type::Enum
1314
+
1315
+ OPENAI = :openai
1316
+ GOOGLE = :google
1317
+
1318
+ # @!method self.values
1319
+ # @return [Array<Symbol>]
1320
+ end
1321
+ end
1322
+
621
1323
  # @!method self.variants
622
- # @return [Array(Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember1)]
1324
+ # @return [Array(Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember3)]
1325
+ end
1326
+
1327
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#position
1328
+ class Position < Revox::Internal::Type::BaseModel
1329
+ # @!attribute x
1330
+ #
1331
+ # @return [Float]
1332
+ required :x, Float
1333
+
1334
+ # @!attribute y_
1335
+ #
1336
+ # @return [Float]
1337
+ required :y_, Float, api_name: :y
1338
+
1339
+ # @!method initialize(x:, y_:)
1340
+ # @param x [Float]
1341
+ # @param y_ [Float]
1342
+ end
1343
+
1344
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#prompt_flow
1345
+ class PromptFlow < Revox::Internal::Type::BaseModel
1346
+ # @!attribute edges
1347
+ #
1348
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Edge>]
1349
+ required :edges,
1350
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Edge] }
1351
+
1352
+ # @!attribute nodes
1353
+ #
1354
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node>]
1355
+ required :nodes,
1356
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node] }
1357
+
1358
+ # @!method initialize(edges:, nodes:)
1359
+ # @param edges [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Edge>]
1360
+ # @param nodes [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node>]
1361
+
1362
+ class Edge < Revox::Internal::Type::BaseModel
1363
+ # @!attribute id
1364
+ #
1365
+ # @return [String]
1366
+ required :id, String
1367
+
1368
+ # @!attribute source
1369
+ #
1370
+ # @return [String]
1371
+ required :source, String
1372
+
1373
+ # @!attribute target
1374
+ #
1375
+ # @return [String]
1376
+ required :target, String
1377
+
1378
+ # @!method initialize(id:, source:, target:)
1379
+ # @param id [String]
1380
+ # @param source [String]
1381
+ # @param target [String]
1382
+ end
1383
+
1384
+ class Node < Revox::Internal::Type::BaseModel
1385
+ # @!attribute id
1386
+ #
1387
+ # @return [String]
1388
+ required :id, String
1389
+
1390
+ # @!attribute data
1391
+ #
1392
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node::Data]
1393
+ required :data,
1394
+ -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node::Data }
1395
+
1396
+ # @!attribute position
1397
+ #
1398
+ # @return [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node::Position]
1399
+ required :position,
1400
+ -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node::Position }
1401
+
1402
+ # @!attribute type
1403
+ #
1404
+ # @return [Symbol, :promptBlock]
1405
+ required :type, const: :promptBlock
1406
+
1407
+ # @!method initialize(id:, data:, position:, type: :promptBlock)
1408
+ # @param id [String]
1409
+ # @param data [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node::Data]
1410
+ # @param position [Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node::Position]
1411
+ # @param type [Symbol, :promptBlock]
1412
+
1413
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node#data
1414
+ class Data < Revox::Internal::Type::BaseModel
1415
+ # @!attribute body
1416
+ #
1417
+ # @return [String]
1418
+ required :body, String
1419
+
1420
+ # @!attribute title
1421
+ #
1422
+ # @return [String]
1423
+ required :title, String
1424
+
1425
+ # @!method initialize(body:, title:)
1426
+ # @param body [String]
1427
+ # @param title [String]
1428
+ end
1429
+
1430
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::PromptFlow::Node#position
1431
+ class Position < Revox::Internal::Type::BaseModel
1432
+ # @!attribute x
1433
+ #
1434
+ # @return [Float]
1435
+ required :x, Float
1436
+
1437
+ # @!attribute y_
1438
+ #
1439
+ # @return [Float]
1440
+ required :y_, Float, api_name: :y
1441
+
1442
+ # @!method initialize(x:, y_:)
1443
+ # @param x [Float]
1444
+ # @param y_ [Float]
1445
+ end
1446
+ end
1447
+ end
1448
+
1449
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#slack
1450
+ class Slack < Revox::Internal::Type::BaseModel
1451
+ # @!attribute channel_id
1452
+ # The Slack channel ID where the notification will be posted.
1453
+ #
1454
+ # @return [String]
1455
+ required :channel_id, String
1456
+
1457
+ # @!attribute connection_id
1458
+ # The Nango connection ID linking the org's Slack workspace to Revox.
1459
+ #
1460
+ # @return [String]
1461
+ required :connection_id, String
1462
+
1463
+ # @!attribute outcomes
1464
+ # Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1465
+ # Use 'none' to notify when outcome is null.
1466
+ #
1467
+ # @return [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack::Outcome>]
1468
+ required :outcomes,
1469
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack::Outcome] }
1470
+
1471
+ # @!attribute channel_name
1472
+ # Human-readable Slack channel name, cached for display in the UI.
1473
+ #
1474
+ # @return [String, nil]
1475
+ optional :channel_name, String, nil?: true
1476
+
1477
+ # @!attribute template
1478
+ # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1479
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
1480
+ # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
1481
+ # prompt_variables and structured_output keys. When null/empty a default template
1482
+ # is used.
1483
+ #
1484
+ # @return [String, nil]
1485
+ optional :template, String, nil?: true
1486
+
1487
+ # @!method initialize(channel_id:, connection_id:, outcomes:, channel_name: nil, template: nil)
1488
+ # Some parameter documentations has been truncated, see
1489
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack} for more
1490
+ # details.
1491
+ #
1492
+ # @param channel_id [String] The Slack channel ID where the notification will be posted.
1493
+ #
1494
+ # @param connection_id [String] The Nango connection ID linking the org's Slack workspace to Revox.
1495
+ #
1496
+ # @param outcomes [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack::Outcome>] Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1497
+ #
1498
+ # @param channel_name [String, nil] Human-readable Slack channel name, cached for display in the UI.
1499
+ #
1500
+ # @param template [String, nil] Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1501
+ # {{call\_
1502
+
1503
+ module Outcome
1504
+ extend Revox::Internal::Type::Enum
1505
+
1506
+ NOT_INTERESTED = :not_interested
1507
+ INTERESTED = :interested
1508
+ COMPLETED = :completed
1509
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1510
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1511
+ DO_NOT_CONTACT = :do_not_contact
1512
+ AI_AVERSE = :ai_averse
1513
+ NONE = :none
1514
+
1515
+ # @!method self.values
1516
+ # @return [Array<Symbol>]
1517
+ end
623
1518
  end
624
1519
 
625
1520
  class StructuredOutputConfig < Revox::Internal::Type::BaseModel
@@ -672,6 +1567,88 @@ module Revox
672
1567
  end
673
1568
  end
674
1569
 
1570
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#stt_context
1571
+ class SttContext < Revox::Internal::Type::BaseModel
1572
+ # @!attribute general
1573
+ #
1574
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttContext::General>]
1575
+ required :general,
1576
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttContext::General] }
1577
+
1578
+ # @!attribute terms
1579
+ #
1580
+ # @return [Array<String>]
1581
+ required :terms, Revox::Internal::Type::ArrayOf[String]
1582
+
1583
+ # @!method initialize(general:, terms:)
1584
+ # Assistant-level speech-to-text context: structured `general` key/value pairs
1585
+ # plus a list of domain `terms`. Prompt-derived context is merged in without
1586
+ # replacing existing entries.
1587
+ #
1588
+ # @param general [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::SttContext::General>]
1589
+ # @param terms [Array<String>]
1590
+
1591
+ class General < Revox::Internal::Type::BaseModel
1592
+ # @!attribute key
1593
+ #
1594
+ # @return [String]
1595
+ required :key, String
1596
+
1597
+ # @!attribute value
1598
+ #
1599
+ # @return [String]
1600
+ required :value, String
1601
+
1602
+ # @!method initialize(key:, value:)
1603
+ # @param key [String]
1604
+ # @param value [String]
1605
+ end
1606
+ end
1607
+
1608
+ # Transcriber (speech-to-text) model used for the assistant.
1609
+ #
1610
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#stt_model
1611
+ module SttModel
1612
+ extend Revox::Internal::Type::Enum
1613
+
1614
+ STT_RT_V4 = :"stt-rt-v4"
1615
+ STT_RT_V5 = :"stt-rt-v5"
1616
+
1617
+ # @!method self.values
1618
+ # @return [Array<Symbol>]
1619
+ end
1620
+
1621
+ # Audio clip to play while the agent is processing a response. One of the built-in
1622
+ # LiveKit audio clips; null disables it.
1623
+ #
1624
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#thinking_sound
1625
+ module ThinkingSound
1626
+ extend Revox::Internal::Type::Enum
1627
+
1628
+ CITY_AMBIENCE_OGG = :"city-ambience.ogg"
1629
+ FOREST_AMBIENCE_OGG = :"forest-ambience.ogg"
1630
+ OFFICE_AMBIENCE_OGG = :"office-ambience.ogg"
1631
+ CROWDED_ROOM_OGG = :"crowded-room.ogg"
1632
+ KEYBOARD_TYPING_OGG = :"keyboard-typing.ogg"
1633
+ KEYBOARD_TYPING2_OGG = :"keyboard-typing2.ogg"
1634
+ HOLD_MUSIC_OGG = :"hold_music.ogg"
1635
+
1636
+ # @!method self.values
1637
+ # @return [Array<Symbol>]
1638
+ end
1639
+
1640
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#type
1641
+ module Type
1642
+ extend Revox::Internal::Type::Enum
1643
+
1644
+ STANDALONE = :standalone
1645
+ MULTI_STEP = :"multi-step"
1646
+ SUB_ASSISTANT = :"sub-assistant"
1647
+
1648
+ # @!method self.values
1649
+ # @return [Array<Symbol>]
1650
+ end
1651
+
675
1652
  # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#voice
676
1653
  class Voice < Revox::Internal::Type::BaseModel
677
1654
  # @!attribute id
@@ -687,6 +1664,13 @@ module Revox
687
1664
  required :provider,
688
1665
  enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::Provider }
689
1666
 
1667
+ # @!attribute model
1668
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1669
+ # for other providers.
1670
+ #
1671
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::Model, nil]
1672
+ optional :model, enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::Model }
1673
+
690
1674
  # @!attribute speed
691
1675
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
692
1676
  # 0.7–1.2. Default is 1.0.
@@ -694,7 +1678,14 @@ module Revox
694
1678
  # @return [Float, nil]
695
1679
  optional :speed, Float
696
1680
 
697
- # @!method initialize(id:, provider:, speed: nil)
1681
+ # @!attribute volume
1682
+ # Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
1683
+ # providers.
1684
+ #
1685
+ # @return [Float, nil]
1686
+ optional :volume, Float
1687
+
1688
+ # @!method initialize(id:, provider:, model: nil, speed: nil, volume: nil)
698
1689
  # Some parameter documentations has been truncated, see
699
1690
  # {Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice} for more
700
1691
  # details.
@@ -703,7 +1694,11 @@ module Revox
703
1694
  #
704
1695
  # @param provider [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::Provider] The provider of the voice.
705
1696
  #
1697
+ # @param model [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::Model] Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored fo
1698
+ #
706
1699
  # @param speed [Float] The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1700
+ #
1701
+ # @param volume [Float] Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other pro
707
1702
 
708
1703
  # The provider of the voice.
709
1704
  #
@@ -717,6 +1712,160 @@ module Revox
717
1712
  # @!method self.values
718
1713
  # @return [Array<Symbol>]
719
1714
  end
1715
+
1716
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1717
+ # for other providers.
1718
+ #
1719
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice#model
1720
+ module Model
1721
+ extend Revox::Internal::Type::Enum
1722
+
1723
+ SONIC_3 = :"sonic-3"
1724
+ SONIC_3_5 = :"sonic-3.5"
1725
+
1726
+ # @!method self.values
1727
+ # @return [Array<Symbol>]
1728
+ end
1729
+ end
1730
+
1731
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#zoho
1732
+ class Zoho < Revox::Internal::Type::BaseModel
1733
+ # @!attribute connection_id
1734
+ # The Nango connection ID linking the org's Zoho CRM account to Revox.
1735
+ #
1736
+ # @return [String]
1737
+ required :connection_id, String
1738
+
1739
+ # @!attribute field_mapping
1740
+ # Maps extracted call fields (structured_output / prompt variables) onto Zoho
1741
+ # field API names on the upserted record.
1742
+ #
1743
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::FieldMapping>]
1744
+ required :field_mapping,
1745
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::FieldMapping] }
1746
+
1747
+ # @!attribute log_call_activity
1748
+ # When true, also log the call as a record in Zoho's Calls module (related to the
1749
+ # upserted prospect via Who_Id).
1750
+ #
1751
+ # @return [Boolean]
1752
+ required :log_call_activity, Revox::Internal::Type::Boolean
1753
+
1754
+ # @!attribute module_
1755
+ # Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1756
+ #
1757
+ # @return [String]
1758
+ required :module_, String, api_name: :module
1759
+
1760
+ # @!attribute outcomes
1761
+ # Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use
1762
+ # 'none' to push when outcome is null.
1763
+ #
1764
+ # @return [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::Outcome>]
1765
+ required :outcomes,
1766
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::Outcome] }
1767
+
1768
+ # @!attribute template
1769
+ # Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}},
1770
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{transcript}}, plus
1771
+ # prompt_variables and structured_output keys. When null/empty a default note
1772
+ # (outcome + summary + auto-listed extracted fields) is used.
1773
+ #
1774
+ # @return [String, nil]
1775
+ optional :template, String, nil?: true
1776
+
1777
+ # @!method initialize(connection_id:, field_mapping:, log_call_activity:, module_:, outcomes:, template: nil)
1778
+ # Some parameter documentations has been truncated, see
1779
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho} for more
1780
+ # details.
1781
+ #
1782
+ # @param connection_id [String] The Nango connection ID linking the org's Zoho CRM account to Revox.
1783
+ #
1784
+ # @param field_mapping [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::FieldMapping>] Maps extracted call fields (structured_output / prompt variables) onto Zoho fiel
1785
+ #
1786
+ # @param log_call_activity [Boolean] When true, also log the call as a record in Zoho's Calls module (related to the
1787
+ #
1788
+ # @param module_ [String] Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1789
+ #
1790
+ # @param outcomes [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::Outcome>] Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use 'no
1791
+ #
1792
+ # @param template [String, nil] Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}}, {{cal
1793
+
1794
+ class FieldMapping < Revox::Internal::Type::BaseModel
1795
+ # @!attribute source
1796
+ # Source key to read from the call: a structured_output field name, falling back
1797
+ # to a prompt variable of the same name.
1798
+ #
1799
+ # @return [String]
1800
+ required :source, String
1801
+
1802
+ # @!attribute zoho_field
1803
+ # Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1804
+ # or a custom 'Budget\_\_c').
1805
+ #
1806
+ # @return [String]
1807
+ required :zoho_field, String
1808
+
1809
+ # @!method initialize(source:, zoho_field:)
1810
+ # Some parameter documentations has been truncated, see
1811
+ # {Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::FieldMapping}
1812
+ # for more details.
1813
+ #
1814
+ # @param source [String] Source key to read from the call: a structured_output field name, falling back t
1815
+ #
1816
+ # @param zoho_field [String] Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1817
+ end
1818
+
1819
+ module Outcome
1820
+ extend Revox::Internal::Type::Enum
1821
+
1822
+ NOT_INTERESTED = :not_interested
1823
+ INTERESTED = :interested
1824
+ COMPLETED = :completed
1825
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1826
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1827
+ DO_NOT_CONTACT = :do_not_contact
1828
+ AI_AVERSE = :ai_averse
1829
+ NONE = :none
1830
+
1831
+ # @!method self.values
1832
+ # @return [Array<Symbol>]
1833
+ end
1834
+ end
1835
+
1836
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant#created_by
1837
+ class CreatedBy < Revox::Internal::Type::BaseModel
1838
+ # @!attribute id
1839
+ # The database user id of the creator.
1840
+ #
1841
+ # @return [String]
1842
+ required :id, String
1843
+
1844
+ # @!attribute email
1845
+ #
1846
+ # @return [String]
1847
+ required :email, String
1848
+
1849
+ # @!attribute first_name
1850
+ #
1851
+ # @return [String, nil]
1852
+ required :first_name, String, nil?: true
1853
+
1854
+ # @!attribute last_name
1855
+ #
1856
+ # @return [String, nil]
1857
+ required :last_name, String, nil?: true
1858
+
1859
+ # @!method initialize(id:, email:, first_name:, last_name:)
1860
+ # The user who created the assistant.
1861
+ #
1862
+ # @param id [String] The database user id of the creator.
1863
+ #
1864
+ # @param email [String]
1865
+ #
1866
+ # @param first_name [String, nil]
1867
+ #
1868
+ # @param last_name [String, nil]
720
1869
  end
721
1870
 
722
1871
  class FaqItem < Revox::Internal::Type::BaseModel
@@ -825,12 +1974,20 @@ module Revox
825
1974
  # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Status]
826
1975
  required :status, enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Status }
827
1976
 
1977
+ # @!attribute assistants_used
1978
+ # Assistant node ids entered during this attempt, in traversal order.
1979
+ #
1980
+ # @return [Array<String>, nil]
1981
+ optional :assistants_used, Revox::Internal::Type::ArrayOf[String], nil?: true
1982
+
828
1983
  # @!attribute end_reason
829
1984
  # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
830
1985
  # 'voicemail', 'transfer', 'ivr_no_navigate'.
831
1986
  #
832
- # @return [String, nil]
833
- optional :end_reason, String, nil?: true
1987
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EndReason, nil]
1988
+ optional :end_reason,
1989
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EndReason },
1990
+ nil?: true
834
1991
 
835
1992
  # @!attribute ended_by
836
1993
  # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
@@ -841,6 +1998,25 @@ module Revox
841
1998
  enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EndedBy },
842
1999
  nil?: true
843
2000
 
2001
+ # @!attribute post_call_transcript
2002
+ # Higher-quality transcript generated after the call via Soniox async STT. Null
2003
+ # until generated or when no recording is available.
2004
+ #
2005
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript>, nil]
2006
+ optional :post_call_transcript,
2007
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript] },
2008
+ nil?: true
2009
+
2010
+ # @!attribute sms_log
2011
+ # Automatic SMS sent after the call (voicemail and after-call), ordered oldest
2012
+ # first. The in-call `send_sms` is excluded — it already appears in the transcript
2013
+ # as a tool call.
2014
+ #
2015
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog>, nil]
2016
+ optional :sms_log,
2017
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog] },
2018
+ nil?: true
2019
+
844
2020
  # @!attribute structured_output
845
2021
  # The data extracted from the call, using the structured output config from the
846
2022
  # parent call object.
@@ -851,14 +2027,14 @@ module Revox
851
2027
  nil?: true
852
2028
 
853
2029
  # @!attribute transcript
854
- # The transcript of the call.
2030
+ # The live transcript of the call, built in real time.
855
2031
  #
856
2032
  # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript>, nil]
857
2033
  optional :transcript,
858
2034
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript] },
859
2035
  nil?: true
860
2036
 
861
- # @!method initialize(id:, answered_at:, dial_error:, ended_at:, phone_number:, recording_url:, result:, started_at:, status:, end_reason: nil, ended_by: nil, structured_output: nil, transcript: nil)
2037
+ # @!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)
862
2038
  # Some parameter documentations has been truncated, see
863
2039
  # {Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt} for more
864
2040
  # details.
@@ -884,13 +2060,19 @@ module Revox
884
2060
  #
885
2061
  # @param status [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Status] The status of the call attempt.
886
2062
  #
887
- # @param end_reason [String, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
2063
+ # @param assistants_used [Array<String>, nil] Assistant node ids entered during this attempt, in traversal order.
2064
+ #
2065
+ # @param end_reason [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EndReason, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
888
2066
  #
889
2067
  # @param ended_by [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EndedBy, nil] Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or 'syst
890
2068
  #
2069
+ # @param post_call_transcript [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript>, nil] Higher-quality transcript generated after the call via Soniox async STT. Null un
2070
+ #
2071
+ # @param sms_log [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog>, nil] Automatic SMS sent after the call (voicemail and after-call), ordered oldest fir
2072
+ #
891
2073
  # @param structured_output [Hash{Symbol=>Object}, nil] The data extracted from the call, using the structured output config from the pa
892
2074
  #
893
- # @param transcript [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript>, nil] The transcript of the call.
2075
+ # @param transcript [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript>, nil] The live transcript of the call, built in real time.
894
2076
 
895
2077
  # The SIP error that occurred.
896
2078
  #
@@ -915,45 +2097,201 @@ module Revox
915
2097
  module Result
916
2098
  extend Revox::Internal::Type::Enum
917
2099
 
918
- IVR = :IVR
919
- VOICEMAIL = :voicemail
920
- HUMAN = :human
921
- UNKNOWN = :unknown
922
- IOS_SCREENING_FILTER = :"ios-screening-filter"
2100
+ IVR = :IVR
2101
+ VOICEMAIL = :voicemail
2102
+ HUMAN = :human
2103
+ UNKNOWN = :unknown
2104
+ IOS_SCREENING_FILTER = :"ios-screening-filter"
2105
+
2106
+ # @!method self.values
2107
+ # @return [Array<Symbol>]
2108
+ end
2109
+
2110
+ # The status of the call attempt.
2111
+ #
2112
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt#status
2113
+ module Status
2114
+ extend Revox::Internal::Type::Enum
2115
+
2116
+ QUEUED = :queued
2117
+ RINGING = :ringing
2118
+ ONGOING = :ongoing
2119
+ COMPLETED = :completed
2120
+ ERROR = :error
2121
+
2122
+ # @!method self.values
2123
+ # @return [Array<Symbol>]
2124
+ end
2125
+
2126
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2127
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
2128
+ #
2129
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt#end_reason
2130
+ module EndReason
2131
+ extend Revox::Internal::Type::Enum
2132
+
2133
+ CLIENT_INITIATED = :client_initiated
2134
+ CONNECTION_TIMEOUT = :connection_timeout
2135
+ HUMAN_TAKEOVER = :human_takeover
2136
+ IVR_NO_NAVIGATE = :ivr_no_navigate
2137
+ MAX_DURATION = :max_duration
2138
+ PARTICIPANT_REMOVED = :participant_removed
2139
+ TOOL_END_CALL = :tool_end_call
2140
+ TRANSFER = :transfer
2141
+ USER_INACTIVE = :user_inactive
2142
+ USER_REJECTED = :user_rejected
2143
+ USER_UNAVAILABLE = :user_unavailable
2144
+ VOICEMAIL = :voicemail
2145
+ SPEED_DIAL_ABANDONED = :speed_dial_abandoned
2146
+ SPEED_DIAL_OPERATOR_MISSED = :speed_dial_operator_missed
2147
+ SPEED_DIAL_TIMEOUT = :speed_dial_timeout
2148
+ SPEED_DIAL_HANGUP = :speed_dial_hangup
2149
+
2150
+ # @!method self.values
2151
+ # @return [Array<Symbol>]
2152
+ end
2153
+
2154
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
2155
+ # 'system' (e.g. max duration limit).
2156
+ #
2157
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt#ended_by
2158
+ module EndedBy
2159
+ extend Revox::Internal::Type::Enum
2160
+
2161
+ AGENT = :agent
2162
+ USER = :user
2163
+ SYSTEM = :system
2164
+
2165
+ # @!method self.values
2166
+ # @return [Array<Symbol>]
2167
+ end
2168
+
2169
+ class PostCallTranscript < Revox::Internal::Type::BaseModel
2170
+ # @!attribute content
2171
+ #
2172
+ # @return [String]
2173
+ required :content, String
2174
+
2175
+ # @!attribute role
2176
+ #
2177
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript::Role]
2178
+ required :role,
2179
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript::Role }
2180
+
2181
+ # @!attribute tool_arguments
2182
+ #
2183
+ # @return [Hash{Symbol=>Object}, String, nil]
2184
+ optional :tool_arguments,
2185
+ union: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript::ToolArguments }
2186
+
2187
+ # @!attribute tool_is_error
2188
+ #
2189
+ # @return [Boolean, nil]
2190
+ optional :tool_is_error, Revox::Internal::Type::Boolean
2191
+
2192
+ # @!attribute tool_name
2193
+ #
2194
+ # @return [String, nil]
2195
+ optional :tool_name, String
2196
+
2197
+ # @!attribute tool_output
2198
+ #
2199
+ # @return [String, nil]
2200
+ optional :tool_output, String
2201
+
2202
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
2203
+ # @param content [String]
2204
+ # @param role [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript::Role]
2205
+ # @param tool_arguments [Hash{Symbol=>Object}, String]
2206
+ # @param tool_is_error [Boolean]
2207
+ # @param tool_name [String]
2208
+ # @param tool_output [String]
2209
+
2210
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript#role
2211
+ module Role
2212
+ extend Revox::Internal::Type::Enum
2213
+
2214
+ USER = :user
2215
+ ASSISTANT = :assistant
2216
+ HUMAN_AGENT = :human_agent
2217
+ TOOL = :tool
2218
+
2219
+ # @!method self.values
2220
+ # @return [Array<Symbol>]
2221
+ end
2222
+
2223
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript#tool_arguments
2224
+ module ToolArguments
2225
+ extend Revox::Internal::Type::Union
2226
+
2227
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::PostCallTranscript::ToolArguments::UnionMember0Map }
2228
+
2229
+ variant String
2230
+
2231
+ # @!method self.variants
2232
+ # @return [Array(Hash{Symbol=>Object}, String)]
2233
+
2234
+ # @type [Revox::Internal::Type::Converter]
2235
+ UnionMember0Map = Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown]
2236
+ end
2237
+ end
2238
+
2239
+ class SMSLog < Revox::Internal::Type::BaseModel
2240
+ # @!attribute id
2241
+ #
2242
+ # @return [String]
2243
+ required :id, String
2244
+
2245
+ # @!attribute created_at
2246
+ # When the SMS was sent.
2247
+ #
2248
+ # @return [Object]
2249
+ required :created_at, Revox::Internal::Type::Unknown
2250
+
2251
+ # @!attribute message_body
2252
+ #
2253
+ # @return [String]
2254
+ required :message_body, String
923
2255
 
924
- # @!method self.values
925
- # @return [Array<Symbol>]
926
- end
2256
+ # @!attribute to_phone_number
2257
+ #
2258
+ # @return [String]
2259
+ required :to_phone_number, String
927
2260
 
928
- # The status of the call attempt.
929
- #
930
- # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt#status
931
- module Status
932
- extend Revox::Internal::Type::Enum
2261
+ # @!attribute twilio_message_sid
2262
+ #
2263
+ # @return [String, nil]
2264
+ required :twilio_message_sid, String, nil?: true
933
2265
 
934
- QUEUED = :queued
935
- RINGING = :ringing
936
- ONGOING = :ongoing
937
- COMPLETED = :completed
938
- ERROR = :error
2266
+ # @!attribute type
2267
+ #
2268
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog::Type]
2269
+ required :type, enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog::Type }
939
2270
 
940
- # @!method self.values
941
- # @return [Array<Symbol>]
942
- end
2271
+ # @!method initialize(id:, created_at:, message_body:, to_phone_number:, twilio_message_sid:, type:)
2272
+ # @param id [String]
2273
+ #
2274
+ # @param created_at [Object] When the SMS was sent.
2275
+ #
2276
+ # @param message_body [String]
2277
+ #
2278
+ # @param to_phone_number [String]
2279
+ #
2280
+ # @param twilio_message_sid [String, nil]
2281
+ #
2282
+ # @param type [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog::Type]
943
2283
 
944
- # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
945
- # 'system' (e.g. max duration limit).
946
- #
947
- # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt#ended_by
948
- module EndedBy
949
- extend Revox::Internal::Type::Enum
2284
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog#type
2285
+ module Type
2286
+ extend Revox::Internal::Type::Enum
950
2287
 
951
- AGENT = :agent
952
- USER = :user
953
- SYSTEM = :system
2288
+ IN_CALL = :in_call
2289
+ VOICEMAIL = :voicemail
2290
+ AFTER_CALL = :after_call
954
2291
 
955
- # @!method self.values
956
- # @return [Array<Symbol>]
2292
+ # @!method self.values
2293
+ # @return [Array<Symbol>]
2294
+ end
957
2295
  end
958
2296
 
959
2297
  class Transcript < Revox::Internal::Type::BaseModel
@@ -984,12 +2322,18 @@ module Revox
984
2322
  # @return [String, nil]
985
2323
  optional :tool_name, String
986
2324
 
987
- # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil)
2325
+ # @!attribute tool_output
2326
+ #
2327
+ # @return [String, nil]
2328
+ optional :tool_output, String
2329
+
2330
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
988
2331
  # @param content [String]
989
2332
  # @param role [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::Role]
990
2333
  # @param tool_arguments [Hash{Symbol=>Object}, String]
991
2334
  # @param tool_is_error [Boolean]
992
2335
  # @param tool_name [String]
2336
+ # @param tool_output [String]
993
2337
 
994
2338
  # @see Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript#role
995
2339
  module Role
@@ -997,6 +2341,7 @@ module Revox
997
2341
 
998
2342
  USER = :user
999
2343
  ASSISTANT = :assistant
2344
+ HUMAN_AGENT = :human_agent
1000
2345
  TOOL = :tool
1001
2346
 
1002
2347
  # @!method self.values
@@ -1022,6 +2367,23 @@ module Revox
1022
2367
 
1023
2368
  # @see Revox::Models::CampaignGetRowsResponse::Row::Call#call_retry_config
1024
2369
  class CallRetryConfig < Revox::Internal::Type::BaseModel
2370
+ # @!attribute allowed_days
2371
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
2372
+ # Monday through Friday.
2373
+ #
2374
+ # @return [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig::AllowedDay>]
2375
+ required :allowed_days,
2376
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig::AllowedDay] }
2377
+
2378
+ # @!attribute call_twice_in_a_row
2379
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
2380
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
2381
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
2382
+ # Default: false.
2383
+ #
2384
+ # @return [Boolean]
2385
+ required :call_twice_in_a_row, Revox::Internal::Type::Boolean
2386
+
1025
2387
  # @!attribute calling_windows
1026
2388
  #
1027
2389
  # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig::CallingWindow>]
@@ -1042,7 +2404,7 @@ module Revox
1042
2404
  # @return [String, nil]
1043
2405
  optional :timezone, String, nil?: true
1044
2406
 
1045
- # @!method initialize(calling_windows:, max_retry_attempts:, timezone: nil)
2407
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
1046
2408
  # Some parameter documentations has been truncated, see
1047
2409
  # {Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig} for more
1048
2410
  # details.
@@ -1050,12 +2412,31 @@ module Revox
1050
2412
  # Configuration for call retry behavior including time windows, delays, and max
1051
2413
  # iterations. If not provided, defaults will be used.
1052
2414
  #
2415
+ # @param allowed_days [Array<Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig::AllowedDay>] Days of the week when calls are allowed, in the recipient's timezone. Default: M
2416
+ #
2417
+ # @param call_twice_in_a_row [Boolean] If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping retr
2418
+ #
1053
2419
  # @param calling_windows [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig::CallingWindow>]
1054
2420
  #
1055
2421
  # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
1056
2422
  #
1057
2423
  # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
1058
2424
 
2425
+ module AllowedDay
2426
+ extend Revox::Internal::Type::Enum
2427
+
2428
+ MONDAY = :monday
2429
+ TUESDAY = :tuesday
2430
+ WEDNESDAY = :wednesday
2431
+ THURSDAY = :thursday
2432
+ FRIDAY = :friday
2433
+ SATURDAY = :saturday
2434
+ SUNDAY = :sunday
2435
+
2436
+ # @!method self.values
2437
+ # @return [Array<Symbol>]
2438
+ end
2439
+
1059
2440
  class CallingWindow < Revox::Internal::Type::BaseModel
1060
2441
  # @!attribute calling_window_end_time
1061
2442
  # End time for the calling window in the recipient's timezone (or
@@ -1109,6 +2490,38 @@ module Revox
1109
2490
  # @param name [String]
1110
2491
  end
1111
2492
 
2493
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call#contact
2494
+ class Contact < Revox::Internal::Type::BaseModel
2495
+ # @!attribute company
2496
+ #
2497
+ # @return [String, nil]
2498
+ required :company, String, nil?: true
2499
+
2500
+ # @!attribute email
2501
+ #
2502
+ # @return [String, nil]
2503
+ required :email, String, nil?: true
2504
+
2505
+ # @!attribute first_name
2506
+ #
2507
+ # @return [String, nil]
2508
+ required :first_name, String, nil?: true
2509
+
2510
+ # @!attribute last_name
2511
+ #
2512
+ # @return [String, nil]
2513
+ required :last_name, String, nil?: true
2514
+
2515
+ # @!method initialize(company:, email:, first_name:, last_name:)
2516
+ # Magic contact variables (prospect identity) extracted from the call's input data
2517
+ # and transcript.
2518
+ #
2519
+ # @param company [String, nil]
2520
+ # @param email [String, nil]
2521
+ # @param first_name [String, nil]
2522
+ # @param last_name [String, nil]
2523
+ end
2524
+
1112
2525
  # Whether the call is inbound or outbound.
1113
2526
  #
1114
2527
  # @see Revox::Models::CampaignGetRowsResponse::Row::Call#direction
@@ -1182,12 +2595,20 @@ module Revox
1182
2595
  # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Status]
1183
2596
  required :status, enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Status }
1184
2597
 
2598
+ # @!attribute assistants_used
2599
+ # Assistant node ids entered during this attempt, in traversal order.
2600
+ #
2601
+ # @return [Array<String>, nil]
2602
+ optional :assistants_used, Revox::Internal::Type::ArrayOf[String], nil?: true
2603
+
1185
2604
  # @!attribute end_reason
1186
2605
  # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
1187
2606
  # 'voicemail', 'transfer', 'ivr_no_navigate'.
1188
2607
  #
1189
- # @return [String, nil]
1190
- optional :end_reason, String, nil?: true
2608
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EndReason, nil]
2609
+ optional :end_reason,
2610
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EndReason },
2611
+ nil?: true
1191
2612
 
1192
2613
  # @!attribute ended_by
1193
2614
  # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
@@ -1198,6 +2619,25 @@ module Revox
1198
2619
  enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EndedBy },
1199
2620
  nil?: true
1200
2621
 
2622
+ # @!attribute post_call_transcript
2623
+ # Higher-quality transcript generated after the call via Soniox async STT. Null
2624
+ # until generated or when no recording is available.
2625
+ #
2626
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript>, nil]
2627
+ optional :post_call_transcript,
2628
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript] },
2629
+ nil?: true
2630
+
2631
+ # @!attribute sms_log
2632
+ # Automatic SMS sent after the call (voicemail and after-call), ordered oldest
2633
+ # first. The in-call `send_sms` is excluded — it already appears in the transcript
2634
+ # as a tool call.
2635
+ #
2636
+ # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog>, nil]
2637
+ optional :sms_log,
2638
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog] },
2639
+ nil?: true
2640
+
1201
2641
  # @!attribute structured_output
1202
2642
  # The data extracted from the call, using the structured output config from the
1203
2643
  # parent call object.
@@ -1208,14 +2648,14 @@ module Revox
1208
2648
  nil?: true
1209
2649
 
1210
2650
  # @!attribute transcript
1211
- # The transcript of the call.
2651
+ # The live transcript of the call, built in real time.
1212
2652
  #
1213
2653
  # @return [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript>, nil]
1214
2654
  optional :transcript,
1215
2655
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript] },
1216
2656
  nil?: true
1217
2657
 
1218
- # @!method initialize(id:, answered_at:, dial_error:, ended_at:, phone_number:, recording_url:, result:, started_at:, status:, end_reason: nil, ended_by: nil, structured_output: nil, transcript: nil)
2658
+ # @!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)
1219
2659
  # Some parameter documentations has been truncated, see
1220
2660
  # {Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt} for more
1221
2661
  # details.
@@ -1241,13 +2681,19 @@ module Revox
1241
2681
  #
1242
2682
  # @param status [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Status] The status of the call attempt.
1243
2683
  #
1244
- # @param end_reason [String, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
2684
+ # @param assistants_used [Array<String>, nil] Assistant node ids entered during this attempt, in traversal order.
2685
+ #
2686
+ # @param end_reason [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EndReason, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
1245
2687
  #
1246
2688
  # @param ended_by [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EndedBy, nil] Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or 'syst
1247
2689
  #
2690
+ # @param post_call_transcript [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript>, nil] Higher-quality transcript generated after the call via Soniox async STT. Null un
2691
+ #
2692
+ # @param sms_log [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog>, nil] Automatic SMS sent after the call (voicemail and after-call), ordered oldest fir
2693
+ #
1248
2694
  # @param structured_output [Hash{Symbol=>Object}, nil] The data extracted from the call, using the structured output config from the pa
1249
2695
  #
1250
- # @param transcript [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript>, nil] The transcript of the call.
2696
+ # @param transcript [Array<Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript>, nil] The live transcript of the call, built in real time.
1251
2697
 
1252
2698
  # The SIP error that occurred.
1253
2699
  #
@@ -1298,6 +2744,34 @@ module Revox
1298
2744
  # @return [Array<Symbol>]
1299
2745
  end
1300
2746
 
2747
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2748
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
2749
+ #
2750
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt#end_reason
2751
+ module EndReason
2752
+ extend Revox::Internal::Type::Enum
2753
+
2754
+ CLIENT_INITIATED = :client_initiated
2755
+ CONNECTION_TIMEOUT = :connection_timeout
2756
+ HUMAN_TAKEOVER = :human_takeover
2757
+ IVR_NO_NAVIGATE = :ivr_no_navigate
2758
+ MAX_DURATION = :max_duration
2759
+ PARTICIPANT_REMOVED = :participant_removed
2760
+ TOOL_END_CALL = :tool_end_call
2761
+ TRANSFER = :transfer
2762
+ USER_INACTIVE = :user_inactive
2763
+ USER_REJECTED = :user_rejected
2764
+ USER_UNAVAILABLE = :user_unavailable
2765
+ VOICEMAIL = :voicemail
2766
+ SPEED_DIAL_ABANDONED = :speed_dial_abandoned
2767
+ SPEED_DIAL_OPERATOR_MISSED = :speed_dial_operator_missed
2768
+ SPEED_DIAL_TIMEOUT = :speed_dial_timeout
2769
+ SPEED_DIAL_HANGUP = :speed_dial_hangup
2770
+
2771
+ # @!method self.values
2772
+ # @return [Array<Symbol>]
2773
+ end
2774
+
1301
2775
  # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
1302
2776
  # 'system' (e.g. max duration limit).
1303
2777
  #
@@ -1313,6 +2787,135 @@ module Revox
1313
2787
  # @return [Array<Symbol>]
1314
2788
  end
1315
2789
 
2790
+ class PostCallTranscript < Revox::Internal::Type::BaseModel
2791
+ # @!attribute content
2792
+ #
2793
+ # @return [String]
2794
+ required :content, String
2795
+
2796
+ # @!attribute role
2797
+ #
2798
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript::Role]
2799
+ required :role,
2800
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript::Role }
2801
+
2802
+ # @!attribute tool_arguments
2803
+ #
2804
+ # @return [Hash{Symbol=>Object}, String, nil]
2805
+ optional :tool_arguments,
2806
+ union: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript::ToolArguments }
2807
+
2808
+ # @!attribute tool_is_error
2809
+ #
2810
+ # @return [Boolean, nil]
2811
+ optional :tool_is_error, Revox::Internal::Type::Boolean
2812
+
2813
+ # @!attribute tool_name
2814
+ #
2815
+ # @return [String, nil]
2816
+ optional :tool_name, String
2817
+
2818
+ # @!attribute tool_output
2819
+ #
2820
+ # @return [String, nil]
2821
+ optional :tool_output, String
2822
+
2823
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
2824
+ # @param content [String]
2825
+ # @param role [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript::Role]
2826
+ # @param tool_arguments [Hash{Symbol=>Object}, String]
2827
+ # @param tool_is_error [Boolean]
2828
+ # @param tool_name [String]
2829
+ # @param tool_output [String]
2830
+
2831
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript#role
2832
+ module Role
2833
+ extend Revox::Internal::Type::Enum
2834
+
2835
+ USER = :user
2836
+ ASSISTANT = :assistant
2837
+ HUMAN_AGENT = :human_agent
2838
+ TOOL = :tool
2839
+
2840
+ # @!method self.values
2841
+ # @return [Array<Symbol>]
2842
+ end
2843
+
2844
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript#tool_arguments
2845
+ module ToolArguments
2846
+ extend Revox::Internal::Type::Union
2847
+
2848
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::PostCallTranscript::ToolArguments::UnionMember0Map }
2849
+
2850
+ variant String
2851
+
2852
+ # @!method self.variants
2853
+ # @return [Array(Hash{Symbol=>Object}, String)]
2854
+
2855
+ # @type [Revox::Internal::Type::Converter]
2856
+ UnionMember0Map = Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown]
2857
+ end
2858
+ end
2859
+
2860
+ class SMSLog < Revox::Internal::Type::BaseModel
2861
+ # @!attribute id
2862
+ #
2863
+ # @return [String]
2864
+ required :id, String
2865
+
2866
+ # @!attribute created_at
2867
+ # When the SMS was sent.
2868
+ #
2869
+ # @return [Object]
2870
+ required :created_at, Revox::Internal::Type::Unknown
2871
+
2872
+ # @!attribute message_body
2873
+ #
2874
+ # @return [String]
2875
+ required :message_body, String
2876
+
2877
+ # @!attribute to_phone_number
2878
+ #
2879
+ # @return [String]
2880
+ required :to_phone_number, String
2881
+
2882
+ # @!attribute twilio_message_sid
2883
+ #
2884
+ # @return [String, nil]
2885
+ required :twilio_message_sid, String, nil?: true
2886
+
2887
+ # @!attribute type
2888
+ #
2889
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog::Type]
2890
+ required :type,
2891
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog::Type }
2892
+
2893
+ # @!method initialize(id:, created_at:, message_body:, to_phone_number:, twilio_message_sid:, type:)
2894
+ # @param id [String]
2895
+ #
2896
+ # @param created_at [Object] When the SMS was sent.
2897
+ #
2898
+ # @param message_body [String]
2899
+ #
2900
+ # @param to_phone_number [String]
2901
+ #
2902
+ # @param twilio_message_sid [String, nil]
2903
+ #
2904
+ # @param type [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog::Type]
2905
+
2906
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog#type
2907
+ module Type
2908
+ extend Revox::Internal::Type::Enum
2909
+
2910
+ IN_CALL = :in_call
2911
+ VOICEMAIL = :voicemail
2912
+ AFTER_CALL = :after_call
2913
+
2914
+ # @!method self.values
2915
+ # @return [Array<Symbol>]
2916
+ end
2917
+ end
2918
+
1316
2919
  class Transcript < Revox::Internal::Type::BaseModel
1317
2920
  # @!attribute content
1318
2921
  #
@@ -1341,12 +2944,18 @@ module Revox
1341
2944
  # @return [String, nil]
1342
2945
  optional :tool_name, String
1343
2946
 
1344
- # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil)
2947
+ # @!attribute tool_output
2948
+ #
2949
+ # @return [String, nil]
2950
+ optional :tool_output, String
2951
+
2952
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
1345
2953
  # @param content [String]
1346
2954
  # @param role [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::Role]
1347
2955
  # @param tool_arguments [Hash{Symbol=>Object}, String]
1348
2956
  # @param tool_is_error [Boolean]
1349
2957
  # @param tool_name [String]
2958
+ # @param tool_output [String]
1350
2959
 
1351
2960
  # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript#role
1352
2961
  module Role
@@ -1354,6 +2963,7 @@ module Revox
1354
2963
 
1355
2964
  USER = :user
1356
2965
  ASSISTANT = :assistant
2966
+ HUMAN_AGENT = :human_agent
1357
2967
  TOOL = :tool
1358
2968
 
1359
2969
  # @!method self.values
@@ -1385,6 +2995,10 @@ module Revox
1385
2995
 
1386
2996
  variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember1 }
1387
2997
 
2998
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember2 }
2999
+
3000
+ variant -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember3 }
3001
+
1388
3002
  class UnionMember0 < Revox::Internal::Type::BaseModel
1389
3003
  # @!attribute name
1390
3004
  #
@@ -1440,8 +3054,92 @@ module Revox
1440
3054
  # @param type [Symbol, :openrouter] Use a model from OpenRouter.
1441
3055
  end
1442
3056
 
3057
+ class UnionMember2 < Revox::Internal::Type::BaseModel
3058
+ # @!attribute api_key
3059
+ # API key sent as Bearer token to the custom endpoint.
3060
+ #
3061
+ # @return [String]
3062
+ required :api_key, String
3063
+
3064
+ # @!attribute api_url
3065
+ # Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
3066
+ #
3067
+ # @return [String]
3068
+ required :api_url, String
3069
+
3070
+ # @!attribute model_name
3071
+ # Model name as expected by the provider, e.g. meta-llama/llama-3-70b
3072
+ #
3073
+ # @return [String]
3074
+ required :model_name, String
3075
+
3076
+ # @!attribute type
3077
+ # OpenAI-compatible chat completions API (bring your own endpoint and key).
3078
+ #
3079
+ # @return [Symbol, :custom]
3080
+ required :type, const: :custom
3081
+
3082
+ # @!method initialize(api_key:, api_url:, model_name:, type: :custom)
3083
+ # @param api_key [String] API key sent as Bearer token to the custom endpoint.
3084
+ #
3085
+ # @param api_url [String] Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
3086
+ #
3087
+ # @param model_name [String] Model name as expected by the provider, e.g. meta-llama/llama-3-70b
3088
+ #
3089
+ # @param type [Symbol, :custom] OpenAI-compatible chat completions API (bring your own endpoint and key).
3090
+ end
3091
+
3092
+ class UnionMember3 < Revox::Internal::Type::BaseModel
3093
+ # @!attribute provider
3094
+ # The provider to use from Realtime. eg: openai, google.
3095
+ #
3096
+ # @return [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember3::Provider]
3097
+ required :provider,
3098
+ enum: -> { Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember3::Provider }
3099
+
3100
+ # @!attribute realtime_model_id
3101
+ # The model ID to use from Realtime. eg: gpt-4.1
3102
+ #
3103
+ # @return [String]
3104
+ required :realtime_model_id, String
3105
+
3106
+ # @!attribute type
3107
+ # Use a model from Realtime.
3108
+ #
3109
+ # @return [Symbol, :realtime]
3110
+ required :type, const: :realtime
3111
+
3112
+ # @!attribute realtime_voice_id
3113
+ # Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
3114
+ #
3115
+ # @return [String, nil]
3116
+ optional :realtime_voice_id, String
3117
+
3118
+ # @!method initialize(provider:, realtime_model_id:, realtime_voice_id: nil, type: :realtime)
3119
+ # @param provider [Symbol, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember3::Provider] The provider to use from Realtime. eg: openai, google.
3120
+ #
3121
+ # @param realtime_model_id [String] The model ID to use from Realtime. eg: gpt-4.1
3122
+ #
3123
+ # @param realtime_voice_id [String] Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
3124
+ #
3125
+ # @param type [Symbol, :realtime] Use a model from Realtime.
3126
+
3127
+ # The provider to use from Realtime. eg: openai, google.
3128
+ #
3129
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember3#provider
3130
+ module Provider
3131
+ extend Revox::Internal::Type::Enum
3132
+
3133
+ OPENAI = :openai
3134
+ GOOGLE = :google
3135
+
3136
+ # @!method self.values
3137
+ # @return [Array<Symbol>]
3138
+ end
3139
+ end
3140
+
1443
3141
  # @!method self.variants
1444
- # @return [Array(Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember1)]
3142
+ # @return [Array(Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember1, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember2, Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember3)]
1445
3143
  end
1446
3144
 
1447
3145
  # The status of the call.
@@ -1453,7 +3151,9 @@ module Revox
1453
3151
  INITIALIZING = :initializing
1454
3152
  QUEUED_FOR_CALLING = :queued_for_calling
1455
3153
  CALLING = :calling
3154
+ POST_PROCESSING = :post_processing
1456
3155
  SCHEDULED = :scheduled
3156
+ PAUSED = :paused
1457
3157
  COMPLETED = :completed
1458
3158
  CANCELLED = :cancelled
1459
3159
  ERRORED = :errored
@@ -1461,6 +3161,24 @@ module Revox
1461
3161
  # @!method self.values
1462
3162
  # @return [Array<Symbol>]
1463
3163
  end
3164
+
3165
+ # Business outcome of the call. Null if not computed or no transcript.
3166
+ #
3167
+ # @see Revox::Models::CampaignGetRowsResponse::Row::Call#outcome
3168
+ module Outcome
3169
+ extend Revox::Internal::Type::Enum
3170
+
3171
+ NOT_INTERESTED = :not_interested
3172
+ INTERESTED = :interested
3173
+ COMPLETED = :completed
3174
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
3175
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
3176
+ DO_NOT_CONTACT = :do_not_contact
3177
+ AI_AVERSE = :ai_averse
3178
+
3179
+ # @!method self.values
3180
+ # @return [Array<Symbol>]
3181
+ end
1464
3182
  end
1465
3183
  end
1466
3184
  end