revox 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +36 -0
- data/README.md +38 -38
- data/lib/revox/client.rb +8 -0
- data/lib/revox/internal/type/base_model.rb +3 -3
- data/lib/revox/models/assistant_clone_params.rb +20 -0
- data/lib/revox/models/assistant_clone_response.rb +1616 -0
- data/lib/revox/models/assistant_create_params.rb +90 -66
- data/lib/revox/models/assistant_create_response.rb +87 -65
- data/lib/revox/models/assistant_list_response.rb +87 -65
- data/lib/revox/models/assistant_retrieve_response.rb +86 -65
- data/lib/revox/models/assistant_update_params.rb +90 -66
- data/lib/revox/models/assistant_update_response.rb +87 -65
- data/lib/revox/models/auth_status_retrieve_params.rb +14 -0
- data/lib/revox/models/auth_status_retrieve_response.rb +17 -0
- data/lib/revox/models/call_cancel_params.rb +20 -0
- data/lib/revox/models/call_cancel_response.rb +16 -0
- data/lib/revox/models/call_create_params.rb +117 -90
- data/lib/revox/models/call_create_response.rb +680 -90
- data/lib/revox/models/call_export_params.rb +203 -0
- data/lib/revox/models/call_export_response.rb +22 -0
- data/lib/revox/models/call_pause_params.rb +20 -0
- data/lib/revox/models/call_pause_response.rb +16 -0
- data/lib/revox/models/call_phone_history_params.rb +14 -0
- data/lib/revox/models/call_phone_history_response.rb +95 -0
- data/lib/revox/models/call_resume_params.rb +20 -0
- data/lib/revox/models/call_resume_response.rb +16 -0
- data/lib/revox/models/call_retrieve_response.rb +681 -90
- data/lib/revox/models/call_search_params.rb +169 -0
- data/lib/revox/models/call_search_response.rb +3694 -0
- data/lib/revox/models/campaign_create_params.rb +7 -57
- data/lib/revox/models/campaign_create_response.rb +108 -119
- data/lib/revox/models/campaign_get_rows_response.rb +682 -90
- data/lib/revox/models/campaign_list_response.rb +108 -119
- data/lib/revox/models/campaign_pause_params.rb +20 -0
- data/lib/revox/models/campaign_pause_response.rb +16 -0
- data/lib/revox/models/campaign_resume_params.rb +20 -0
- data/lib/revox/models/campaign_resume_response.rb +16 -0
- data/lib/revox/models/campaign_retrieve_response.rb +108 -119
- data/lib/revox/models/campaign_statistics_params.rb +20 -0
- data/lib/revox/models/campaign_statistics_response.rb +514 -0
- data/lib/revox/models/campaign_update_params.rb +165 -0
- data/lib/revox/models/campaign_update_response.rb +2019 -0
- data/lib/revox/models/phone_number_delete_params.rb +20 -0
- data/lib/revox/models/phone_number_delete_response.rb +16 -0
- data/lib/revox/models/phone_number_list_params.rb +14 -0
- data/lib/revox/models/phone_number_list_response.rb +1799 -0
- data/lib/revox/models/phone_number_update_params.rb +32 -0
- data/lib/revox/models/phone_number_update_response.rb +1799 -0
- data/lib/revox/models/user_retrieve_params.rb +14 -0
- data/lib/revox/models/user_retrieve_response.rb +99 -0
- data/lib/revox/models/voice_clone_params.rb +78 -0
- data/lib/revox/models/voice_clone_response.rb +40 -0
- data/lib/revox/models/voice_delete_params.rb +20 -0
- data/lib/revox/models/voice_delete_response.rb +16 -0
- data/lib/revox/models/voice_list_response.rb +1 -0
- data/lib/revox/models/voice_preview_params.rb +1 -0
- data/lib/revox/models/voice_retrieve_params.rb +1 -0
- data/lib/revox/models.rb +35 -1
- data/lib/revox/resources/assistants.rb +31 -10
- data/lib/revox/resources/auth_status.rb +32 -0
- data/lib/revox/resources/call.rb +149 -4
- data/lib/revox/resources/campaigns.rb +110 -11
- data/lib/revox/resources/phone_numbers.rb +74 -0
- data/lib/revox/resources/users.rb +17 -3
- data/lib/revox/resources/voices.rb +50 -0
- data/lib/revox/version.rb +1 -1
- data/lib/revox.rb +38 -5
- data/rbi/revox/client.rbi +6 -0
- data/rbi/revox/models/assistant_clone_params.rbi +33 -0
- data/rbi/revox/models/assistant_clone_response.rbi +3351 -0
- data/rbi/revox/models/assistant_create_params.rbi +148 -162
- data/rbi/revox/models/assistant_create_response.rbi +157 -147
- data/rbi/revox/models/assistant_list_response.rbi +157 -147
- data/rbi/revox/models/assistant_retrieve_response.rbi +153 -147
- data/rbi/revox/models/assistant_update_params.rbi +148 -162
- data/rbi/revox/models/assistant_update_response.rbi +157 -147
- data/rbi/revox/models/auth_status_retrieve_params.rbi +27 -0
- data/rbi/revox/models/auth_status_retrieve_response.rbi +30 -0
- data/rbi/revox/models/call_cancel_params.rbi +33 -0
- data/rbi/revox/models/call_cancel_response.rbi +23 -0
- data/rbi/revox/models/call_create_params.rbi +190 -187
- data/rbi/revox/models/call_create_response.rbi +1150 -227
- data/rbi/revox/models/call_export_params.rbi +446 -0
- data/rbi/revox/models/call_export_response.rbi +26 -0
- data/rbi/revox/models/call_pause_params.rbi +31 -0
- data/rbi/revox/models/call_pause_response.rbi +23 -0
- data/rbi/revox/models/call_phone_history_params.rbi +27 -0
- data/rbi/revox/models/call_phone_history_response.rbi +209 -0
- data/rbi/revox/models/call_resume_params.rbi +33 -0
- data/rbi/revox/models/call_resume_response.rbi +23 -0
- data/rbi/revox/models/call_retrieve_response.rbi +1150 -227
- data/rbi/revox/models/call_search_params.rbi +281 -0
- data/rbi/revox/models/call_search_response.rbi +7504 -0
- data/rbi/revox/models/campaign_create_params.rbi +9 -87
- data/rbi/revox/models/campaign_create_response.rbi +188 -266
- data/rbi/revox/models/campaign_get_rows_response.rbi +1150 -225
- data/rbi/revox/models/campaign_list_response.rbi +188 -262
- data/rbi/revox/models/campaign_pause_params.rbi +33 -0
- data/rbi/revox/models/campaign_pause_response.rbi +23 -0
- data/rbi/revox/models/campaign_resume_params.rbi +33 -0
- data/rbi/revox/models/campaign_resume_response.rbi +23 -0
- data/rbi/revox/models/campaign_retrieve_response.rbi +188 -266
- data/rbi/revox/models/campaign_statistics_params.rbi +33 -0
- data/rbi/revox/models/campaign_statistics_response.rbi +1069 -0
- data/rbi/revox/models/campaign_update_params.rbi +313 -0
- data/rbi/revox/models/campaign_update_response.rbi +4092 -0
- data/rbi/revox/models/phone_number_delete_params.rbi +33 -0
- data/rbi/revox/models/phone_number_delete_response.rbi +26 -0
- data/rbi/revox/models/phone_number_list_params.rbi +27 -0
- data/rbi/revox/models/phone_number_list_response.rbi +3690 -0
- data/rbi/revox/models/phone_number_update_params.rbi +53 -0
- data/rbi/revox/models/phone_number_update_response.rbi +3693 -0
- data/rbi/revox/models/user_retrieve_params.rbi +27 -0
- data/rbi/revox/models/user_retrieve_response.rbi +140 -0
- data/rbi/revox/models/voice_clone_params.rbi +141 -0
- data/rbi/revox/models/voice_clone_response.rbi +53 -0
- data/rbi/revox/models/voice_delete_params.rbi +33 -0
- data/rbi/revox/models/voice_delete_response.rbi +23 -0
- data/rbi/revox/models/voice_list_response.rbi +5 -0
- data/rbi/revox/models/voice_preview_params.rbi +2 -0
- data/rbi/revox/models/voice_retrieve_params.rbi +2 -0
- data/rbi/revox/models.rbi +35 -1
- data/rbi/revox/resources/assistants.rbi +52 -22
- data/rbi/revox/resources/auth_status.rbi +21 -0
- data/rbi/revox/resources/call.rbi +114 -4
- data/rbi/revox/resources/campaigns.rbi +77 -15
- data/rbi/revox/resources/phone_numbers.rbi +43 -0
- data/rbi/revox/resources/users.rbi +8 -2
- data/rbi/revox/resources/voices.rbi +39 -0
- data/sig/revox/client.rbs +4 -0
- data/sig/revox/models/assistant_clone_params.rbs +20 -0
- data/sig/revox/models/assistant_clone_response.rbs +1310 -0
- data/sig/revox/models/assistant_create_params.rbs +39 -58
- data/sig/revox/models/assistant_create_response.rbs +46 -54
- data/sig/revox/models/assistant_list_response.rbs +46 -54
- data/sig/revox/models/assistant_retrieve_response.rbs +46 -54
- data/sig/revox/models/assistant_update_params.rbs +39 -58
- data/sig/revox/models/assistant_update_response.rbs +46 -54
- data/sig/revox/models/auth_status_retrieve_params.rbs +15 -0
- data/sig/revox/models/auth_status_retrieve_response.rbs +13 -0
- data/sig/revox/models/call_cancel_params.rbs +20 -0
- data/sig/revox/models/call_cancel_response.rbs +13 -0
- data/sig/revox/models/call_create_params.rbs +50 -71
- data/sig/revox/models/call_create_response.rbs +473 -77
- data/sig/revox/models/call_export_params.rbs +230 -0
- data/sig/revox/models/call_export_response.rbs +15 -0
- data/sig/revox/models/call_pause_params.rbs +20 -0
- data/sig/revox/models/call_pause_response.rbs +13 -0
- data/sig/revox/models/call_phone_history_params.rbs +15 -0
- data/sig/revox/models/call_phone_history_response.rbs +93 -0
- data/sig/revox/models/call_resume_params.rbs +20 -0
- data/sig/revox/models/call_resume_response.rbs +13 -0
- data/sig/revox/models/call_retrieve_response.rbs +473 -77
- data/sig/revox/models/call_search_params.rbs +194 -0
- data/sig/revox/models/call_search_response.rbs +3045 -0
- data/sig/revox/models/campaign_create_params.rbs +5 -50
- data/sig/revox/models/campaign_create_response.rbs +62 -98
- data/sig/revox/models/campaign_get_rows_response.rbs +472 -73
- data/sig/revox/models/campaign_list_response.rbs +62 -98
- data/sig/revox/models/campaign_pause_params.rbs +20 -0
- data/sig/revox/models/campaign_pause_response.rbs +13 -0
- data/sig/revox/models/campaign_resume_params.rbs +20 -0
- data/sig/revox/models/campaign_resume_response.rbs +13 -0
- data/sig/revox/models/campaign_retrieve_response.rbs +62 -98
- data/sig/revox/models/campaign_statistics_params.rbs +20 -0
- data/sig/revox/models/campaign_statistics_response.rbs +489 -0
- data/sig/revox/models/campaign_update_params.rbs +135 -0
- data/sig/revox/models/campaign_update_response.rbs +1658 -0
- data/sig/revox/models/phone_number_delete_params.rbs +20 -0
- data/sig/revox/models/phone_number_delete_response.rbs +13 -0
- data/sig/revox/models/phone_number_list_params.rbs +15 -0
- data/sig/revox/models/phone_number_list_response.rbs +1454 -0
- data/sig/revox/models/phone_number_update_params.rbs +32 -0
- data/sig/revox/models/phone_number_update_response.rbs +1452 -0
- data/sig/revox/models/user_retrieve_params.rbs +14 -0
- data/sig/revox/models/user_retrieve_response.rbs +71 -0
- data/sig/revox/models/voice_clone_params.rbs +79 -0
- data/sig/revox/models/voice_clone_response.rbs +40 -0
- data/sig/revox/models/voice_delete_params.rbs +20 -0
- data/sig/revox/models/voice_delete_response.rbs +13 -0
- data/sig/revox/models/voice_list_response.rbs +2 -1
- data/sig/revox/models/voice_preview_params.rbs +2 -1
- data/sig/revox/models/voice_retrieve_params.rbs +2 -1
- data/sig/revox/models.rbs +35 -1
- data/sig/revox/resources/assistants.rbs +9 -4
- data/sig/revox/resources/auth_status.rbs +11 -0
- data/sig/revox/resources/call.rbs +46 -1
- data/sig/revox/resources/campaigns.rbs +24 -3
- data/sig/revox/resources/phone_numbers.rbs +23 -0
- data/sig/revox/resources/users.rbs +3 -1
- data/sig/revox/resources/voices.rbs +13 -0
- metadata +116 -17
- data/lib/revox/models/users/me_retrieve_params.rb +0 -16
- data/lib/revox/models/users/me_retrieve_response.rb +0 -101
- data/lib/revox/models/users/me_update_params.rb +0 -22
- data/lib/revox/models/users/me_update_response.rb +0 -101
- data/lib/revox/resources/users/me.rb +0 -55
- data/rbi/revox/models/users/me_retrieve_params.rbi +0 -29
- data/rbi/revox/models/users/me_retrieve_response.rbi +0 -149
- data/rbi/revox/models/users/me_update_params.rbi +0 -43
- data/rbi/revox/models/users/me_update_response.rbi +0 -149
- data/rbi/revox/resources/users/me.rbi +0 -33
- data/sig/revox/models/users/me_retrieve_params.rbs +0 -16
- data/sig/revox/models/users/me_retrieve_response.rbs +0 -75
- data/sig/revox/models/users/me_update_params.rbs +0 -28
- data/sig/revox/models/users/me_update_response.rbs +0 -75
- data/sig/revox/resources/users/me.rbs +0 -18
|
@@ -223,6 +223,12 @@ module Revox
|
|
|
223
223
|
sig { returns(T.anything) }
|
|
224
224
|
attr_accessor :updated_at
|
|
225
225
|
|
|
226
|
+
# Extra notification recipients resolved from the agent prompt's own routing
|
|
227
|
+
# rules, when it defines any. Added to the assistant's configured notification
|
|
228
|
+
# recipients; never replaces them. Null when the prompt defines no routing rules.
|
|
229
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
230
|
+
attr_accessor :follow_up_emails
|
|
231
|
+
|
|
226
232
|
# Business outcome of the call. Null if not computed or no transcript.
|
|
227
233
|
sig do
|
|
228
234
|
returns(
|
|
@@ -237,6 +243,13 @@ module Revox
|
|
|
237
243
|
sig { returns(T.nilable(String)) }
|
|
238
244
|
attr_accessor :outcome_summary
|
|
239
245
|
|
|
246
|
+
# Slack channels resolved from the agent prompt's own routing rules, when it
|
|
247
|
+
# defines any. Always a subset of the channels configured on the assistant. Null
|
|
248
|
+
# when the prompt defines no routing rules, in which case every configured channel
|
|
249
|
+
# is notified.
|
|
250
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
251
|
+
attr_accessor :slack_channel_ids
|
|
252
|
+
|
|
240
253
|
# This represent a call "order" that was requested by the user. A call order can
|
|
241
254
|
# be resolved over multiple call attempts spanning up to a few days.
|
|
242
255
|
sig do
|
|
@@ -289,11 +302,13 @@ module Revox
|
|
|
289
302
|
status: Revox::Models::CallCreateResponse::Call::Status::OrSymbol,
|
|
290
303
|
to_phone_number: String,
|
|
291
304
|
updated_at: T.anything,
|
|
305
|
+
follow_up_emails: T.nilable(T::Array[String]),
|
|
292
306
|
outcome:
|
|
293
307
|
T.nilable(
|
|
294
308
|
Revox::Models::CallCreateResponse::Call::Outcome::OrSymbol
|
|
295
309
|
),
|
|
296
|
-
outcome_summary: T.nilable(String)
|
|
310
|
+
outcome_summary: T.nilable(String),
|
|
311
|
+
slack_channel_ids: T.nilable(T::Array[String])
|
|
297
312
|
).returns(T.attached_class)
|
|
298
313
|
end
|
|
299
314
|
def self.new(
|
|
@@ -348,10 +363,19 @@ module Revox
|
|
|
348
363
|
# The time the call order was last updated (any state change, retry, or analysis
|
|
349
364
|
# result).
|
|
350
365
|
updated_at:,
|
|
366
|
+
# Extra notification recipients resolved from the agent prompt's own routing
|
|
367
|
+
# rules, when it defines any. Added to the assistant's configured notification
|
|
368
|
+
# recipients; never replaces them. Null when the prompt defines no routing rules.
|
|
369
|
+
follow_up_emails: nil,
|
|
351
370
|
# Business outcome of the call. Null if not computed or no transcript.
|
|
352
371
|
outcome: nil,
|
|
353
372
|
# LLM explanation for the outcome, when outcome was computed from the transcript.
|
|
354
|
-
outcome_summary: nil
|
|
373
|
+
outcome_summary: nil,
|
|
374
|
+
# Slack channels resolved from the agent prompt's own routing rules, when it
|
|
375
|
+
# defines any. Always a subset of the channels configured on the assistant. Null
|
|
376
|
+
# when the prompt defines no routing rules, in which case every configured channel
|
|
377
|
+
# is notified.
|
|
378
|
+
slack_channel_ids: nil
|
|
355
379
|
)
|
|
356
380
|
end
|
|
357
381
|
|
|
@@ -394,11 +418,13 @@ module Revox
|
|
|
394
418
|
Revox::Models::CallCreateResponse::Call::Status::TaggedSymbol,
|
|
395
419
|
to_phone_number: String,
|
|
396
420
|
updated_at: T.anything,
|
|
421
|
+
follow_up_emails: T.nilable(T::Array[String]),
|
|
397
422
|
outcome:
|
|
398
423
|
T.nilable(
|
|
399
424
|
Revox::Models::CallCreateResponse::Call::Outcome::TaggedSymbol
|
|
400
425
|
),
|
|
401
|
-
outcome_summary: T.nilable(String)
|
|
426
|
+
outcome_summary: T.nilable(String),
|
|
427
|
+
slack_channel_ids: T.nilable(T::Array[String])
|
|
402
428
|
}
|
|
403
429
|
)
|
|
404
430
|
end
|
|
@@ -567,14 +593,6 @@ module Revox
|
|
|
567
593
|
sig { returns(T.nilable(String)) }
|
|
568
594
|
attr_accessor :email_notification_address
|
|
569
595
|
|
|
570
|
-
# The language used for the notification email content. One of "en" or "fr".
|
|
571
|
-
sig do
|
|
572
|
-
returns(
|
|
573
|
-
Revox::Models::CallCreateResponse::Call::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
574
|
-
)
|
|
575
|
-
end
|
|
576
|
-
attr_accessor :email_notification_language
|
|
577
|
-
|
|
578
596
|
# Which call outcomes trigger an email notification. E.g. ["interested",
|
|
579
597
|
# "completed", "none"]. Use "none" when outcome is null.
|
|
580
598
|
sig do
|
|
@@ -610,8 +628,8 @@ module Revox
|
|
|
610
628
|
sig { returns(T.nilable(String)) }
|
|
611
629
|
attr_accessor :from_phone_number
|
|
612
630
|
|
|
613
|
-
# Warm or cold transfer when
|
|
614
|
-
# not configured.
|
|
631
|
+
# Warm or cold transfer when transfer_destinations is non-empty; null when
|
|
632
|
+
# transfer is not configured.
|
|
615
633
|
sig do
|
|
616
634
|
returns(
|
|
617
635
|
T.nilable(
|
|
@@ -674,6 +692,11 @@ module Revox
|
|
|
674
692
|
end
|
|
675
693
|
attr_writer :position
|
|
676
694
|
|
|
695
|
+
# URL fetched before an inbound call is answered to resolve the assistant's prompt
|
|
696
|
+
# variables. Null when no lookup is configured.
|
|
697
|
+
sig { returns(T.nilable(String)) }
|
|
698
|
+
attr_accessor :precall_lookup_url
|
|
699
|
+
|
|
677
700
|
sig { returns(String) }
|
|
678
701
|
attr_accessor :prompt
|
|
679
702
|
|
|
@@ -795,9 +818,18 @@ module Revox
|
|
|
795
818
|
sig { returns(Float) }
|
|
796
819
|
attr_accessor :thinking_sound_volume
|
|
797
820
|
|
|
798
|
-
#
|
|
799
|
-
|
|
800
|
-
|
|
821
|
+
# Where calls can be transferred to when users ask to speak to a human. Null or
|
|
822
|
+
# empty when transfer is not configured.
|
|
823
|
+
sig do
|
|
824
|
+
returns(
|
|
825
|
+
T.nilable(
|
|
826
|
+
T::Array[
|
|
827
|
+
Revox::Models::CallCreateResponse::Call::Assistant::TransferDestination
|
|
828
|
+
]
|
|
829
|
+
)
|
|
830
|
+
)
|
|
831
|
+
end
|
|
832
|
+
attr_accessor :transfer_destinations
|
|
801
833
|
|
|
802
834
|
sig do
|
|
803
835
|
returns(
|
|
@@ -907,6 +939,12 @@ module Revox
|
|
|
907
939
|
end
|
|
908
940
|
attr_writer :faq_items
|
|
909
941
|
|
|
942
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
943
|
+
attr_reader :is_inbound_receptionist
|
|
944
|
+
|
|
945
|
+
sig { params(is_inbound_receptionist: T::Boolean).void }
|
|
946
|
+
attr_writer :is_inbound_receptionist
|
|
947
|
+
|
|
910
948
|
sig { returns(T.nilable(T::Boolean)) }
|
|
911
949
|
attr_reader :is_realestate_assistant
|
|
912
950
|
|
|
@@ -951,8 +989,6 @@ module Revox
|
|
|
951
989
|
]
|
|
952
990
|
),
|
|
953
991
|
email_notification_address: T.nilable(String),
|
|
954
|
-
email_notification_language:
|
|
955
|
-
Revox::Models::CallCreateResponse::Call::Assistant::EmailNotificationLanguage::OrSymbol,
|
|
956
992
|
email_notification_outcomes:
|
|
957
993
|
T.nilable(
|
|
958
994
|
T::Array[
|
|
@@ -986,6 +1022,7 @@ module Revox
|
|
|
986
1022
|
T.nilable(
|
|
987
1023
|
Revox::Models::CallCreateResponse::Call::Assistant::Position::OrHash
|
|
988
1024
|
),
|
|
1025
|
+
precall_lookup_url: T.nilable(String),
|
|
989
1026
|
prompt: String,
|
|
990
1027
|
prompt_flow:
|
|
991
1028
|
T.nilable(
|
|
@@ -1016,7 +1053,12 @@ module Revox
|
|
|
1016
1053
|
),
|
|
1017
1054
|
thinking_sound_probability: Float,
|
|
1018
1055
|
thinking_sound_volume: Float,
|
|
1019
|
-
|
|
1056
|
+
transfer_destinations:
|
|
1057
|
+
T.nilable(
|
|
1058
|
+
T::Array[
|
|
1059
|
+
Revox::Models::CallCreateResponse::Call::Assistant::TransferDestination::OrHash
|
|
1060
|
+
]
|
|
1061
|
+
),
|
|
1020
1062
|
type:
|
|
1021
1063
|
Revox::Models::CallCreateResponse::Call::Assistant::Type::OrSymbol,
|
|
1022
1064
|
updated_at: T.anything,
|
|
@@ -1040,6 +1082,7 @@ module Revox
|
|
|
1040
1082
|
T::Array[
|
|
1041
1083
|
Revox::Models::CallCreateResponse::Call::Assistant::FaqItem::OrHash
|
|
1042
1084
|
],
|
|
1085
|
+
is_inbound_receptionist: T::Boolean,
|
|
1043
1086
|
is_realestate_assistant: T::Boolean,
|
|
1044
1087
|
pending_faq_count: Float
|
|
1045
1088
|
).returns(T.attached_class)
|
|
@@ -1068,8 +1111,6 @@ module Revox
|
|
|
1068
1111
|
# outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
|
|
1069
1112
|
# bob@y.com").
|
|
1070
1113
|
email_notification_address:,
|
|
1071
|
-
# The language used for the notification email content. One of "en" or "fr".
|
|
1072
|
-
email_notification_language:,
|
|
1073
1114
|
# Which call outcomes trigger an email notification. E.g. ["interested",
|
|
1074
1115
|
# "completed", "none"]. Use "none" when outcome is null.
|
|
1075
1116
|
email_notification_outcomes:,
|
|
@@ -1081,8 +1122,8 @@ module Revox
|
|
|
1081
1122
|
# Override the default outbound phone number for calls placed with this assistant.
|
|
1082
1123
|
# When null, the organization's default phone number is used.
|
|
1083
1124
|
from_phone_number:,
|
|
1084
|
-
# Warm or cold transfer when
|
|
1085
|
-
# not configured.
|
|
1125
|
+
# Warm or cold transfer when transfer_destinations is non-empty; null when
|
|
1126
|
+
# transfer is not configured.
|
|
1086
1127
|
human_transfer_mode:,
|
|
1087
1128
|
# Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
|
|
1088
1129
|
# skip turns to navigate phone menus.
|
|
@@ -1101,6 +1142,9 @@ module Revox
|
|
|
1101
1142
|
name:,
|
|
1102
1143
|
organization_id:,
|
|
1103
1144
|
position:,
|
|
1145
|
+
# URL fetched before an inbound call is answered to resolve the assistant's prompt
|
|
1146
|
+
# variables. Null when no lookup is configured.
|
|
1147
|
+
precall_lookup_url:,
|
|
1104
1148
|
prompt:,
|
|
1105
1149
|
prompt_flow:,
|
|
1106
1150
|
slack:,
|
|
@@ -1132,8 +1176,9 @@ module Revox
|
|
|
1132
1176
|
thinking_sound_probability:,
|
|
1133
1177
|
# Volume of the thinking sound (0 = silent, 1 = max).
|
|
1134
1178
|
thinking_sound_volume:,
|
|
1135
|
-
#
|
|
1136
|
-
|
|
1179
|
+
# Where calls can be transferred to when users ask to speak to a human. Null or
|
|
1180
|
+
# empty when transfer is not configured.
|
|
1181
|
+
transfer_destinations:,
|
|
1137
1182
|
type:,
|
|
1138
1183
|
updated_at:,
|
|
1139
1184
|
voice:,
|
|
@@ -1152,6 +1197,7 @@ module Revox
|
|
|
1152
1197
|
# The user who created the assistant.
|
|
1153
1198
|
created_by: nil,
|
|
1154
1199
|
faq_items: nil,
|
|
1200
|
+
is_inbound_receptionist: nil,
|
|
1155
1201
|
is_realestate_assistant: nil,
|
|
1156
1202
|
pending_faq_count: nil
|
|
1157
1203
|
)
|
|
@@ -1190,8 +1236,6 @@ module Revox
|
|
|
1190
1236
|
]
|
|
1191
1237
|
),
|
|
1192
1238
|
email_notification_address: T.nilable(String),
|
|
1193
|
-
email_notification_language:
|
|
1194
|
-
Revox::Models::CallCreateResponse::Call::Assistant::EmailNotificationLanguage::TaggedSymbol,
|
|
1195
1239
|
email_notification_outcomes:
|
|
1196
1240
|
T.nilable(
|
|
1197
1241
|
T::Array[
|
|
@@ -1220,6 +1264,7 @@ module Revox
|
|
|
1220
1264
|
T.nilable(
|
|
1221
1265
|
Revox::Models::CallCreateResponse::Call::Assistant::Position
|
|
1222
1266
|
),
|
|
1267
|
+
precall_lookup_url: T.nilable(String),
|
|
1223
1268
|
prompt: String,
|
|
1224
1269
|
prompt_flow:
|
|
1225
1270
|
T.nilable(
|
|
@@ -1250,7 +1295,12 @@ module Revox
|
|
|
1250
1295
|
),
|
|
1251
1296
|
thinking_sound_probability: Float,
|
|
1252
1297
|
thinking_sound_volume: Float,
|
|
1253
|
-
|
|
1298
|
+
transfer_destinations:
|
|
1299
|
+
T.nilable(
|
|
1300
|
+
T::Array[
|
|
1301
|
+
Revox::Models::CallCreateResponse::Call::Assistant::TransferDestination
|
|
1302
|
+
]
|
|
1303
|
+
),
|
|
1254
1304
|
type:
|
|
1255
1305
|
Revox::Models::CallCreateResponse::Call::Assistant::Type::TaggedSymbol,
|
|
1256
1306
|
updated_at: T.anything,
|
|
@@ -1274,6 +1324,7 @@ module Revox
|
|
|
1274
1324
|
T::Array[
|
|
1275
1325
|
Revox::Models::CallCreateResponse::Call::Assistant::FaqItem
|
|
1276
1326
|
],
|
|
1327
|
+
is_inbound_receptionist: T::Boolean,
|
|
1277
1328
|
is_realestate_assistant: T::Boolean,
|
|
1278
1329
|
pending_faq_count: Float
|
|
1279
1330
|
}
|
|
@@ -1314,21 +1365,6 @@ module Revox
|
|
|
1314
1365
|
:requested_callback_later,
|
|
1315
1366
|
Revox::Models::CallCreateResponse::Call::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1316
1367
|
)
|
|
1317
|
-
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
1318
|
-
T.let(
|
|
1319
|
-
:requested_callback_new_number,
|
|
1320
|
-
Revox::Models::CallCreateResponse::Call::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1321
|
-
)
|
|
1322
|
-
DO_NOT_CONTACT =
|
|
1323
|
-
T.let(
|
|
1324
|
-
:do_not_contact,
|
|
1325
|
-
Revox::Models::CallCreateResponse::Call::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1326
|
-
)
|
|
1327
|
-
AI_AVERSE =
|
|
1328
|
-
T.let(
|
|
1329
|
-
:ai_averse,
|
|
1330
|
-
Revox::Models::CallCreateResponse::Call::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1331
|
-
)
|
|
1332
1368
|
NONE =
|
|
1333
1369
|
T.let(
|
|
1334
1370
|
:none,
|
|
@@ -1597,7 +1633,8 @@ module Revox
|
|
|
1597
1633
|
sig { returns(String) }
|
|
1598
1634
|
attr_accessor :calling_window_start_time
|
|
1599
1635
|
|
|
1600
|
-
# Delay between retry attempts in seconds.
|
|
1636
|
+
# Delay between retry attempts in seconds. 0 retries as soon as the calling window
|
|
1637
|
+
# allows. Default: 7200 (2 hours).
|
|
1601
1638
|
sig { returns(Integer) }
|
|
1602
1639
|
attr_accessor :retry_delay_seconds
|
|
1603
1640
|
|
|
@@ -1617,7 +1654,8 @@ module Revox
|
|
|
1617
1654
|
# timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
|
|
1618
1655
|
# Examples: '09:00', '10am'. Default: '10:00'.
|
|
1619
1656
|
calling_window_start_time:,
|
|
1620
|
-
# Delay between retry attempts in seconds.
|
|
1657
|
+
# Delay between retry attempts in seconds. 0 retries as soon as the calling window
|
|
1658
|
+
# allows. Default: 7200 (2 hours).
|
|
1621
1659
|
retry_delay_seconds:
|
|
1622
1660
|
)
|
|
1623
1661
|
end
|
|
@@ -2004,41 +2042,6 @@ module Revox
|
|
|
2004
2042
|
end
|
|
2005
2043
|
end
|
|
2006
2044
|
|
|
2007
|
-
# The language used for the notification email content. One of "en" or "fr".
|
|
2008
|
-
module EmailNotificationLanguage
|
|
2009
|
-
extend Revox::Internal::Type::Enum
|
|
2010
|
-
|
|
2011
|
-
TaggedSymbol =
|
|
2012
|
-
T.type_alias do
|
|
2013
|
-
T.all(
|
|
2014
|
-
Symbol,
|
|
2015
|
-
Revox::Models::CallCreateResponse::Call::Assistant::EmailNotificationLanguage
|
|
2016
|
-
)
|
|
2017
|
-
end
|
|
2018
|
-
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
2019
|
-
|
|
2020
|
-
EN =
|
|
2021
|
-
T.let(
|
|
2022
|
-
:en,
|
|
2023
|
-
Revox::Models::CallCreateResponse::Call::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
2024
|
-
)
|
|
2025
|
-
FR =
|
|
2026
|
-
T.let(
|
|
2027
|
-
:fr,
|
|
2028
|
-
Revox::Models::CallCreateResponse::Call::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
2029
|
-
)
|
|
2030
|
-
|
|
2031
|
-
sig do
|
|
2032
|
-
override.returns(
|
|
2033
|
-
T::Array[
|
|
2034
|
-
Revox::Models::CallCreateResponse::Call::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
2035
|
-
]
|
|
2036
|
-
)
|
|
2037
|
-
end
|
|
2038
|
-
def self.values
|
|
2039
|
-
end
|
|
2040
|
-
end
|
|
2041
|
-
|
|
2042
2045
|
module EmailNotificationOutcome
|
|
2043
2046
|
extend Revox::Internal::Type::Enum
|
|
2044
2047
|
|
|
@@ -2071,21 +2074,6 @@ module Revox
|
|
|
2071
2074
|
:requested_callback_later,
|
|
2072
2075
|
Revox::Models::CallCreateResponse::Call::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2073
2076
|
)
|
|
2074
|
-
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
2075
|
-
T.let(
|
|
2076
|
-
:requested_callback_new_number,
|
|
2077
|
-
Revox::Models::CallCreateResponse::Call::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2078
|
-
)
|
|
2079
|
-
DO_NOT_CONTACT =
|
|
2080
|
-
T.let(
|
|
2081
|
-
:do_not_contact,
|
|
2082
|
-
Revox::Models::CallCreateResponse::Call::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2083
|
-
)
|
|
2084
|
-
AI_AVERSE =
|
|
2085
|
-
T.let(
|
|
2086
|
-
:ai_averse,
|
|
2087
|
-
Revox::Models::CallCreateResponse::Call::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2088
|
-
)
|
|
2089
2077
|
NONE =
|
|
2090
2078
|
T.let(
|
|
2091
2079
|
:none,
|
|
@@ -2142,8 +2130,8 @@ module Revox
|
|
|
2142
2130
|
end
|
|
2143
2131
|
end
|
|
2144
2132
|
|
|
2145
|
-
# Warm or cold transfer when
|
|
2146
|
-
# not configured.
|
|
2133
|
+
# Warm or cold transfer when transfer_destinations is non-empty; null when
|
|
2134
|
+
# transfer is not configured.
|
|
2147
2135
|
module HumanTransferMode
|
|
2148
2136
|
extend Revox::Internal::Type::Enum
|
|
2149
2137
|
|
|
@@ -2741,9 +2729,17 @@ module Revox
|
|
|
2741
2729
|
)
|
|
2742
2730
|
end
|
|
2743
2731
|
|
|
2744
|
-
# The Slack
|
|
2745
|
-
|
|
2746
|
-
|
|
2732
|
+
# The Slack channels eligible to receive the notification. When more than one is
|
|
2733
|
+
# configured, the agent prompt may define routing rules to narrow it down per
|
|
2734
|
+
# call; with no such rules every channel here is notified.
|
|
2735
|
+
sig do
|
|
2736
|
+
returns(
|
|
2737
|
+
T::Array[
|
|
2738
|
+
Revox::Models::CallCreateResponse::Call::Assistant::Slack::Channel
|
|
2739
|
+
]
|
|
2740
|
+
)
|
|
2741
|
+
end
|
|
2742
|
+
attr_accessor :channels
|
|
2747
2743
|
|
|
2748
2744
|
# The Nango connection ID linking the org's Slack workspace to Revox.
|
|
2749
2745
|
sig { returns(String) }
|
|
@@ -2760,45 +2756,43 @@ module Revox
|
|
|
2760
2756
|
end
|
|
2761
2757
|
attr_accessor :outcomes
|
|
2762
2758
|
|
|
2763
|
-
# Human-readable Slack channel name, cached for display in the UI.
|
|
2764
|
-
sig { returns(T.nilable(String)) }
|
|
2765
|
-
attr_accessor :channel_name
|
|
2766
|
-
|
|
2767
2759
|
# Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
|
|
2768
2760
|
# {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
|
|
2769
|
-
# {{last_name}}, {{email}}, {{company}}, {{
|
|
2770
|
-
# prompt_variables and structured_output keys. When
|
|
2771
|
-
# is used.
|
|
2761
|
+
# {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
|
|
2762
|
+
# {{contact_line}}, plus prompt_variables and structured_output keys. When
|
|
2763
|
+
# null/empty a default template is used.
|
|
2772
2764
|
sig { returns(T.nilable(String)) }
|
|
2773
2765
|
attr_accessor :template
|
|
2774
2766
|
|
|
2775
2767
|
sig do
|
|
2776
2768
|
params(
|
|
2777
|
-
|
|
2769
|
+
channels:
|
|
2770
|
+
T::Array[
|
|
2771
|
+
Revox::Models::CallCreateResponse::Call::Assistant::Slack::Channel::OrHash
|
|
2772
|
+
],
|
|
2778
2773
|
connection_id: String,
|
|
2779
2774
|
outcomes:
|
|
2780
2775
|
T::Array[
|
|
2781
2776
|
Revox::Models::CallCreateResponse::Call::Assistant::Slack::Outcome::OrSymbol
|
|
2782
2777
|
],
|
|
2783
|
-
channel_name: T.nilable(String),
|
|
2784
2778
|
template: T.nilable(String)
|
|
2785
2779
|
).returns(T.attached_class)
|
|
2786
2780
|
end
|
|
2787
2781
|
def self.new(
|
|
2788
|
-
# The Slack
|
|
2789
|
-
|
|
2782
|
+
# The Slack channels eligible to receive the notification. When more than one is
|
|
2783
|
+
# configured, the agent prompt may define routing rules to narrow it down per
|
|
2784
|
+
# call; with no such rules every channel here is notified.
|
|
2785
|
+
channels:,
|
|
2790
2786
|
# The Nango connection ID linking the org's Slack workspace to Revox.
|
|
2791
2787
|
connection_id:,
|
|
2792
2788
|
# Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
|
|
2793
2789
|
# Use 'none' to notify when outcome is null.
|
|
2794
2790
|
outcomes:,
|
|
2795
|
-
# Human-readable Slack channel name, cached for display in the UI.
|
|
2796
|
-
channel_name: nil,
|
|
2797
2791
|
# Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
|
|
2798
2792
|
# {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
|
|
2799
|
-
# {{last_name}}, {{email}}, {{company}}, {{
|
|
2800
|
-
# prompt_variables and structured_output keys. When
|
|
2801
|
-
# is used.
|
|
2793
|
+
# {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
|
|
2794
|
+
# {{contact_line}}, plus prompt_variables and structured_output keys. When
|
|
2795
|
+
# null/empty a default template is used.
|
|
2802
2796
|
template: nil
|
|
2803
2797
|
)
|
|
2804
2798
|
end
|
|
@@ -2806,13 +2800,15 @@ module Revox
|
|
|
2806
2800
|
sig do
|
|
2807
2801
|
override.returns(
|
|
2808
2802
|
{
|
|
2809
|
-
|
|
2803
|
+
channels:
|
|
2804
|
+
T::Array[
|
|
2805
|
+
Revox::Models::CallCreateResponse::Call::Assistant::Slack::Channel
|
|
2806
|
+
],
|
|
2810
2807
|
connection_id: String,
|
|
2811
2808
|
outcomes:
|
|
2812
2809
|
T::Array[
|
|
2813
2810
|
Revox::Models::CallCreateResponse::Call::Assistant::Slack::Outcome::TaggedSymbol
|
|
2814
2811
|
],
|
|
2815
|
-
channel_name: T.nilable(String),
|
|
2816
2812
|
template: T.nilable(String)
|
|
2817
2813
|
}
|
|
2818
2814
|
)
|
|
@@ -2820,6 +2816,43 @@ module Revox
|
|
|
2820
2816
|
def to_hash
|
|
2821
2817
|
end
|
|
2822
2818
|
|
|
2819
|
+
class Channel < Revox::Internal::Type::BaseModel
|
|
2820
|
+
OrHash =
|
|
2821
|
+
T.type_alias do
|
|
2822
|
+
T.any(
|
|
2823
|
+
Revox::Models::CallCreateResponse::Call::Assistant::Slack::Channel,
|
|
2824
|
+
Revox::Internal::AnyHash
|
|
2825
|
+
)
|
|
2826
|
+
end
|
|
2827
|
+
|
|
2828
|
+
# The Slack channel ID (e.g. 'C01234567').
|
|
2829
|
+
sig { returns(String) }
|
|
2830
|
+
attr_accessor :id
|
|
2831
|
+
|
|
2832
|
+
# Human-readable Slack channel name, cached for display in the UI and given to the
|
|
2833
|
+
# LLM when the agent prompt routes by channel name.
|
|
2834
|
+
sig { returns(T.nilable(String)) }
|
|
2835
|
+
attr_accessor :name
|
|
2836
|
+
|
|
2837
|
+
sig do
|
|
2838
|
+
params(id: String, name: T.nilable(String)).returns(
|
|
2839
|
+
T.attached_class
|
|
2840
|
+
)
|
|
2841
|
+
end
|
|
2842
|
+
def self.new(
|
|
2843
|
+
# The Slack channel ID (e.g. 'C01234567').
|
|
2844
|
+
id:,
|
|
2845
|
+
# Human-readable Slack channel name, cached for display in the UI and given to the
|
|
2846
|
+
# LLM when the agent prompt routes by channel name.
|
|
2847
|
+
name: nil
|
|
2848
|
+
)
|
|
2849
|
+
end
|
|
2850
|
+
|
|
2851
|
+
sig { override.returns({ id: String, name: T.nilable(String) }) }
|
|
2852
|
+
def to_hash
|
|
2853
|
+
end
|
|
2854
|
+
end
|
|
2855
|
+
|
|
2823
2856
|
module Outcome
|
|
2824
2857
|
extend Revox::Internal::Type::Enum
|
|
2825
2858
|
|
|
@@ -2852,21 +2885,6 @@ module Revox
|
|
|
2852
2885
|
:requested_callback_later,
|
|
2853
2886
|
Revox::Models::CallCreateResponse::Call::Assistant::Slack::Outcome::TaggedSymbol
|
|
2854
2887
|
)
|
|
2855
|
-
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
2856
|
-
T.let(
|
|
2857
|
-
:requested_callback_new_number,
|
|
2858
|
-
Revox::Models::CallCreateResponse::Call::Assistant::Slack::Outcome::TaggedSymbol
|
|
2859
|
-
)
|
|
2860
|
-
DO_NOT_CONTACT =
|
|
2861
|
-
T.let(
|
|
2862
|
-
:do_not_contact,
|
|
2863
|
-
Revox::Models::CallCreateResponse::Call::Assistant::Slack::Outcome::TaggedSymbol
|
|
2864
|
-
)
|
|
2865
|
-
AI_AVERSE =
|
|
2866
|
-
T.let(
|
|
2867
|
-
:ai_averse,
|
|
2868
|
-
Revox::Models::CallCreateResponse::Call::Assistant::Slack::Outcome::TaggedSymbol
|
|
2869
|
-
)
|
|
2870
2888
|
NONE =
|
|
2871
2889
|
T.let(
|
|
2872
2890
|
:none,
|
|
@@ -3181,6 +3199,34 @@ module Revox
|
|
|
3181
3199
|
end
|
|
3182
3200
|
end
|
|
3183
3201
|
|
|
3202
|
+
class TransferDestination < Revox::Internal::Type::BaseModel
|
|
3203
|
+
OrHash =
|
|
3204
|
+
T.type_alias do
|
|
3205
|
+
T.any(
|
|
3206
|
+
Revox::Models::CallCreateResponse::Call::Assistant::TransferDestination,
|
|
3207
|
+
Revox::Internal::AnyHash
|
|
3208
|
+
)
|
|
3209
|
+
end
|
|
3210
|
+
|
|
3211
|
+
sig { returns(String) }
|
|
3212
|
+
attr_accessor :label
|
|
3213
|
+
|
|
3214
|
+
sig { returns(String) }
|
|
3215
|
+
attr_accessor :phone_number
|
|
3216
|
+
|
|
3217
|
+
sig do
|
|
3218
|
+
params(label: String, phone_number: String).returns(
|
|
3219
|
+
T.attached_class
|
|
3220
|
+
)
|
|
3221
|
+
end
|
|
3222
|
+
def self.new(label:, phone_number:)
|
|
3223
|
+
end
|
|
3224
|
+
|
|
3225
|
+
sig { override.returns({ label: String, phone_number: String }) }
|
|
3226
|
+
def to_hash
|
|
3227
|
+
end
|
|
3228
|
+
end
|
|
3229
|
+
|
|
3184
3230
|
module Type
|
|
3185
3231
|
extend Revox::Internal::Type::Enum
|
|
3186
3232
|
|
|
@@ -3261,7 +3307,7 @@ module Revox
|
|
|
3261
3307
|
attr_writer :model
|
|
3262
3308
|
|
|
3263
3309
|
# The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
|
|
3264
|
-
# 0.7–1.2. Default is 1.0.
|
|
3310
|
+
# 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
|
|
3265
3311
|
sig { returns(T.nilable(Float)) }
|
|
3266
3312
|
attr_reader :speed
|
|
3267
3313
|
|
|
@@ -3296,7 +3342,7 @@ module Revox
|
|
|
3296
3342
|
# for other providers.
|
|
3297
3343
|
model: nil,
|
|
3298
3344
|
# The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
|
|
3299
|
-
# 0.7–1.2. Default is 1.0.
|
|
3345
|
+
# 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
|
|
3300
3346
|
speed: nil,
|
|
3301
3347
|
# Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
|
|
3302
3348
|
# providers.
|
|
@@ -3343,6 +3389,11 @@ module Revox
|
|
|
3343
3389
|
:elevenlabs,
|
|
3344
3390
|
Revox::Models::CallCreateResponse::Call::Assistant::Voice::Provider::TaggedSymbol
|
|
3345
3391
|
)
|
|
3392
|
+
GRADIUM =
|
|
3393
|
+
T.let(
|
|
3394
|
+
:gradium,
|
|
3395
|
+
Revox::Models::CallCreateResponse::Call::Assistant::Voice::Provider::TaggedSymbol
|
|
3396
|
+
)
|
|
3346
3397
|
|
|
3347
3398
|
sig do
|
|
3348
3399
|
override.returns(
|
|
@@ -3573,21 +3624,6 @@ module Revox
|
|
|
3573
3624
|
:requested_callback_later,
|
|
3574
3625
|
Revox::Models::CallCreateResponse::Call::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3575
3626
|
)
|
|
3576
|
-
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
3577
|
-
T.let(
|
|
3578
|
-
:requested_callback_new_number,
|
|
3579
|
-
Revox::Models::CallCreateResponse::Call::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3580
|
-
)
|
|
3581
|
-
DO_NOT_CONTACT =
|
|
3582
|
-
T.let(
|
|
3583
|
-
:do_not_contact,
|
|
3584
|
-
Revox::Models::CallCreateResponse::Call::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3585
|
-
)
|
|
3586
|
-
AI_AVERSE =
|
|
3587
|
-
T.let(
|
|
3588
|
-
:ai_averse,
|
|
3589
|
-
Revox::Models::CallCreateResponse::Call::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3590
|
-
)
|
|
3591
3627
|
NONE =
|
|
3592
3628
|
T.let(
|
|
3593
3629
|
:none,
|
|
@@ -3805,6 +3841,37 @@ module Revox
|
|
|
3805
3841
|
sig { returns(T.anything) }
|
|
3806
3842
|
attr_accessor :ended_at
|
|
3807
3843
|
|
|
3844
|
+
# Whether the AI agent conducted the conversation on this attempt. False for a
|
|
3845
|
+
# silent speed-dial probe (whose agent only detects a human) and for attempts that
|
|
3846
|
+
# were never answered.
|
|
3847
|
+
sig { returns(T::Boolean) }
|
|
3848
|
+
attr_accessor :handled_by_ai
|
|
3849
|
+
|
|
3850
|
+
# Whether a human operator conducted (part of) this attempt — a jump-in takeover
|
|
3851
|
+
# or a speed-dial operator connection (both stamp human_takeover_at).
|
|
3852
|
+
sig { returns(T::Boolean) }
|
|
3853
|
+
attr_accessor :handled_by_human
|
|
3854
|
+
|
|
3855
|
+
# The team member responsible for following up on this call.
|
|
3856
|
+
sig do
|
|
3857
|
+
returns(
|
|
3858
|
+
T.nilable(
|
|
3859
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::HandledByUser
|
|
3860
|
+
)
|
|
3861
|
+
)
|
|
3862
|
+
end
|
|
3863
|
+
attr_reader :handled_by_user
|
|
3864
|
+
|
|
3865
|
+
sig do
|
|
3866
|
+
params(
|
|
3867
|
+
handled_by_user:
|
|
3868
|
+
T.nilable(
|
|
3869
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::HandledByUser::OrHash
|
|
3870
|
+
)
|
|
3871
|
+
).void
|
|
3872
|
+
end
|
|
3873
|
+
attr_writer :handled_by_user
|
|
3874
|
+
|
|
3808
3875
|
# The phone number that was called. Formatted in E.164 format. Example:
|
|
3809
3876
|
# +1234567890
|
|
3810
3877
|
sig { returns(String) }
|
|
@@ -3839,6 +3906,19 @@ module Revox
|
|
|
3839
3906
|
sig { returns(T.nilable(T::Array[String])) }
|
|
3840
3907
|
attr_accessor :assistants_used
|
|
3841
3908
|
|
|
3909
|
+
# Notification emails sent in connection with the call, ordered oldest first
|
|
3910
|
+
# (from/to addresses, subject, sent time).
|
|
3911
|
+
sig do
|
|
3912
|
+
returns(
|
|
3913
|
+
T.nilable(
|
|
3914
|
+
T::Array[
|
|
3915
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::EmailLog
|
|
3916
|
+
]
|
|
3917
|
+
)
|
|
3918
|
+
)
|
|
3919
|
+
end
|
|
3920
|
+
attr_accessor :email_log
|
|
3921
|
+
|
|
3842
3922
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
3843
3923
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
3844
3924
|
sig do
|
|
@@ -3888,6 +3968,20 @@ module Revox
|
|
|
3888
3968
|
end
|
|
3889
3969
|
attr_accessor :sms_log
|
|
3890
3970
|
|
|
3971
|
+
# Per-turn speech segments (VAD-derived) with timing and pipeline latencies,
|
|
3972
|
+
# ordered by started_speaking_at_ms. Empty for calls recorded before this was
|
|
3973
|
+
# tracked or for realtime sessions that don't emit them.
|
|
3974
|
+
sig do
|
|
3975
|
+
returns(
|
|
3976
|
+
T.nilable(
|
|
3977
|
+
T::Array[
|
|
3978
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SpeechEvent
|
|
3979
|
+
]
|
|
3980
|
+
)
|
|
3981
|
+
)
|
|
3982
|
+
end
|
|
3983
|
+
attr_accessor :speech_events
|
|
3984
|
+
|
|
3891
3985
|
# The data extracted from the call, using the structured output config from the
|
|
3892
3986
|
# parent call object.
|
|
3893
3987
|
sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
|
|
@@ -3916,6 +4010,12 @@ module Revox
|
|
|
3916
4010
|
Revox::Models::CallCreateResponse::Call::CallAttempt::DialError::OrSymbol
|
|
3917
4011
|
),
|
|
3918
4012
|
ended_at: T.anything,
|
|
4013
|
+
handled_by_ai: T::Boolean,
|
|
4014
|
+
handled_by_human: T::Boolean,
|
|
4015
|
+
handled_by_user:
|
|
4016
|
+
T.nilable(
|
|
4017
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::HandledByUser::OrHash
|
|
4018
|
+
),
|
|
3919
4019
|
phone_number: String,
|
|
3920
4020
|
recording_url: T.nilable(String),
|
|
3921
4021
|
result:
|
|
@@ -3926,6 +4026,12 @@ module Revox
|
|
|
3926
4026
|
status:
|
|
3927
4027
|
Revox::Models::CallCreateResponse::Call::CallAttempt::Status::OrSymbol,
|
|
3928
4028
|
assistants_used: T.nilable(T::Array[String]),
|
|
4029
|
+
email_log:
|
|
4030
|
+
T.nilable(
|
|
4031
|
+
T::Array[
|
|
4032
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::EmailLog::OrHash
|
|
4033
|
+
]
|
|
4034
|
+
),
|
|
3929
4035
|
end_reason:
|
|
3930
4036
|
T.nilable(
|
|
3931
4037
|
Revox::Models::CallCreateResponse::Call::CallAttempt::EndReason::OrSymbol
|
|
@@ -3946,6 +4052,12 @@ module Revox
|
|
|
3946
4052
|
Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog::OrHash
|
|
3947
4053
|
]
|
|
3948
4054
|
),
|
|
4055
|
+
speech_events:
|
|
4056
|
+
T.nilable(
|
|
4057
|
+
T::Array[
|
|
4058
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SpeechEvent::OrHash
|
|
4059
|
+
]
|
|
4060
|
+
),
|
|
3949
4061
|
structured_output: T.nilable(T::Hash[Symbol, T.anything]),
|
|
3950
4062
|
transcript:
|
|
3951
4063
|
T.nilable(
|
|
@@ -3964,6 +4076,15 @@ module Revox
|
|
|
3964
4076
|
dial_error:,
|
|
3965
4077
|
# The time the call ended.
|
|
3966
4078
|
ended_at:,
|
|
4079
|
+
# Whether the AI agent conducted the conversation on this attempt. False for a
|
|
4080
|
+
# silent speed-dial probe (whose agent only detects a human) and for attempts that
|
|
4081
|
+
# were never answered.
|
|
4082
|
+
handled_by_ai:,
|
|
4083
|
+
# Whether a human operator conducted (part of) this attempt — a jump-in takeover
|
|
4084
|
+
# or a speed-dial operator connection (both stamp human_takeover_at).
|
|
4085
|
+
handled_by_human:,
|
|
4086
|
+
# The team member responsible for following up on this call.
|
|
4087
|
+
handled_by_user:,
|
|
3967
4088
|
# The phone number that was called. Formatted in E.164 format. Example:
|
|
3968
4089
|
# +1234567890
|
|
3969
4090
|
phone_number:,
|
|
@@ -3976,6 +4097,9 @@ module Revox
|
|
|
3976
4097
|
status:,
|
|
3977
4098
|
# Assistant node ids entered during this attempt, in traversal order.
|
|
3978
4099
|
assistants_used: nil,
|
|
4100
|
+
# Notification emails sent in connection with the call, ordered oldest first
|
|
4101
|
+
# (from/to addresses, subject, sent time).
|
|
4102
|
+
email_log: nil,
|
|
3979
4103
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
3980
4104
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
3981
4105
|
end_reason: nil,
|
|
@@ -3989,6 +4113,10 @@ module Revox
|
|
|
3989
4113
|
# first. The in-call `send_sms` is excluded — it already appears in the transcript
|
|
3990
4114
|
# as a tool call.
|
|
3991
4115
|
sms_log: nil,
|
|
4116
|
+
# Per-turn speech segments (VAD-derived) with timing and pipeline latencies,
|
|
4117
|
+
# ordered by started_speaking_at_ms. Empty for calls recorded before this was
|
|
4118
|
+
# tracked or for realtime sessions that don't emit them.
|
|
4119
|
+
speech_events: nil,
|
|
3992
4120
|
# The data extracted from the call, using the structured output config from the
|
|
3993
4121
|
# parent call object.
|
|
3994
4122
|
structured_output: nil,
|
|
@@ -4007,6 +4135,12 @@ module Revox
|
|
|
4007
4135
|
Revox::Models::CallCreateResponse::Call::CallAttempt::DialError::TaggedSymbol
|
|
4008
4136
|
),
|
|
4009
4137
|
ended_at: T.anything,
|
|
4138
|
+
handled_by_ai: T::Boolean,
|
|
4139
|
+
handled_by_human: T::Boolean,
|
|
4140
|
+
handled_by_user:
|
|
4141
|
+
T.nilable(
|
|
4142
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::HandledByUser
|
|
4143
|
+
),
|
|
4010
4144
|
phone_number: String,
|
|
4011
4145
|
recording_url: T.nilable(String),
|
|
4012
4146
|
result:
|
|
@@ -4017,6 +4151,12 @@ module Revox
|
|
|
4017
4151
|
status:
|
|
4018
4152
|
Revox::Models::CallCreateResponse::Call::CallAttempt::Status::TaggedSymbol,
|
|
4019
4153
|
assistants_used: T.nilable(T::Array[String]),
|
|
4154
|
+
email_log:
|
|
4155
|
+
T.nilable(
|
|
4156
|
+
T::Array[
|
|
4157
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::EmailLog
|
|
4158
|
+
]
|
|
4159
|
+
),
|
|
4020
4160
|
end_reason:
|
|
4021
4161
|
T.nilable(
|
|
4022
4162
|
Revox::Models::CallCreateResponse::Call::CallAttempt::EndReason::TaggedSymbol
|
|
@@ -4037,6 +4177,12 @@ module Revox
|
|
|
4037
4177
|
Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog
|
|
4038
4178
|
]
|
|
4039
4179
|
),
|
|
4180
|
+
speech_events:
|
|
4181
|
+
T.nilable(
|
|
4182
|
+
T::Array[
|
|
4183
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SpeechEvent
|
|
4184
|
+
]
|
|
4185
|
+
),
|
|
4040
4186
|
structured_output: T.nilable(T::Hash[Symbol, T.anything]),
|
|
4041
4187
|
transcript:
|
|
4042
4188
|
T.nilable(
|
|
@@ -4115,52 +4261,106 @@ module Revox
|
|
|
4115
4261
|
end
|
|
4116
4262
|
end
|
|
4117
4263
|
|
|
4118
|
-
|
|
4119
|
-
|
|
4120
|
-
|
|
4121
|
-
TaggedSymbol =
|
|
4264
|
+
class HandledByUser < Revox::Internal::Type::BaseModel
|
|
4265
|
+
OrHash =
|
|
4122
4266
|
T.type_alias do
|
|
4123
|
-
T.
|
|
4124
|
-
|
|
4125
|
-
Revox::
|
|
4267
|
+
T.any(
|
|
4268
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::HandledByUser,
|
|
4269
|
+
Revox::Internal::AnyHash
|
|
4126
4270
|
)
|
|
4127
4271
|
end
|
|
4128
|
-
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
4129
4272
|
|
|
4130
|
-
|
|
4131
|
-
|
|
4132
|
-
|
|
4133
|
-
Revox::Models::CallCreateResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4134
|
-
)
|
|
4135
|
-
VOICEMAIL =
|
|
4136
|
-
T.let(
|
|
4137
|
-
:voicemail,
|
|
4138
|
-
Revox::Models::CallCreateResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4139
|
-
)
|
|
4140
|
-
HUMAN =
|
|
4141
|
-
T.let(
|
|
4142
|
-
:human,
|
|
4143
|
-
Revox::Models::CallCreateResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4144
|
-
)
|
|
4145
|
-
UNKNOWN =
|
|
4146
|
-
T.let(
|
|
4147
|
-
:unknown,
|
|
4148
|
-
Revox::Models::CallCreateResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4149
|
-
)
|
|
4150
|
-
IOS_SCREENING_FILTER =
|
|
4151
|
-
T.let(
|
|
4152
|
-
:"ios-screening-filter",
|
|
4153
|
-
Revox::Models::CallCreateResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4154
|
-
)
|
|
4273
|
+
# The database user id of the assignee.
|
|
4274
|
+
sig { returns(String) }
|
|
4275
|
+
attr_accessor :id
|
|
4155
4276
|
|
|
4156
|
-
sig
|
|
4157
|
-
|
|
4158
|
-
|
|
4159
|
-
|
|
4160
|
-
|
|
4161
|
-
|
|
4162
|
-
|
|
4163
|
-
|
|
4277
|
+
sig { returns(String) }
|
|
4278
|
+
attr_accessor :email
|
|
4279
|
+
|
|
4280
|
+
sig { returns(T.nilable(String)) }
|
|
4281
|
+
attr_accessor :first_name
|
|
4282
|
+
|
|
4283
|
+
sig { returns(T.nilable(String)) }
|
|
4284
|
+
attr_accessor :last_name
|
|
4285
|
+
|
|
4286
|
+
# The team member responsible for following up on this call.
|
|
4287
|
+
sig do
|
|
4288
|
+
params(
|
|
4289
|
+
id: String,
|
|
4290
|
+
email: String,
|
|
4291
|
+
first_name: T.nilable(String),
|
|
4292
|
+
last_name: T.nilable(String)
|
|
4293
|
+
).returns(T.attached_class)
|
|
4294
|
+
end
|
|
4295
|
+
def self.new(
|
|
4296
|
+
# The database user id of the assignee.
|
|
4297
|
+
id:,
|
|
4298
|
+
email:,
|
|
4299
|
+
first_name:,
|
|
4300
|
+
last_name:
|
|
4301
|
+
)
|
|
4302
|
+
end
|
|
4303
|
+
|
|
4304
|
+
sig do
|
|
4305
|
+
override.returns(
|
|
4306
|
+
{
|
|
4307
|
+
id: String,
|
|
4308
|
+
email: String,
|
|
4309
|
+
first_name: T.nilable(String),
|
|
4310
|
+
last_name: T.nilable(String)
|
|
4311
|
+
}
|
|
4312
|
+
)
|
|
4313
|
+
end
|
|
4314
|
+
def to_hash
|
|
4315
|
+
end
|
|
4316
|
+
end
|
|
4317
|
+
|
|
4318
|
+
module Result
|
|
4319
|
+
extend Revox::Internal::Type::Enum
|
|
4320
|
+
|
|
4321
|
+
TaggedSymbol =
|
|
4322
|
+
T.type_alias do
|
|
4323
|
+
T.all(
|
|
4324
|
+
Symbol,
|
|
4325
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::Result
|
|
4326
|
+
)
|
|
4327
|
+
end
|
|
4328
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
4329
|
+
|
|
4330
|
+
IVR =
|
|
4331
|
+
T.let(
|
|
4332
|
+
:IVR,
|
|
4333
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4334
|
+
)
|
|
4335
|
+
VOICEMAIL =
|
|
4336
|
+
T.let(
|
|
4337
|
+
:voicemail,
|
|
4338
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4339
|
+
)
|
|
4340
|
+
HUMAN =
|
|
4341
|
+
T.let(
|
|
4342
|
+
:human,
|
|
4343
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4344
|
+
)
|
|
4345
|
+
UNKNOWN =
|
|
4346
|
+
T.let(
|
|
4347
|
+
:unknown,
|
|
4348
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4349
|
+
)
|
|
4350
|
+
IOS_SCREENING_FILTER =
|
|
4351
|
+
T.let(
|
|
4352
|
+
:"ios-screening-filter",
|
|
4353
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4354
|
+
)
|
|
4355
|
+
|
|
4356
|
+
sig do
|
|
4357
|
+
override.returns(
|
|
4358
|
+
T::Array[
|
|
4359
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4360
|
+
]
|
|
4361
|
+
)
|
|
4362
|
+
end
|
|
4363
|
+
def self.values
|
|
4164
4364
|
end
|
|
4165
4365
|
end
|
|
4166
4366
|
|
|
@@ -4214,6 +4414,71 @@ module Revox
|
|
|
4214
4414
|
end
|
|
4215
4415
|
end
|
|
4216
4416
|
|
|
4417
|
+
class EmailLog < Revox::Internal::Type::BaseModel
|
|
4418
|
+
OrHash =
|
|
4419
|
+
T.type_alias do
|
|
4420
|
+
T.any(
|
|
4421
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::EmailLog,
|
|
4422
|
+
Revox::Internal::AnyHash
|
|
4423
|
+
)
|
|
4424
|
+
end
|
|
4425
|
+
|
|
4426
|
+
sig { returns(String) }
|
|
4427
|
+
attr_accessor :id
|
|
4428
|
+
|
|
4429
|
+
# When the email was sent.
|
|
4430
|
+
sig { returns(T.anything) }
|
|
4431
|
+
attr_accessor :created_at
|
|
4432
|
+
|
|
4433
|
+
sig { returns(String) }
|
|
4434
|
+
attr_accessor :from_address
|
|
4435
|
+
|
|
4436
|
+
sig { returns(T.nilable(String)) }
|
|
4437
|
+
attr_accessor :resend_message_id
|
|
4438
|
+
|
|
4439
|
+
sig { returns(String) }
|
|
4440
|
+
attr_accessor :subject
|
|
4441
|
+
|
|
4442
|
+
sig { returns(T::Array[String]) }
|
|
4443
|
+
attr_accessor :to_emails
|
|
4444
|
+
|
|
4445
|
+
sig do
|
|
4446
|
+
params(
|
|
4447
|
+
id: String,
|
|
4448
|
+
created_at: T.anything,
|
|
4449
|
+
from_address: String,
|
|
4450
|
+
resend_message_id: T.nilable(String),
|
|
4451
|
+
subject: String,
|
|
4452
|
+
to_emails: T::Array[String]
|
|
4453
|
+
).returns(T.attached_class)
|
|
4454
|
+
end
|
|
4455
|
+
def self.new(
|
|
4456
|
+
id:,
|
|
4457
|
+
# When the email was sent.
|
|
4458
|
+
created_at:,
|
|
4459
|
+
from_address:,
|
|
4460
|
+
resend_message_id:,
|
|
4461
|
+
subject:,
|
|
4462
|
+
to_emails:
|
|
4463
|
+
)
|
|
4464
|
+
end
|
|
4465
|
+
|
|
4466
|
+
sig do
|
|
4467
|
+
override.returns(
|
|
4468
|
+
{
|
|
4469
|
+
id: String,
|
|
4470
|
+
created_at: T.anything,
|
|
4471
|
+
from_address: String,
|
|
4472
|
+
resend_message_id: T.nilable(String),
|
|
4473
|
+
subject: String,
|
|
4474
|
+
to_emails: T::Array[String]
|
|
4475
|
+
}
|
|
4476
|
+
)
|
|
4477
|
+
end
|
|
4478
|
+
def to_hash
|
|
4479
|
+
end
|
|
4480
|
+
end
|
|
4481
|
+
|
|
4217
4482
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
4218
4483
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
4219
4484
|
module EndReason
|
|
@@ -4541,11 +4806,18 @@ module Revox
|
|
|
4541
4806
|
sig { returns(String) }
|
|
4542
4807
|
attr_accessor :message_body
|
|
4543
4808
|
|
|
4544
|
-
sig
|
|
4545
|
-
|
|
4809
|
+
sig do
|
|
4810
|
+
returns(
|
|
4811
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog::Provider::TaggedSymbol
|
|
4812
|
+
)
|
|
4813
|
+
end
|
|
4814
|
+
attr_accessor :provider
|
|
4546
4815
|
|
|
4547
4816
|
sig { returns(T.nilable(String)) }
|
|
4548
|
-
attr_accessor :
|
|
4817
|
+
attr_accessor :provider_message_id
|
|
4818
|
+
|
|
4819
|
+
sig { returns(String) }
|
|
4820
|
+
attr_accessor :to_phone_number
|
|
4549
4821
|
|
|
4550
4822
|
sig do
|
|
4551
4823
|
returns(
|
|
@@ -4559,8 +4831,10 @@ module Revox
|
|
|
4559
4831
|
id: String,
|
|
4560
4832
|
created_at: T.anything,
|
|
4561
4833
|
message_body: String,
|
|
4834
|
+
provider:
|
|
4835
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog::Provider::OrSymbol,
|
|
4836
|
+
provider_message_id: T.nilable(String),
|
|
4562
4837
|
to_phone_number: String,
|
|
4563
|
-
twilio_message_sid: T.nilable(String),
|
|
4564
4838
|
type:
|
|
4565
4839
|
Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog::Type::OrSymbol
|
|
4566
4840
|
).returns(T.attached_class)
|
|
@@ -4570,8 +4844,9 @@ module Revox
|
|
|
4570
4844
|
# When the SMS was sent.
|
|
4571
4845
|
created_at:,
|
|
4572
4846
|
message_body:,
|
|
4847
|
+
provider:,
|
|
4848
|
+
provider_message_id:,
|
|
4573
4849
|
to_phone_number:,
|
|
4574
|
-
twilio_message_sid:,
|
|
4575
4850
|
type:
|
|
4576
4851
|
)
|
|
4577
4852
|
end
|
|
@@ -4582,8 +4857,10 @@ module Revox
|
|
|
4582
4857
|
id: String,
|
|
4583
4858
|
created_at: T.anything,
|
|
4584
4859
|
message_body: String,
|
|
4860
|
+
provider:
|
|
4861
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog::Provider::TaggedSymbol,
|
|
4862
|
+
provider_message_id: T.nilable(String),
|
|
4585
4863
|
to_phone_number: String,
|
|
4586
|
-
twilio_message_sid: T.nilable(String),
|
|
4587
4864
|
type:
|
|
4588
4865
|
Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog::Type::TaggedSymbol
|
|
4589
4866
|
}
|
|
@@ -4592,6 +4869,40 @@ module Revox
|
|
|
4592
4869
|
def to_hash
|
|
4593
4870
|
end
|
|
4594
4871
|
|
|
4872
|
+
module Provider
|
|
4873
|
+
extend Revox::Internal::Type::Enum
|
|
4874
|
+
|
|
4875
|
+
TaggedSymbol =
|
|
4876
|
+
T.type_alias do
|
|
4877
|
+
T.all(
|
|
4878
|
+
Symbol,
|
|
4879
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog::Provider
|
|
4880
|
+
)
|
|
4881
|
+
end
|
|
4882
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
4883
|
+
|
|
4884
|
+
TWILIO =
|
|
4885
|
+
T.let(
|
|
4886
|
+
:twilio,
|
|
4887
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog::Provider::TaggedSymbol
|
|
4888
|
+
)
|
|
4889
|
+
VONAGE =
|
|
4890
|
+
T.let(
|
|
4891
|
+
:vonage,
|
|
4892
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog::Provider::TaggedSymbol
|
|
4893
|
+
)
|
|
4894
|
+
|
|
4895
|
+
sig do
|
|
4896
|
+
override.returns(
|
|
4897
|
+
T::Array[
|
|
4898
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog::Provider::TaggedSymbol
|
|
4899
|
+
]
|
|
4900
|
+
)
|
|
4901
|
+
end
|
|
4902
|
+
def self.values
|
|
4903
|
+
end
|
|
4904
|
+
end
|
|
4905
|
+
|
|
4595
4906
|
module Type
|
|
4596
4907
|
extend Revox::Internal::Type::Enum
|
|
4597
4908
|
|
|
@@ -4632,6 +4943,176 @@ module Revox
|
|
|
4632
4943
|
end
|
|
4633
4944
|
end
|
|
4634
4945
|
|
|
4946
|
+
class SpeechEvent < Revox::Internal::Type::BaseModel
|
|
4947
|
+
OrHash =
|
|
4948
|
+
T.type_alias do
|
|
4949
|
+
T.any(
|
|
4950
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SpeechEvent,
|
|
4951
|
+
Revox::Internal::AnyHash
|
|
4952
|
+
)
|
|
4953
|
+
end
|
|
4954
|
+
|
|
4955
|
+
sig { returns(String) }
|
|
4956
|
+
attr_accessor :id
|
|
4957
|
+
|
|
4958
|
+
# False when the segment was flagged as noise/blip rather than a meaningful turn.
|
|
4959
|
+
sig { returns(T::Boolean) }
|
|
4960
|
+
attr_accessor :is_real_turn
|
|
4961
|
+
|
|
4962
|
+
# Agent-only: despite the name, the whole prompt the LLM was given for this turn —
|
|
4963
|
+
# system instructions plus conversation history — as JSON.
|
|
4964
|
+
sig { returns(T.nilable(String)) }
|
|
4965
|
+
attr_accessor :llm_system_prompt
|
|
4966
|
+
|
|
4967
|
+
# Agent-only: LLM time-to-first-token for the reply, in ms.
|
|
4968
|
+
sig { returns(T.nilable(Float)) }
|
|
4969
|
+
attr_accessor :llm_ttft_ms
|
|
4970
|
+
|
|
4971
|
+
# Agent-only: the model that produced the reply — the winning leg when the LLM is
|
|
4972
|
+
# a race, which is also the model `llm_ttft_ms` describes.
|
|
4973
|
+
sig { returns(T.nilable(String)) }
|
|
4974
|
+
attr_accessor :llm_winner_model
|
|
4975
|
+
|
|
4976
|
+
# Who was speaking during this segment.
|
|
4977
|
+
sig do
|
|
4978
|
+
returns(
|
|
4979
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
4980
|
+
)
|
|
4981
|
+
end
|
|
4982
|
+
attr_accessor :speaker
|
|
4983
|
+
|
|
4984
|
+
# Milliseconds since session start when speech began.
|
|
4985
|
+
sig { returns(Float) }
|
|
4986
|
+
attr_accessor :started_speaking_at_ms
|
|
4987
|
+
|
|
4988
|
+
# Milliseconds since session start when speech ended. Null when the session ended
|
|
4989
|
+
# before the turn closed.
|
|
4990
|
+
sig { returns(T.nilable(Float)) }
|
|
4991
|
+
attr_accessor :stopped_speaking_at_ms
|
|
4992
|
+
|
|
4993
|
+
# User-only: time from end-of-speech to final transcript, in ms.
|
|
4994
|
+
sig { returns(T.nilable(Float)) }
|
|
4995
|
+
attr_accessor :stt_transcription_delay_ms
|
|
4996
|
+
|
|
4997
|
+
# Recognized text for this segment, when available.
|
|
4998
|
+
sig { returns(T.nilable(String)) }
|
|
4999
|
+
attr_accessor :transcript
|
|
5000
|
+
|
|
5001
|
+
# Agent-only: TTS time-to-first-audio-byte for the reply, in ms.
|
|
5002
|
+
sig { returns(T.nilable(Float)) }
|
|
5003
|
+
attr_accessor :tts_ttfb_ms
|
|
5004
|
+
|
|
5005
|
+
# Agent-only: true when the agent's audio was interrupted (real or auto-resumed).
|
|
5006
|
+
# Null on user segments.
|
|
5007
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
5008
|
+
attr_accessor :was_cut
|
|
5009
|
+
|
|
5010
|
+
sig do
|
|
5011
|
+
params(
|
|
5012
|
+
id: String,
|
|
5013
|
+
is_real_turn: T::Boolean,
|
|
5014
|
+
llm_system_prompt: T.nilable(String),
|
|
5015
|
+
llm_ttft_ms: T.nilable(Float),
|
|
5016
|
+
llm_winner_model: T.nilable(String),
|
|
5017
|
+
speaker:
|
|
5018
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SpeechEvent::Speaker::OrSymbol,
|
|
5019
|
+
started_speaking_at_ms: Float,
|
|
5020
|
+
stopped_speaking_at_ms: T.nilable(Float),
|
|
5021
|
+
stt_transcription_delay_ms: T.nilable(Float),
|
|
5022
|
+
transcript: T.nilable(String),
|
|
5023
|
+
tts_ttfb_ms: T.nilable(Float),
|
|
5024
|
+
was_cut: T.nilable(T::Boolean)
|
|
5025
|
+
).returns(T.attached_class)
|
|
5026
|
+
end
|
|
5027
|
+
def self.new(
|
|
5028
|
+
id:,
|
|
5029
|
+
# False when the segment was flagged as noise/blip rather than a meaningful turn.
|
|
5030
|
+
is_real_turn:,
|
|
5031
|
+
# Agent-only: despite the name, the whole prompt the LLM was given for this turn —
|
|
5032
|
+
# system instructions plus conversation history — as JSON.
|
|
5033
|
+
llm_system_prompt:,
|
|
5034
|
+
# Agent-only: LLM time-to-first-token for the reply, in ms.
|
|
5035
|
+
llm_ttft_ms:,
|
|
5036
|
+
# Agent-only: the model that produced the reply — the winning leg when the LLM is
|
|
5037
|
+
# a race, which is also the model `llm_ttft_ms` describes.
|
|
5038
|
+
llm_winner_model:,
|
|
5039
|
+
# Who was speaking during this segment.
|
|
5040
|
+
speaker:,
|
|
5041
|
+
# Milliseconds since session start when speech began.
|
|
5042
|
+
started_speaking_at_ms:,
|
|
5043
|
+
# Milliseconds since session start when speech ended. Null when the session ended
|
|
5044
|
+
# before the turn closed.
|
|
5045
|
+
stopped_speaking_at_ms:,
|
|
5046
|
+
# User-only: time from end-of-speech to final transcript, in ms.
|
|
5047
|
+
stt_transcription_delay_ms:,
|
|
5048
|
+
# Recognized text for this segment, when available.
|
|
5049
|
+
transcript:,
|
|
5050
|
+
# Agent-only: TTS time-to-first-audio-byte for the reply, in ms.
|
|
5051
|
+
tts_ttfb_ms:,
|
|
5052
|
+
# Agent-only: true when the agent's audio was interrupted (real or auto-resumed).
|
|
5053
|
+
# Null on user segments.
|
|
5054
|
+
was_cut:
|
|
5055
|
+
)
|
|
5056
|
+
end
|
|
5057
|
+
|
|
5058
|
+
sig do
|
|
5059
|
+
override.returns(
|
|
5060
|
+
{
|
|
5061
|
+
id: String,
|
|
5062
|
+
is_real_turn: T::Boolean,
|
|
5063
|
+
llm_system_prompt: T.nilable(String),
|
|
5064
|
+
llm_ttft_ms: T.nilable(Float),
|
|
5065
|
+
llm_winner_model: T.nilable(String),
|
|
5066
|
+
speaker:
|
|
5067
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SpeechEvent::Speaker::TaggedSymbol,
|
|
5068
|
+
started_speaking_at_ms: Float,
|
|
5069
|
+
stopped_speaking_at_ms: T.nilable(Float),
|
|
5070
|
+
stt_transcription_delay_ms: T.nilable(Float),
|
|
5071
|
+
transcript: T.nilable(String),
|
|
5072
|
+
tts_ttfb_ms: T.nilable(Float),
|
|
5073
|
+
was_cut: T.nilable(T::Boolean)
|
|
5074
|
+
}
|
|
5075
|
+
)
|
|
5076
|
+
end
|
|
5077
|
+
def to_hash
|
|
5078
|
+
end
|
|
5079
|
+
|
|
5080
|
+
# Who was speaking during this segment.
|
|
5081
|
+
module Speaker
|
|
5082
|
+
extend Revox::Internal::Type::Enum
|
|
5083
|
+
|
|
5084
|
+
TaggedSymbol =
|
|
5085
|
+
T.type_alias do
|
|
5086
|
+
T.all(
|
|
5087
|
+
Symbol,
|
|
5088
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SpeechEvent::Speaker
|
|
5089
|
+
)
|
|
5090
|
+
end
|
|
5091
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
5092
|
+
|
|
5093
|
+
USER =
|
|
5094
|
+
T.let(
|
|
5095
|
+
:user,
|
|
5096
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
5097
|
+
)
|
|
5098
|
+
AGENT =
|
|
5099
|
+
T.let(
|
|
5100
|
+
:agent,
|
|
5101
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
5102
|
+
)
|
|
5103
|
+
|
|
5104
|
+
sig do
|
|
5105
|
+
override.returns(
|
|
5106
|
+
T::Array[
|
|
5107
|
+
Revox::Models::CallCreateResponse::Call::CallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
5108
|
+
]
|
|
5109
|
+
)
|
|
5110
|
+
end
|
|
5111
|
+
def self.values
|
|
5112
|
+
end
|
|
5113
|
+
end
|
|
5114
|
+
end
|
|
5115
|
+
|
|
4635
5116
|
class Transcript < Revox::Internal::Type::BaseModel
|
|
4636
5117
|
OrHash =
|
|
4637
5118
|
T.type_alias do
|
|
@@ -4976,7 +5457,8 @@ module Revox
|
|
|
4976
5457
|
sig { returns(String) }
|
|
4977
5458
|
attr_accessor :calling_window_start_time
|
|
4978
5459
|
|
|
4979
|
-
# Delay between retry attempts in seconds.
|
|
5460
|
+
# Delay between retry attempts in seconds. 0 retries as soon as the calling window
|
|
5461
|
+
# allows. Default: 7200 (2 hours).
|
|
4980
5462
|
sig { returns(Integer) }
|
|
4981
5463
|
attr_accessor :retry_delay_seconds
|
|
4982
5464
|
|
|
@@ -4996,7 +5478,8 @@ module Revox
|
|
|
4996
5478
|
# timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
|
|
4997
5479
|
# Examples: '09:00', '10am'. Default: '10:00'.
|
|
4998
5480
|
calling_window_start_time:,
|
|
4999
|
-
# Delay between retry attempts in seconds.
|
|
5481
|
+
# Delay between retry attempts in seconds. 0 retries as soon as the calling window
|
|
5482
|
+
# allows. Default: 7200 (2 hours).
|
|
5000
5483
|
retry_delay_seconds:
|
|
5001
5484
|
)
|
|
5002
5485
|
end
|
|
@@ -5057,6 +5540,9 @@ module Revox
|
|
|
5057
5540
|
sig { returns(T.nilable(String)) }
|
|
5058
5541
|
attr_accessor :first_name
|
|
5059
5542
|
|
|
5543
|
+
sig { returns(T.nilable(String)) }
|
|
5544
|
+
attr_accessor :job_title
|
|
5545
|
+
|
|
5060
5546
|
sig { returns(T.nilable(String)) }
|
|
5061
5547
|
attr_accessor :last_name
|
|
5062
5548
|
|
|
@@ -5067,10 +5553,11 @@ module Revox
|
|
|
5067
5553
|
company: T.nilable(String),
|
|
5068
5554
|
email: T.nilable(String),
|
|
5069
5555
|
first_name: T.nilable(String),
|
|
5556
|
+
job_title: T.nilable(String),
|
|
5070
5557
|
last_name: T.nilable(String)
|
|
5071
5558
|
).returns(T.attached_class)
|
|
5072
5559
|
end
|
|
5073
|
-
def self.new(company:, email:, first_name:, last_name:)
|
|
5560
|
+
def self.new(company:, email:, first_name:, job_title:, last_name:)
|
|
5074
5561
|
end
|
|
5075
5562
|
|
|
5076
5563
|
sig do
|
|
@@ -5079,6 +5566,7 @@ module Revox
|
|
|
5079
5566
|
company: T.nilable(String),
|
|
5080
5567
|
email: T.nilable(String),
|
|
5081
5568
|
first_name: T.nilable(String),
|
|
5569
|
+
job_title: T.nilable(String),
|
|
5082
5570
|
last_name: T.nilable(String)
|
|
5083
5571
|
}
|
|
5084
5572
|
)
|
|
@@ -5150,6 +5638,37 @@ module Revox
|
|
|
5150
5638
|
sig { returns(T.anything) }
|
|
5151
5639
|
attr_accessor :ended_at
|
|
5152
5640
|
|
|
5641
|
+
# Whether the AI agent conducted the conversation on this attempt. False for a
|
|
5642
|
+
# silent speed-dial probe (whose agent only detects a human) and for attempts that
|
|
5643
|
+
# were never answered.
|
|
5644
|
+
sig { returns(T::Boolean) }
|
|
5645
|
+
attr_accessor :handled_by_ai
|
|
5646
|
+
|
|
5647
|
+
# Whether a human operator conducted (part of) this attempt — a jump-in takeover
|
|
5648
|
+
# or a speed-dial operator connection (both stamp human_takeover_at).
|
|
5649
|
+
sig { returns(T::Boolean) }
|
|
5650
|
+
attr_accessor :handled_by_human
|
|
5651
|
+
|
|
5652
|
+
# The team member responsible for following up on this call.
|
|
5653
|
+
sig do
|
|
5654
|
+
returns(
|
|
5655
|
+
T.nilable(
|
|
5656
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::HandledByUser
|
|
5657
|
+
)
|
|
5658
|
+
)
|
|
5659
|
+
end
|
|
5660
|
+
attr_reader :handled_by_user
|
|
5661
|
+
|
|
5662
|
+
sig do
|
|
5663
|
+
params(
|
|
5664
|
+
handled_by_user:
|
|
5665
|
+
T.nilable(
|
|
5666
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::HandledByUser::OrHash
|
|
5667
|
+
)
|
|
5668
|
+
).void
|
|
5669
|
+
end
|
|
5670
|
+
attr_writer :handled_by_user
|
|
5671
|
+
|
|
5153
5672
|
# The phone number that was called. Formatted in E.164 format. Example:
|
|
5154
5673
|
# +1234567890
|
|
5155
5674
|
sig { returns(String) }
|
|
@@ -5184,6 +5703,19 @@ module Revox
|
|
|
5184
5703
|
sig { returns(T.nilable(T::Array[String])) }
|
|
5185
5704
|
attr_accessor :assistants_used
|
|
5186
5705
|
|
|
5706
|
+
# Notification emails sent in connection with the call, ordered oldest first
|
|
5707
|
+
# (from/to addresses, subject, sent time).
|
|
5708
|
+
sig do
|
|
5709
|
+
returns(
|
|
5710
|
+
T.nilable(
|
|
5711
|
+
T::Array[
|
|
5712
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::EmailLog
|
|
5713
|
+
]
|
|
5714
|
+
)
|
|
5715
|
+
)
|
|
5716
|
+
end
|
|
5717
|
+
attr_accessor :email_log
|
|
5718
|
+
|
|
5187
5719
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
5188
5720
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
5189
5721
|
sig do
|
|
@@ -5217,21 +5749,35 @@ module Revox
|
|
|
5217
5749
|
)
|
|
5218
5750
|
)
|
|
5219
5751
|
end
|
|
5220
|
-
attr_accessor :post_call_transcript
|
|
5752
|
+
attr_accessor :post_call_transcript
|
|
5753
|
+
|
|
5754
|
+
# Automatic SMS sent after the call (voicemail and after-call), ordered oldest
|
|
5755
|
+
# first. The in-call `send_sms` is excluded — it already appears in the transcript
|
|
5756
|
+
# as a tool call.
|
|
5757
|
+
sig do
|
|
5758
|
+
returns(
|
|
5759
|
+
T.nilable(
|
|
5760
|
+
T::Array[
|
|
5761
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog
|
|
5762
|
+
]
|
|
5763
|
+
)
|
|
5764
|
+
)
|
|
5765
|
+
end
|
|
5766
|
+
attr_accessor :sms_log
|
|
5221
5767
|
|
|
5222
|
-
#
|
|
5223
|
-
#
|
|
5224
|
-
#
|
|
5768
|
+
# Per-turn speech segments (VAD-derived) with timing and pipeline latencies,
|
|
5769
|
+
# ordered by started_speaking_at_ms. Empty for calls recorded before this was
|
|
5770
|
+
# tracked or for realtime sessions that don't emit them.
|
|
5225
5771
|
sig do
|
|
5226
5772
|
returns(
|
|
5227
5773
|
T.nilable(
|
|
5228
5774
|
T::Array[
|
|
5229
|
-
Revox::Models::CallCreateResponse::Call::LastCallAttempt::
|
|
5775
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SpeechEvent
|
|
5230
5776
|
]
|
|
5231
5777
|
)
|
|
5232
5778
|
)
|
|
5233
5779
|
end
|
|
5234
|
-
attr_accessor :
|
|
5780
|
+
attr_accessor :speech_events
|
|
5235
5781
|
|
|
5236
5782
|
# The data extracted from the call, using the structured output config from the
|
|
5237
5783
|
# parent call object.
|
|
@@ -5261,6 +5807,12 @@ module Revox
|
|
|
5261
5807
|
Revox::Models::CallCreateResponse::Call::LastCallAttempt::DialError::OrSymbol
|
|
5262
5808
|
),
|
|
5263
5809
|
ended_at: T.anything,
|
|
5810
|
+
handled_by_ai: T::Boolean,
|
|
5811
|
+
handled_by_human: T::Boolean,
|
|
5812
|
+
handled_by_user:
|
|
5813
|
+
T.nilable(
|
|
5814
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::HandledByUser::OrHash
|
|
5815
|
+
),
|
|
5264
5816
|
phone_number: String,
|
|
5265
5817
|
recording_url: T.nilable(String),
|
|
5266
5818
|
result:
|
|
@@ -5271,6 +5823,12 @@ module Revox
|
|
|
5271
5823
|
status:
|
|
5272
5824
|
Revox::Models::CallCreateResponse::Call::LastCallAttempt::Status::OrSymbol,
|
|
5273
5825
|
assistants_used: T.nilable(T::Array[String]),
|
|
5826
|
+
email_log:
|
|
5827
|
+
T.nilable(
|
|
5828
|
+
T::Array[
|
|
5829
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::EmailLog::OrHash
|
|
5830
|
+
]
|
|
5831
|
+
),
|
|
5274
5832
|
end_reason:
|
|
5275
5833
|
T.nilable(
|
|
5276
5834
|
Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndReason::OrSymbol
|
|
@@ -5291,6 +5849,12 @@ module Revox
|
|
|
5291
5849
|
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog::OrHash
|
|
5292
5850
|
]
|
|
5293
5851
|
),
|
|
5852
|
+
speech_events:
|
|
5853
|
+
T.nilable(
|
|
5854
|
+
T::Array[
|
|
5855
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SpeechEvent::OrHash
|
|
5856
|
+
]
|
|
5857
|
+
),
|
|
5294
5858
|
structured_output: T.nilable(T::Hash[Symbol, T.anything]),
|
|
5295
5859
|
transcript:
|
|
5296
5860
|
T.nilable(
|
|
@@ -5309,6 +5873,15 @@ module Revox
|
|
|
5309
5873
|
dial_error:,
|
|
5310
5874
|
# The time the call ended.
|
|
5311
5875
|
ended_at:,
|
|
5876
|
+
# Whether the AI agent conducted the conversation on this attempt. False for a
|
|
5877
|
+
# silent speed-dial probe (whose agent only detects a human) and for attempts that
|
|
5878
|
+
# were never answered.
|
|
5879
|
+
handled_by_ai:,
|
|
5880
|
+
# Whether a human operator conducted (part of) this attempt — a jump-in takeover
|
|
5881
|
+
# or a speed-dial operator connection (both stamp human_takeover_at).
|
|
5882
|
+
handled_by_human:,
|
|
5883
|
+
# The team member responsible for following up on this call.
|
|
5884
|
+
handled_by_user:,
|
|
5312
5885
|
# The phone number that was called. Formatted in E.164 format. Example:
|
|
5313
5886
|
# +1234567890
|
|
5314
5887
|
phone_number:,
|
|
@@ -5321,6 +5894,9 @@ module Revox
|
|
|
5321
5894
|
status:,
|
|
5322
5895
|
# Assistant node ids entered during this attempt, in traversal order.
|
|
5323
5896
|
assistants_used: nil,
|
|
5897
|
+
# Notification emails sent in connection with the call, ordered oldest first
|
|
5898
|
+
# (from/to addresses, subject, sent time).
|
|
5899
|
+
email_log: nil,
|
|
5324
5900
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
5325
5901
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
5326
5902
|
end_reason: nil,
|
|
@@ -5334,6 +5910,10 @@ module Revox
|
|
|
5334
5910
|
# first. The in-call `send_sms` is excluded — it already appears in the transcript
|
|
5335
5911
|
# as a tool call.
|
|
5336
5912
|
sms_log: nil,
|
|
5913
|
+
# Per-turn speech segments (VAD-derived) with timing and pipeline latencies,
|
|
5914
|
+
# ordered by started_speaking_at_ms. Empty for calls recorded before this was
|
|
5915
|
+
# tracked or for realtime sessions that don't emit them.
|
|
5916
|
+
speech_events: nil,
|
|
5337
5917
|
# The data extracted from the call, using the structured output config from the
|
|
5338
5918
|
# parent call object.
|
|
5339
5919
|
structured_output: nil,
|
|
@@ -5352,6 +5932,12 @@ module Revox
|
|
|
5352
5932
|
Revox::Models::CallCreateResponse::Call::LastCallAttempt::DialError::TaggedSymbol
|
|
5353
5933
|
),
|
|
5354
5934
|
ended_at: T.anything,
|
|
5935
|
+
handled_by_ai: T::Boolean,
|
|
5936
|
+
handled_by_human: T::Boolean,
|
|
5937
|
+
handled_by_user:
|
|
5938
|
+
T.nilable(
|
|
5939
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::HandledByUser
|
|
5940
|
+
),
|
|
5355
5941
|
phone_number: String,
|
|
5356
5942
|
recording_url: T.nilable(String),
|
|
5357
5943
|
result:
|
|
@@ -5362,6 +5948,12 @@ module Revox
|
|
|
5362
5948
|
status:
|
|
5363
5949
|
Revox::Models::CallCreateResponse::Call::LastCallAttempt::Status::TaggedSymbol,
|
|
5364
5950
|
assistants_used: T.nilable(T::Array[String]),
|
|
5951
|
+
email_log:
|
|
5952
|
+
T.nilable(
|
|
5953
|
+
T::Array[
|
|
5954
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::EmailLog
|
|
5955
|
+
]
|
|
5956
|
+
),
|
|
5365
5957
|
end_reason:
|
|
5366
5958
|
T.nilable(
|
|
5367
5959
|
Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndReason::TaggedSymbol
|
|
@@ -5382,6 +5974,12 @@ module Revox
|
|
|
5382
5974
|
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog
|
|
5383
5975
|
]
|
|
5384
5976
|
),
|
|
5977
|
+
speech_events:
|
|
5978
|
+
T.nilable(
|
|
5979
|
+
T::Array[
|
|
5980
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SpeechEvent
|
|
5981
|
+
]
|
|
5982
|
+
),
|
|
5385
5983
|
structured_output: T.nilable(T::Hash[Symbol, T.anything]),
|
|
5386
5984
|
transcript:
|
|
5387
5985
|
T.nilable(
|
|
@@ -5460,6 +6058,60 @@ module Revox
|
|
|
5460
6058
|
end
|
|
5461
6059
|
end
|
|
5462
6060
|
|
|
6061
|
+
class HandledByUser < Revox::Internal::Type::BaseModel
|
|
6062
|
+
OrHash =
|
|
6063
|
+
T.type_alias do
|
|
6064
|
+
T.any(
|
|
6065
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::HandledByUser,
|
|
6066
|
+
Revox::Internal::AnyHash
|
|
6067
|
+
)
|
|
6068
|
+
end
|
|
6069
|
+
|
|
6070
|
+
# The database user id of the assignee.
|
|
6071
|
+
sig { returns(String) }
|
|
6072
|
+
attr_accessor :id
|
|
6073
|
+
|
|
6074
|
+
sig { returns(String) }
|
|
6075
|
+
attr_accessor :email
|
|
6076
|
+
|
|
6077
|
+
sig { returns(T.nilable(String)) }
|
|
6078
|
+
attr_accessor :first_name
|
|
6079
|
+
|
|
6080
|
+
sig { returns(T.nilable(String)) }
|
|
6081
|
+
attr_accessor :last_name
|
|
6082
|
+
|
|
6083
|
+
# The team member responsible for following up on this call.
|
|
6084
|
+
sig do
|
|
6085
|
+
params(
|
|
6086
|
+
id: String,
|
|
6087
|
+
email: String,
|
|
6088
|
+
first_name: T.nilable(String),
|
|
6089
|
+
last_name: T.nilable(String)
|
|
6090
|
+
).returns(T.attached_class)
|
|
6091
|
+
end
|
|
6092
|
+
def self.new(
|
|
6093
|
+
# The database user id of the assignee.
|
|
6094
|
+
id:,
|
|
6095
|
+
email:,
|
|
6096
|
+
first_name:,
|
|
6097
|
+
last_name:
|
|
6098
|
+
)
|
|
6099
|
+
end
|
|
6100
|
+
|
|
6101
|
+
sig do
|
|
6102
|
+
override.returns(
|
|
6103
|
+
{
|
|
6104
|
+
id: String,
|
|
6105
|
+
email: String,
|
|
6106
|
+
first_name: T.nilable(String),
|
|
6107
|
+
last_name: T.nilable(String)
|
|
6108
|
+
}
|
|
6109
|
+
)
|
|
6110
|
+
end
|
|
6111
|
+
def to_hash
|
|
6112
|
+
end
|
|
6113
|
+
end
|
|
6114
|
+
|
|
5463
6115
|
module Result
|
|
5464
6116
|
extend Revox::Internal::Type::Enum
|
|
5465
6117
|
|
|
@@ -5559,6 +6211,71 @@ module Revox
|
|
|
5559
6211
|
end
|
|
5560
6212
|
end
|
|
5561
6213
|
|
|
6214
|
+
class EmailLog < Revox::Internal::Type::BaseModel
|
|
6215
|
+
OrHash =
|
|
6216
|
+
T.type_alias do
|
|
6217
|
+
T.any(
|
|
6218
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::EmailLog,
|
|
6219
|
+
Revox::Internal::AnyHash
|
|
6220
|
+
)
|
|
6221
|
+
end
|
|
6222
|
+
|
|
6223
|
+
sig { returns(String) }
|
|
6224
|
+
attr_accessor :id
|
|
6225
|
+
|
|
6226
|
+
# When the email was sent.
|
|
6227
|
+
sig { returns(T.anything) }
|
|
6228
|
+
attr_accessor :created_at
|
|
6229
|
+
|
|
6230
|
+
sig { returns(String) }
|
|
6231
|
+
attr_accessor :from_address
|
|
6232
|
+
|
|
6233
|
+
sig { returns(T.nilable(String)) }
|
|
6234
|
+
attr_accessor :resend_message_id
|
|
6235
|
+
|
|
6236
|
+
sig { returns(String) }
|
|
6237
|
+
attr_accessor :subject
|
|
6238
|
+
|
|
6239
|
+
sig { returns(T::Array[String]) }
|
|
6240
|
+
attr_accessor :to_emails
|
|
6241
|
+
|
|
6242
|
+
sig do
|
|
6243
|
+
params(
|
|
6244
|
+
id: String,
|
|
6245
|
+
created_at: T.anything,
|
|
6246
|
+
from_address: String,
|
|
6247
|
+
resend_message_id: T.nilable(String),
|
|
6248
|
+
subject: String,
|
|
6249
|
+
to_emails: T::Array[String]
|
|
6250
|
+
).returns(T.attached_class)
|
|
6251
|
+
end
|
|
6252
|
+
def self.new(
|
|
6253
|
+
id:,
|
|
6254
|
+
# When the email was sent.
|
|
6255
|
+
created_at:,
|
|
6256
|
+
from_address:,
|
|
6257
|
+
resend_message_id:,
|
|
6258
|
+
subject:,
|
|
6259
|
+
to_emails:
|
|
6260
|
+
)
|
|
6261
|
+
end
|
|
6262
|
+
|
|
6263
|
+
sig do
|
|
6264
|
+
override.returns(
|
|
6265
|
+
{
|
|
6266
|
+
id: String,
|
|
6267
|
+
created_at: T.anything,
|
|
6268
|
+
from_address: String,
|
|
6269
|
+
resend_message_id: T.nilable(String),
|
|
6270
|
+
subject: String,
|
|
6271
|
+
to_emails: T::Array[String]
|
|
6272
|
+
}
|
|
6273
|
+
)
|
|
6274
|
+
end
|
|
6275
|
+
def to_hash
|
|
6276
|
+
end
|
|
6277
|
+
end
|
|
6278
|
+
|
|
5562
6279
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
5563
6280
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
5564
6281
|
module EndReason
|
|
@@ -5886,11 +6603,18 @@ module Revox
|
|
|
5886
6603
|
sig { returns(String) }
|
|
5887
6604
|
attr_accessor :message_body
|
|
5888
6605
|
|
|
5889
|
-
sig
|
|
5890
|
-
|
|
6606
|
+
sig do
|
|
6607
|
+
returns(
|
|
6608
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog::Provider::TaggedSymbol
|
|
6609
|
+
)
|
|
6610
|
+
end
|
|
6611
|
+
attr_accessor :provider
|
|
5891
6612
|
|
|
5892
6613
|
sig { returns(T.nilable(String)) }
|
|
5893
|
-
attr_accessor :
|
|
6614
|
+
attr_accessor :provider_message_id
|
|
6615
|
+
|
|
6616
|
+
sig { returns(String) }
|
|
6617
|
+
attr_accessor :to_phone_number
|
|
5894
6618
|
|
|
5895
6619
|
sig do
|
|
5896
6620
|
returns(
|
|
@@ -5904,8 +6628,10 @@ module Revox
|
|
|
5904
6628
|
id: String,
|
|
5905
6629
|
created_at: T.anything,
|
|
5906
6630
|
message_body: String,
|
|
6631
|
+
provider:
|
|
6632
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog::Provider::OrSymbol,
|
|
6633
|
+
provider_message_id: T.nilable(String),
|
|
5907
6634
|
to_phone_number: String,
|
|
5908
|
-
twilio_message_sid: T.nilable(String),
|
|
5909
6635
|
type:
|
|
5910
6636
|
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog::Type::OrSymbol
|
|
5911
6637
|
).returns(T.attached_class)
|
|
@@ -5915,8 +6641,9 @@ module Revox
|
|
|
5915
6641
|
# When the SMS was sent.
|
|
5916
6642
|
created_at:,
|
|
5917
6643
|
message_body:,
|
|
6644
|
+
provider:,
|
|
6645
|
+
provider_message_id:,
|
|
5918
6646
|
to_phone_number:,
|
|
5919
|
-
twilio_message_sid:,
|
|
5920
6647
|
type:
|
|
5921
6648
|
)
|
|
5922
6649
|
end
|
|
@@ -5927,8 +6654,10 @@ module Revox
|
|
|
5927
6654
|
id: String,
|
|
5928
6655
|
created_at: T.anything,
|
|
5929
6656
|
message_body: String,
|
|
6657
|
+
provider:
|
|
6658
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog::Provider::TaggedSymbol,
|
|
6659
|
+
provider_message_id: T.nilable(String),
|
|
5930
6660
|
to_phone_number: String,
|
|
5931
|
-
twilio_message_sid: T.nilable(String),
|
|
5932
6661
|
type:
|
|
5933
6662
|
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog::Type::TaggedSymbol
|
|
5934
6663
|
}
|
|
@@ -5937,6 +6666,40 @@ module Revox
|
|
|
5937
6666
|
def to_hash
|
|
5938
6667
|
end
|
|
5939
6668
|
|
|
6669
|
+
module Provider
|
|
6670
|
+
extend Revox::Internal::Type::Enum
|
|
6671
|
+
|
|
6672
|
+
TaggedSymbol =
|
|
6673
|
+
T.type_alias do
|
|
6674
|
+
T.all(
|
|
6675
|
+
Symbol,
|
|
6676
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog::Provider
|
|
6677
|
+
)
|
|
6678
|
+
end
|
|
6679
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
6680
|
+
|
|
6681
|
+
TWILIO =
|
|
6682
|
+
T.let(
|
|
6683
|
+
:twilio,
|
|
6684
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog::Provider::TaggedSymbol
|
|
6685
|
+
)
|
|
6686
|
+
VONAGE =
|
|
6687
|
+
T.let(
|
|
6688
|
+
:vonage,
|
|
6689
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog::Provider::TaggedSymbol
|
|
6690
|
+
)
|
|
6691
|
+
|
|
6692
|
+
sig do
|
|
6693
|
+
override.returns(
|
|
6694
|
+
T::Array[
|
|
6695
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog::Provider::TaggedSymbol
|
|
6696
|
+
]
|
|
6697
|
+
)
|
|
6698
|
+
end
|
|
6699
|
+
def self.values
|
|
6700
|
+
end
|
|
6701
|
+
end
|
|
6702
|
+
|
|
5940
6703
|
module Type
|
|
5941
6704
|
extend Revox::Internal::Type::Enum
|
|
5942
6705
|
|
|
@@ -5977,6 +6740,176 @@ module Revox
|
|
|
5977
6740
|
end
|
|
5978
6741
|
end
|
|
5979
6742
|
|
|
6743
|
+
class SpeechEvent < Revox::Internal::Type::BaseModel
|
|
6744
|
+
OrHash =
|
|
6745
|
+
T.type_alias do
|
|
6746
|
+
T.any(
|
|
6747
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SpeechEvent,
|
|
6748
|
+
Revox::Internal::AnyHash
|
|
6749
|
+
)
|
|
6750
|
+
end
|
|
6751
|
+
|
|
6752
|
+
sig { returns(String) }
|
|
6753
|
+
attr_accessor :id
|
|
6754
|
+
|
|
6755
|
+
# False when the segment was flagged as noise/blip rather than a meaningful turn.
|
|
6756
|
+
sig { returns(T::Boolean) }
|
|
6757
|
+
attr_accessor :is_real_turn
|
|
6758
|
+
|
|
6759
|
+
# Agent-only: despite the name, the whole prompt the LLM was given for this turn —
|
|
6760
|
+
# system instructions plus conversation history — as JSON.
|
|
6761
|
+
sig { returns(T.nilable(String)) }
|
|
6762
|
+
attr_accessor :llm_system_prompt
|
|
6763
|
+
|
|
6764
|
+
# Agent-only: LLM time-to-first-token for the reply, in ms.
|
|
6765
|
+
sig { returns(T.nilable(Float)) }
|
|
6766
|
+
attr_accessor :llm_ttft_ms
|
|
6767
|
+
|
|
6768
|
+
# Agent-only: the model that produced the reply — the winning leg when the LLM is
|
|
6769
|
+
# a race, which is also the model `llm_ttft_ms` describes.
|
|
6770
|
+
sig { returns(T.nilable(String)) }
|
|
6771
|
+
attr_accessor :llm_winner_model
|
|
6772
|
+
|
|
6773
|
+
# Who was speaking during this segment.
|
|
6774
|
+
sig do
|
|
6775
|
+
returns(
|
|
6776
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
6777
|
+
)
|
|
6778
|
+
end
|
|
6779
|
+
attr_accessor :speaker
|
|
6780
|
+
|
|
6781
|
+
# Milliseconds since session start when speech began.
|
|
6782
|
+
sig { returns(Float) }
|
|
6783
|
+
attr_accessor :started_speaking_at_ms
|
|
6784
|
+
|
|
6785
|
+
# Milliseconds since session start when speech ended. Null when the session ended
|
|
6786
|
+
# before the turn closed.
|
|
6787
|
+
sig { returns(T.nilable(Float)) }
|
|
6788
|
+
attr_accessor :stopped_speaking_at_ms
|
|
6789
|
+
|
|
6790
|
+
# User-only: time from end-of-speech to final transcript, in ms.
|
|
6791
|
+
sig { returns(T.nilable(Float)) }
|
|
6792
|
+
attr_accessor :stt_transcription_delay_ms
|
|
6793
|
+
|
|
6794
|
+
# Recognized text for this segment, when available.
|
|
6795
|
+
sig { returns(T.nilable(String)) }
|
|
6796
|
+
attr_accessor :transcript
|
|
6797
|
+
|
|
6798
|
+
# Agent-only: TTS time-to-first-audio-byte for the reply, in ms.
|
|
6799
|
+
sig { returns(T.nilable(Float)) }
|
|
6800
|
+
attr_accessor :tts_ttfb_ms
|
|
6801
|
+
|
|
6802
|
+
# Agent-only: true when the agent's audio was interrupted (real or auto-resumed).
|
|
6803
|
+
# Null on user segments.
|
|
6804
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
6805
|
+
attr_accessor :was_cut
|
|
6806
|
+
|
|
6807
|
+
sig do
|
|
6808
|
+
params(
|
|
6809
|
+
id: String,
|
|
6810
|
+
is_real_turn: T::Boolean,
|
|
6811
|
+
llm_system_prompt: T.nilable(String),
|
|
6812
|
+
llm_ttft_ms: T.nilable(Float),
|
|
6813
|
+
llm_winner_model: T.nilable(String),
|
|
6814
|
+
speaker:
|
|
6815
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SpeechEvent::Speaker::OrSymbol,
|
|
6816
|
+
started_speaking_at_ms: Float,
|
|
6817
|
+
stopped_speaking_at_ms: T.nilable(Float),
|
|
6818
|
+
stt_transcription_delay_ms: T.nilable(Float),
|
|
6819
|
+
transcript: T.nilable(String),
|
|
6820
|
+
tts_ttfb_ms: T.nilable(Float),
|
|
6821
|
+
was_cut: T.nilable(T::Boolean)
|
|
6822
|
+
).returns(T.attached_class)
|
|
6823
|
+
end
|
|
6824
|
+
def self.new(
|
|
6825
|
+
id:,
|
|
6826
|
+
# False when the segment was flagged as noise/blip rather than a meaningful turn.
|
|
6827
|
+
is_real_turn:,
|
|
6828
|
+
# Agent-only: despite the name, the whole prompt the LLM was given for this turn —
|
|
6829
|
+
# system instructions plus conversation history — as JSON.
|
|
6830
|
+
llm_system_prompt:,
|
|
6831
|
+
# Agent-only: LLM time-to-first-token for the reply, in ms.
|
|
6832
|
+
llm_ttft_ms:,
|
|
6833
|
+
# Agent-only: the model that produced the reply — the winning leg when the LLM is
|
|
6834
|
+
# a race, which is also the model `llm_ttft_ms` describes.
|
|
6835
|
+
llm_winner_model:,
|
|
6836
|
+
# Who was speaking during this segment.
|
|
6837
|
+
speaker:,
|
|
6838
|
+
# Milliseconds since session start when speech began.
|
|
6839
|
+
started_speaking_at_ms:,
|
|
6840
|
+
# Milliseconds since session start when speech ended. Null when the session ended
|
|
6841
|
+
# before the turn closed.
|
|
6842
|
+
stopped_speaking_at_ms:,
|
|
6843
|
+
# User-only: time from end-of-speech to final transcript, in ms.
|
|
6844
|
+
stt_transcription_delay_ms:,
|
|
6845
|
+
# Recognized text for this segment, when available.
|
|
6846
|
+
transcript:,
|
|
6847
|
+
# Agent-only: TTS time-to-first-audio-byte for the reply, in ms.
|
|
6848
|
+
tts_ttfb_ms:,
|
|
6849
|
+
# Agent-only: true when the agent's audio was interrupted (real or auto-resumed).
|
|
6850
|
+
# Null on user segments.
|
|
6851
|
+
was_cut:
|
|
6852
|
+
)
|
|
6853
|
+
end
|
|
6854
|
+
|
|
6855
|
+
sig do
|
|
6856
|
+
override.returns(
|
|
6857
|
+
{
|
|
6858
|
+
id: String,
|
|
6859
|
+
is_real_turn: T::Boolean,
|
|
6860
|
+
llm_system_prompt: T.nilable(String),
|
|
6861
|
+
llm_ttft_ms: T.nilable(Float),
|
|
6862
|
+
llm_winner_model: T.nilable(String),
|
|
6863
|
+
speaker:
|
|
6864
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SpeechEvent::Speaker::TaggedSymbol,
|
|
6865
|
+
started_speaking_at_ms: Float,
|
|
6866
|
+
stopped_speaking_at_ms: T.nilable(Float),
|
|
6867
|
+
stt_transcription_delay_ms: T.nilable(Float),
|
|
6868
|
+
transcript: T.nilable(String),
|
|
6869
|
+
tts_ttfb_ms: T.nilable(Float),
|
|
6870
|
+
was_cut: T.nilable(T::Boolean)
|
|
6871
|
+
}
|
|
6872
|
+
)
|
|
6873
|
+
end
|
|
6874
|
+
def to_hash
|
|
6875
|
+
end
|
|
6876
|
+
|
|
6877
|
+
# Who was speaking during this segment.
|
|
6878
|
+
module Speaker
|
|
6879
|
+
extend Revox::Internal::Type::Enum
|
|
6880
|
+
|
|
6881
|
+
TaggedSymbol =
|
|
6882
|
+
T.type_alias do
|
|
6883
|
+
T.all(
|
|
6884
|
+
Symbol,
|
|
6885
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SpeechEvent::Speaker
|
|
6886
|
+
)
|
|
6887
|
+
end
|
|
6888
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
6889
|
+
|
|
6890
|
+
USER =
|
|
6891
|
+
T.let(
|
|
6892
|
+
:user,
|
|
6893
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
6894
|
+
)
|
|
6895
|
+
AGENT =
|
|
6896
|
+
T.let(
|
|
6897
|
+
:agent,
|
|
6898
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
6899
|
+
)
|
|
6900
|
+
|
|
6901
|
+
sig do
|
|
6902
|
+
override.returns(
|
|
6903
|
+
T::Array[
|
|
6904
|
+
Revox::Models::CallCreateResponse::Call::LastCallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
6905
|
+
]
|
|
6906
|
+
)
|
|
6907
|
+
end
|
|
6908
|
+
def self.values
|
|
6909
|
+
end
|
|
6910
|
+
end
|
|
6911
|
+
end
|
|
6912
|
+
|
|
5980
6913
|
class Transcript < Revox::Internal::Type::BaseModel
|
|
5981
6914
|
OrHash =
|
|
5982
6915
|
T.type_alias do
|
|
@@ -6482,6 +7415,11 @@ module Revox
|
|
|
6482
7415
|
:post_processing,
|
|
6483
7416
|
Revox::Models::CallCreateResponse::Call::Status::TaggedSymbol
|
|
6484
7417
|
)
|
|
7418
|
+
NOT_LAUNCHED =
|
|
7419
|
+
T.let(
|
|
7420
|
+
:not_launched,
|
|
7421
|
+
Revox::Models::CallCreateResponse::Call::Status::TaggedSymbol
|
|
7422
|
+
)
|
|
6485
7423
|
SCHEDULED =
|
|
6486
7424
|
T.let(
|
|
6487
7425
|
:scheduled,
|
|
@@ -6549,21 +7487,6 @@ module Revox
|
|
|
6549
7487
|
:requested_callback_later,
|
|
6550
7488
|
Revox::Models::CallCreateResponse::Call::Outcome::TaggedSymbol
|
|
6551
7489
|
)
|
|
6552
|
-
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
6553
|
-
T.let(
|
|
6554
|
-
:requested_callback_new_number,
|
|
6555
|
-
Revox::Models::CallCreateResponse::Call::Outcome::TaggedSymbol
|
|
6556
|
-
)
|
|
6557
|
-
DO_NOT_CONTACT =
|
|
6558
|
-
T.let(
|
|
6559
|
-
:do_not_contact,
|
|
6560
|
-
Revox::Models::CallCreateResponse::Call::Outcome::TaggedSymbol
|
|
6561
|
-
)
|
|
6562
|
-
AI_AVERSE =
|
|
6563
|
-
T.let(
|
|
6564
|
-
:ai_averse,
|
|
6565
|
-
Revox::Models::CallCreateResponse::Call::Outcome::TaggedSymbol
|
|
6566
|
-
)
|
|
6567
7490
|
|
|
6568
7491
|
sig do
|
|
6569
7492
|
override.returns(
|