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
|
@@ -313,6 +313,12 @@ module Revox
|
|
|
313
313
|
sig { returns(T.anything) }
|
|
314
314
|
attr_accessor :updated_at
|
|
315
315
|
|
|
316
|
+
# Extra notification recipients resolved from the agent prompt's own routing
|
|
317
|
+
# rules, when it defines any. Added to the assistant's configured notification
|
|
318
|
+
# recipients; never replaces them. Null when the prompt defines no routing rules.
|
|
319
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
320
|
+
attr_accessor :follow_up_emails
|
|
321
|
+
|
|
316
322
|
# Business outcome of the call. Null if not computed or no transcript.
|
|
317
323
|
sig do
|
|
318
324
|
returns(
|
|
@@ -327,6 +333,13 @@ module Revox
|
|
|
327
333
|
sig { returns(T.nilable(String)) }
|
|
328
334
|
attr_accessor :outcome_summary
|
|
329
335
|
|
|
336
|
+
# Slack channels resolved from the agent prompt's own routing rules, when it
|
|
337
|
+
# defines any. Always a subset of the channels configured on the assistant. Null
|
|
338
|
+
# when the prompt defines no routing rules, in which case every configured channel
|
|
339
|
+
# is notified.
|
|
340
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
341
|
+
attr_accessor :slack_channel_ids
|
|
342
|
+
|
|
330
343
|
# This represent a call "order" that was requested by the user. A call order can
|
|
331
344
|
# be resolved over multiple call attempts spanning up to a few days.
|
|
332
345
|
sig do
|
|
@@ -381,11 +394,13 @@ module Revox
|
|
|
381
394
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Status::OrSymbol,
|
|
382
395
|
to_phone_number: String,
|
|
383
396
|
updated_at: T.anything,
|
|
397
|
+
follow_up_emails: T.nilable(T::Array[String]),
|
|
384
398
|
outcome:
|
|
385
399
|
T.nilable(
|
|
386
400
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Outcome::OrSymbol
|
|
387
401
|
),
|
|
388
|
-
outcome_summary: T.nilable(String)
|
|
402
|
+
outcome_summary: T.nilable(String),
|
|
403
|
+
slack_channel_ids: T.nilable(T::Array[String])
|
|
389
404
|
).returns(T.attached_class)
|
|
390
405
|
end
|
|
391
406
|
def self.new(
|
|
@@ -440,10 +455,19 @@ module Revox
|
|
|
440
455
|
# The time the call order was last updated (any state change, retry, or analysis
|
|
441
456
|
# result).
|
|
442
457
|
updated_at:,
|
|
458
|
+
# Extra notification recipients resolved from the agent prompt's own routing
|
|
459
|
+
# rules, when it defines any. Added to the assistant's configured notification
|
|
460
|
+
# recipients; never replaces them. Null when the prompt defines no routing rules.
|
|
461
|
+
follow_up_emails: nil,
|
|
443
462
|
# Business outcome of the call. Null if not computed or no transcript.
|
|
444
463
|
outcome: nil,
|
|
445
464
|
# LLM explanation for the outcome, when outcome was computed from the transcript.
|
|
446
|
-
outcome_summary: nil
|
|
465
|
+
outcome_summary: nil,
|
|
466
|
+
# Slack channels resolved from the agent prompt's own routing rules, when it
|
|
467
|
+
# defines any. Always a subset of the channels configured on the assistant. Null
|
|
468
|
+
# when the prompt defines no routing rules, in which case every configured channel
|
|
469
|
+
# is notified.
|
|
470
|
+
slack_channel_ids: nil
|
|
447
471
|
)
|
|
448
472
|
end
|
|
449
473
|
|
|
@@ -495,11 +519,13 @@ module Revox
|
|
|
495
519
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Status::TaggedSymbol,
|
|
496
520
|
to_phone_number: String,
|
|
497
521
|
updated_at: T.anything,
|
|
522
|
+
follow_up_emails: T.nilable(T::Array[String]),
|
|
498
523
|
outcome:
|
|
499
524
|
T.nilable(
|
|
500
525
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Outcome::TaggedSymbol
|
|
501
526
|
),
|
|
502
|
-
outcome_summary: T.nilable(String)
|
|
527
|
+
outcome_summary: T.nilable(String),
|
|
528
|
+
slack_channel_ids: T.nilable(T::Array[String])
|
|
503
529
|
}
|
|
504
530
|
)
|
|
505
531
|
end
|
|
@@ -668,14 +694,6 @@ module Revox
|
|
|
668
694
|
sig { returns(T.nilable(String)) }
|
|
669
695
|
attr_accessor :email_notification_address
|
|
670
696
|
|
|
671
|
-
# The language used for the notification email content. One of "en" or "fr".
|
|
672
|
-
sig do
|
|
673
|
-
returns(
|
|
674
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
675
|
-
)
|
|
676
|
-
end
|
|
677
|
-
attr_accessor :email_notification_language
|
|
678
|
-
|
|
679
697
|
# Which call outcomes trigger an email notification. E.g. ["interested",
|
|
680
698
|
# "completed", "none"]. Use "none" when outcome is null.
|
|
681
699
|
sig do
|
|
@@ -711,8 +729,8 @@ module Revox
|
|
|
711
729
|
sig { returns(T.nilable(String)) }
|
|
712
730
|
attr_accessor :from_phone_number
|
|
713
731
|
|
|
714
|
-
# Warm or cold transfer when
|
|
715
|
-
# not configured.
|
|
732
|
+
# Warm or cold transfer when transfer_destinations is non-empty; null when
|
|
733
|
+
# transfer is not configured.
|
|
716
734
|
sig do
|
|
717
735
|
returns(
|
|
718
736
|
T.nilable(
|
|
@@ -775,6 +793,11 @@ module Revox
|
|
|
775
793
|
end
|
|
776
794
|
attr_writer :position
|
|
777
795
|
|
|
796
|
+
# URL fetched before an inbound call is answered to resolve the assistant's prompt
|
|
797
|
+
# variables. Null when no lookup is configured.
|
|
798
|
+
sig { returns(T.nilable(String)) }
|
|
799
|
+
attr_accessor :precall_lookup_url
|
|
800
|
+
|
|
778
801
|
sig { returns(String) }
|
|
779
802
|
attr_accessor :prompt
|
|
780
803
|
|
|
@@ -896,9 +919,18 @@ module Revox
|
|
|
896
919
|
sig { returns(Float) }
|
|
897
920
|
attr_accessor :thinking_sound_volume
|
|
898
921
|
|
|
899
|
-
#
|
|
900
|
-
|
|
901
|
-
|
|
922
|
+
# Where calls can be transferred to when users ask to speak to a human. Null or
|
|
923
|
+
# empty when transfer is not configured.
|
|
924
|
+
sig do
|
|
925
|
+
returns(
|
|
926
|
+
T.nilable(
|
|
927
|
+
T::Array[
|
|
928
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::TransferDestination
|
|
929
|
+
]
|
|
930
|
+
)
|
|
931
|
+
)
|
|
932
|
+
end
|
|
933
|
+
attr_accessor :transfer_destinations
|
|
902
934
|
|
|
903
935
|
sig do
|
|
904
936
|
returns(
|
|
@@ -1008,6 +1040,12 @@ module Revox
|
|
|
1008
1040
|
end
|
|
1009
1041
|
attr_writer :faq_items
|
|
1010
1042
|
|
|
1043
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
1044
|
+
attr_reader :is_inbound_receptionist
|
|
1045
|
+
|
|
1046
|
+
sig { params(is_inbound_receptionist: T::Boolean).void }
|
|
1047
|
+
attr_writer :is_inbound_receptionist
|
|
1048
|
+
|
|
1011
1049
|
sig { returns(T.nilable(T::Boolean)) }
|
|
1012
1050
|
attr_reader :is_realestate_assistant
|
|
1013
1051
|
|
|
@@ -1052,8 +1090,6 @@ module Revox
|
|
|
1052
1090
|
]
|
|
1053
1091
|
),
|
|
1054
1092
|
email_notification_address: T.nilable(String),
|
|
1055
|
-
email_notification_language:
|
|
1056
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationLanguage::OrSymbol,
|
|
1057
1093
|
email_notification_outcomes:
|
|
1058
1094
|
T.nilable(
|
|
1059
1095
|
T::Array[
|
|
@@ -1087,6 +1123,7 @@ module Revox
|
|
|
1087
1123
|
T.nilable(
|
|
1088
1124
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Position::OrHash
|
|
1089
1125
|
),
|
|
1126
|
+
precall_lookup_url: T.nilable(String),
|
|
1090
1127
|
prompt: String,
|
|
1091
1128
|
prompt_flow:
|
|
1092
1129
|
T.nilable(
|
|
@@ -1117,7 +1154,12 @@ module Revox
|
|
|
1117
1154
|
),
|
|
1118
1155
|
thinking_sound_probability: Float,
|
|
1119
1156
|
thinking_sound_volume: Float,
|
|
1120
|
-
|
|
1157
|
+
transfer_destinations:
|
|
1158
|
+
T.nilable(
|
|
1159
|
+
T::Array[
|
|
1160
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::TransferDestination::OrHash
|
|
1161
|
+
]
|
|
1162
|
+
),
|
|
1121
1163
|
type:
|
|
1122
1164
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Type::OrSymbol,
|
|
1123
1165
|
updated_at: T.anything,
|
|
@@ -1141,6 +1183,7 @@ module Revox
|
|
|
1141
1183
|
T::Array[
|
|
1142
1184
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem::OrHash
|
|
1143
1185
|
],
|
|
1186
|
+
is_inbound_receptionist: T::Boolean,
|
|
1144
1187
|
is_realestate_assistant: T::Boolean,
|
|
1145
1188
|
pending_faq_count: Float
|
|
1146
1189
|
).returns(T.attached_class)
|
|
@@ -1169,8 +1212,6 @@ module Revox
|
|
|
1169
1212
|
# outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
|
|
1170
1213
|
# bob@y.com").
|
|
1171
1214
|
email_notification_address:,
|
|
1172
|
-
# The language used for the notification email content. One of "en" or "fr".
|
|
1173
|
-
email_notification_language:,
|
|
1174
1215
|
# Which call outcomes trigger an email notification. E.g. ["interested",
|
|
1175
1216
|
# "completed", "none"]. Use "none" when outcome is null.
|
|
1176
1217
|
email_notification_outcomes:,
|
|
@@ -1182,8 +1223,8 @@ module Revox
|
|
|
1182
1223
|
# Override the default outbound phone number for calls placed with this assistant.
|
|
1183
1224
|
# When null, the organization's default phone number is used.
|
|
1184
1225
|
from_phone_number:,
|
|
1185
|
-
# Warm or cold transfer when
|
|
1186
|
-
# not configured.
|
|
1226
|
+
# Warm or cold transfer when transfer_destinations is non-empty; null when
|
|
1227
|
+
# transfer is not configured.
|
|
1187
1228
|
human_transfer_mode:,
|
|
1188
1229
|
# Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
|
|
1189
1230
|
# skip turns to navigate phone menus.
|
|
@@ -1202,6 +1243,9 @@ module Revox
|
|
|
1202
1243
|
name:,
|
|
1203
1244
|
organization_id:,
|
|
1204
1245
|
position:,
|
|
1246
|
+
# URL fetched before an inbound call is answered to resolve the assistant's prompt
|
|
1247
|
+
# variables. Null when no lookup is configured.
|
|
1248
|
+
precall_lookup_url:,
|
|
1205
1249
|
prompt:,
|
|
1206
1250
|
prompt_flow:,
|
|
1207
1251
|
slack:,
|
|
@@ -1233,8 +1277,9 @@ module Revox
|
|
|
1233
1277
|
thinking_sound_probability:,
|
|
1234
1278
|
# Volume of the thinking sound (0 = silent, 1 = max).
|
|
1235
1279
|
thinking_sound_volume:,
|
|
1236
|
-
#
|
|
1237
|
-
|
|
1280
|
+
# Where calls can be transferred to when users ask to speak to a human. Null or
|
|
1281
|
+
# empty when transfer is not configured.
|
|
1282
|
+
transfer_destinations:,
|
|
1238
1283
|
type:,
|
|
1239
1284
|
updated_at:,
|
|
1240
1285
|
voice:,
|
|
@@ -1253,6 +1298,7 @@ module Revox
|
|
|
1253
1298
|
# The user who created the assistant.
|
|
1254
1299
|
created_by: nil,
|
|
1255
1300
|
faq_items: nil,
|
|
1301
|
+
is_inbound_receptionist: nil,
|
|
1256
1302
|
is_realestate_assistant: nil,
|
|
1257
1303
|
pending_faq_count: nil
|
|
1258
1304
|
)
|
|
@@ -1291,8 +1337,6 @@ module Revox
|
|
|
1291
1337
|
]
|
|
1292
1338
|
),
|
|
1293
1339
|
email_notification_address: T.nilable(String),
|
|
1294
|
-
email_notification_language:
|
|
1295
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationLanguage::TaggedSymbol,
|
|
1296
1340
|
email_notification_outcomes:
|
|
1297
1341
|
T.nilable(
|
|
1298
1342
|
T::Array[
|
|
@@ -1321,6 +1365,7 @@ module Revox
|
|
|
1321
1365
|
T.nilable(
|
|
1322
1366
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Position
|
|
1323
1367
|
),
|
|
1368
|
+
precall_lookup_url: T.nilable(String),
|
|
1324
1369
|
prompt: String,
|
|
1325
1370
|
prompt_flow:
|
|
1326
1371
|
T.nilable(
|
|
@@ -1351,7 +1396,12 @@ module Revox
|
|
|
1351
1396
|
),
|
|
1352
1397
|
thinking_sound_probability: Float,
|
|
1353
1398
|
thinking_sound_volume: Float,
|
|
1354
|
-
|
|
1399
|
+
transfer_destinations:
|
|
1400
|
+
T.nilable(
|
|
1401
|
+
T::Array[
|
|
1402
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::TransferDestination
|
|
1403
|
+
]
|
|
1404
|
+
),
|
|
1355
1405
|
type:
|
|
1356
1406
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Type::TaggedSymbol,
|
|
1357
1407
|
updated_at: T.anything,
|
|
@@ -1375,6 +1425,7 @@ module Revox
|
|
|
1375
1425
|
T::Array[
|
|
1376
1426
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem
|
|
1377
1427
|
],
|
|
1428
|
+
is_inbound_receptionist: T::Boolean,
|
|
1378
1429
|
is_realestate_assistant: T::Boolean,
|
|
1379
1430
|
pending_faq_count: Float
|
|
1380
1431
|
}
|
|
@@ -1415,21 +1466,6 @@ module Revox
|
|
|
1415
1466
|
:requested_callback_later,
|
|
1416
1467
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1417
1468
|
)
|
|
1418
|
-
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
1419
|
-
T.let(
|
|
1420
|
-
:requested_callback_new_number,
|
|
1421
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1422
|
-
)
|
|
1423
|
-
DO_NOT_CONTACT =
|
|
1424
|
-
T.let(
|
|
1425
|
-
:do_not_contact,
|
|
1426
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1427
|
-
)
|
|
1428
|
-
AI_AVERSE =
|
|
1429
|
-
T.let(
|
|
1430
|
-
:ai_averse,
|
|
1431
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1432
|
-
)
|
|
1433
1469
|
NONE =
|
|
1434
1470
|
T.let(
|
|
1435
1471
|
:none,
|
|
@@ -1700,7 +1736,8 @@ module Revox
|
|
|
1700
1736
|
sig { returns(String) }
|
|
1701
1737
|
attr_accessor :calling_window_start_time
|
|
1702
1738
|
|
|
1703
|
-
# Delay between retry attempts in seconds.
|
|
1739
|
+
# Delay between retry attempts in seconds. 0 retries as soon as the calling window
|
|
1740
|
+
# allows. Default: 7200 (2 hours).
|
|
1704
1741
|
sig { returns(Integer) }
|
|
1705
1742
|
attr_accessor :retry_delay_seconds
|
|
1706
1743
|
|
|
@@ -1720,7 +1757,8 @@ module Revox
|
|
|
1720
1757
|
# timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
|
|
1721
1758
|
# Examples: '09:00', '10am'. Default: '10:00'.
|
|
1722
1759
|
calling_window_start_time:,
|
|
1723
|
-
# Delay between retry attempts in seconds.
|
|
1760
|
+
# Delay between retry attempts in seconds. 0 retries as soon as the calling window
|
|
1761
|
+
# allows. Default: 7200 (2 hours).
|
|
1724
1762
|
retry_delay_seconds:
|
|
1725
1763
|
)
|
|
1726
1764
|
end
|
|
@@ -2107,41 +2145,6 @@ module Revox
|
|
|
2107
2145
|
end
|
|
2108
2146
|
end
|
|
2109
2147
|
|
|
2110
|
-
# The language used for the notification email content. One of "en" or "fr".
|
|
2111
|
-
module EmailNotificationLanguage
|
|
2112
|
-
extend Revox::Internal::Type::Enum
|
|
2113
|
-
|
|
2114
|
-
TaggedSymbol =
|
|
2115
|
-
T.type_alias do
|
|
2116
|
-
T.all(
|
|
2117
|
-
Symbol,
|
|
2118
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationLanguage
|
|
2119
|
-
)
|
|
2120
|
-
end
|
|
2121
|
-
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
2122
|
-
|
|
2123
|
-
EN =
|
|
2124
|
-
T.let(
|
|
2125
|
-
:en,
|
|
2126
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
2127
|
-
)
|
|
2128
|
-
FR =
|
|
2129
|
-
T.let(
|
|
2130
|
-
:fr,
|
|
2131
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
2132
|
-
)
|
|
2133
|
-
|
|
2134
|
-
sig do
|
|
2135
|
-
override.returns(
|
|
2136
|
-
T::Array[
|
|
2137
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
2138
|
-
]
|
|
2139
|
-
)
|
|
2140
|
-
end
|
|
2141
|
-
def self.values
|
|
2142
|
-
end
|
|
2143
|
-
end
|
|
2144
|
-
|
|
2145
2148
|
module EmailNotificationOutcome
|
|
2146
2149
|
extend Revox::Internal::Type::Enum
|
|
2147
2150
|
|
|
@@ -2174,21 +2177,6 @@ module Revox
|
|
|
2174
2177
|
:requested_callback_later,
|
|
2175
2178
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2176
2179
|
)
|
|
2177
|
-
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
2178
|
-
T.let(
|
|
2179
|
-
:requested_callback_new_number,
|
|
2180
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2181
|
-
)
|
|
2182
|
-
DO_NOT_CONTACT =
|
|
2183
|
-
T.let(
|
|
2184
|
-
:do_not_contact,
|
|
2185
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2186
|
-
)
|
|
2187
|
-
AI_AVERSE =
|
|
2188
|
-
T.let(
|
|
2189
|
-
:ai_averse,
|
|
2190
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2191
|
-
)
|
|
2192
2180
|
NONE =
|
|
2193
2181
|
T.let(
|
|
2194
2182
|
:none,
|
|
@@ -2245,8 +2233,8 @@ module Revox
|
|
|
2245
2233
|
end
|
|
2246
2234
|
end
|
|
2247
2235
|
|
|
2248
|
-
# Warm or cold transfer when
|
|
2249
|
-
# not configured.
|
|
2236
|
+
# Warm or cold transfer when transfer_destinations is non-empty; null when
|
|
2237
|
+
# transfer is not configured.
|
|
2250
2238
|
module HumanTransferMode
|
|
2251
2239
|
extend Revox::Internal::Type::Enum
|
|
2252
2240
|
|
|
@@ -2848,9 +2836,17 @@ module Revox
|
|
|
2848
2836
|
)
|
|
2849
2837
|
end
|
|
2850
2838
|
|
|
2851
|
-
# The Slack
|
|
2852
|
-
|
|
2853
|
-
|
|
2839
|
+
# The Slack channels eligible to receive the notification. When more than one is
|
|
2840
|
+
# configured, the agent prompt may define routing rules to narrow it down per
|
|
2841
|
+
# call; with no such rules every channel here is notified.
|
|
2842
|
+
sig do
|
|
2843
|
+
returns(
|
|
2844
|
+
T::Array[
|
|
2845
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack::Channel
|
|
2846
|
+
]
|
|
2847
|
+
)
|
|
2848
|
+
end
|
|
2849
|
+
attr_accessor :channels
|
|
2854
2850
|
|
|
2855
2851
|
# The Nango connection ID linking the org's Slack workspace to Revox.
|
|
2856
2852
|
sig { returns(String) }
|
|
@@ -2867,45 +2863,43 @@ module Revox
|
|
|
2867
2863
|
end
|
|
2868
2864
|
attr_accessor :outcomes
|
|
2869
2865
|
|
|
2870
|
-
# Human-readable Slack channel name, cached for display in the UI.
|
|
2871
|
-
sig { returns(T.nilable(String)) }
|
|
2872
|
-
attr_accessor :channel_name
|
|
2873
|
-
|
|
2874
2866
|
# Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
|
|
2875
2867
|
# {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
|
|
2876
|
-
# {{last_name}}, {{email}}, {{company}}, {{
|
|
2877
|
-
# prompt_variables and structured_output keys. When
|
|
2878
|
-
# is used.
|
|
2868
|
+
# {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
|
|
2869
|
+
# {{contact_line}}, plus prompt_variables and structured_output keys. When
|
|
2870
|
+
# null/empty a default template is used.
|
|
2879
2871
|
sig { returns(T.nilable(String)) }
|
|
2880
2872
|
attr_accessor :template
|
|
2881
2873
|
|
|
2882
2874
|
sig do
|
|
2883
2875
|
params(
|
|
2884
|
-
|
|
2876
|
+
channels:
|
|
2877
|
+
T::Array[
|
|
2878
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack::Channel::OrHash
|
|
2879
|
+
],
|
|
2885
2880
|
connection_id: String,
|
|
2886
2881
|
outcomes:
|
|
2887
2882
|
T::Array[
|
|
2888
2883
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack::Outcome::OrSymbol
|
|
2889
2884
|
],
|
|
2890
|
-
channel_name: T.nilable(String),
|
|
2891
2885
|
template: T.nilable(String)
|
|
2892
2886
|
).returns(T.attached_class)
|
|
2893
2887
|
end
|
|
2894
2888
|
def self.new(
|
|
2895
|
-
# The Slack
|
|
2896
|
-
|
|
2889
|
+
# The Slack channels eligible to receive the notification. When more than one is
|
|
2890
|
+
# configured, the agent prompt may define routing rules to narrow it down per
|
|
2891
|
+
# call; with no such rules every channel here is notified.
|
|
2892
|
+
channels:,
|
|
2897
2893
|
# The Nango connection ID linking the org's Slack workspace to Revox.
|
|
2898
2894
|
connection_id:,
|
|
2899
2895
|
# Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
|
|
2900
2896
|
# Use 'none' to notify when outcome is null.
|
|
2901
2897
|
outcomes:,
|
|
2902
|
-
# Human-readable Slack channel name, cached for display in the UI.
|
|
2903
|
-
channel_name: nil,
|
|
2904
2898
|
# Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
|
|
2905
2899
|
# {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
|
|
2906
|
-
# {{last_name}}, {{email}}, {{company}}, {{
|
|
2907
|
-
# prompt_variables and structured_output keys. When
|
|
2908
|
-
# is used.
|
|
2900
|
+
# {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
|
|
2901
|
+
# {{contact_line}}, plus prompt_variables and structured_output keys. When
|
|
2902
|
+
# null/empty a default template is used.
|
|
2909
2903
|
template: nil
|
|
2910
2904
|
)
|
|
2911
2905
|
end
|
|
@@ -2913,13 +2907,15 @@ module Revox
|
|
|
2913
2907
|
sig do
|
|
2914
2908
|
override.returns(
|
|
2915
2909
|
{
|
|
2916
|
-
|
|
2910
|
+
channels:
|
|
2911
|
+
T::Array[
|
|
2912
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack::Channel
|
|
2913
|
+
],
|
|
2917
2914
|
connection_id: String,
|
|
2918
2915
|
outcomes:
|
|
2919
2916
|
T::Array[
|
|
2920
2917
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack::Outcome::TaggedSymbol
|
|
2921
2918
|
],
|
|
2922
|
-
channel_name: T.nilable(String),
|
|
2923
2919
|
template: T.nilable(String)
|
|
2924
2920
|
}
|
|
2925
2921
|
)
|
|
@@ -2927,6 +2923,45 @@ module Revox
|
|
|
2927
2923
|
def to_hash
|
|
2928
2924
|
end
|
|
2929
2925
|
|
|
2926
|
+
class Channel < Revox::Internal::Type::BaseModel
|
|
2927
|
+
OrHash =
|
|
2928
|
+
T.type_alias do
|
|
2929
|
+
T.any(
|
|
2930
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack::Channel,
|
|
2931
|
+
Revox::Internal::AnyHash
|
|
2932
|
+
)
|
|
2933
|
+
end
|
|
2934
|
+
|
|
2935
|
+
# The Slack channel ID (e.g. 'C01234567').
|
|
2936
|
+
sig { returns(String) }
|
|
2937
|
+
attr_accessor :id
|
|
2938
|
+
|
|
2939
|
+
# Human-readable Slack channel name, cached for display in the UI and given to the
|
|
2940
|
+
# LLM when the agent prompt routes by channel name.
|
|
2941
|
+
sig { returns(T.nilable(String)) }
|
|
2942
|
+
attr_accessor :name
|
|
2943
|
+
|
|
2944
|
+
sig do
|
|
2945
|
+
params(id: String, name: T.nilable(String)).returns(
|
|
2946
|
+
T.attached_class
|
|
2947
|
+
)
|
|
2948
|
+
end
|
|
2949
|
+
def self.new(
|
|
2950
|
+
# The Slack channel ID (e.g. 'C01234567').
|
|
2951
|
+
id:,
|
|
2952
|
+
# Human-readable Slack channel name, cached for display in the UI and given to the
|
|
2953
|
+
# LLM when the agent prompt routes by channel name.
|
|
2954
|
+
name: nil
|
|
2955
|
+
)
|
|
2956
|
+
end
|
|
2957
|
+
|
|
2958
|
+
sig do
|
|
2959
|
+
override.returns({ id: String, name: T.nilable(String) })
|
|
2960
|
+
end
|
|
2961
|
+
def to_hash
|
|
2962
|
+
end
|
|
2963
|
+
end
|
|
2964
|
+
|
|
2930
2965
|
module Outcome
|
|
2931
2966
|
extend Revox::Internal::Type::Enum
|
|
2932
2967
|
|
|
@@ -2959,21 +2994,6 @@ module Revox
|
|
|
2959
2994
|
:requested_callback_later,
|
|
2960
2995
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack::Outcome::TaggedSymbol
|
|
2961
2996
|
)
|
|
2962
|
-
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
2963
|
-
T.let(
|
|
2964
|
-
:requested_callback_new_number,
|
|
2965
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack::Outcome::TaggedSymbol
|
|
2966
|
-
)
|
|
2967
|
-
DO_NOT_CONTACT =
|
|
2968
|
-
T.let(
|
|
2969
|
-
:do_not_contact,
|
|
2970
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack::Outcome::TaggedSymbol
|
|
2971
|
-
)
|
|
2972
|
-
AI_AVERSE =
|
|
2973
|
-
T.let(
|
|
2974
|
-
:ai_averse,
|
|
2975
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Slack::Outcome::TaggedSymbol
|
|
2976
|
-
)
|
|
2977
2997
|
NONE =
|
|
2978
2998
|
T.let(
|
|
2979
2999
|
:none,
|
|
@@ -3288,6 +3308,34 @@ module Revox
|
|
|
3288
3308
|
end
|
|
3289
3309
|
end
|
|
3290
3310
|
|
|
3311
|
+
class TransferDestination < Revox::Internal::Type::BaseModel
|
|
3312
|
+
OrHash =
|
|
3313
|
+
T.type_alias do
|
|
3314
|
+
T.any(
|
|
3315
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::TransferDestination,
|
|
3316
|
+
Revox::Internal::AnyHash
|
|
3317
|
+
)
|
|
3318
|
+
end
|
|
3319
|
+
|
|
3320
|
+
sig { returns(String) }
|
|
3321
|
+
attr_accessor :label
|
|
3322
|
+
|
|
3323
|
+
sig { returns(String) }
|
|
3324
|
+
attr_accessor :phone_number
|
|
3325
|
+
|
|
3326
|
+
sig do
|
|
3327
|
+
params(label: String, phone_number: String).returns(
|
|
3328
|
+
T.attached_class
|
|
3329
|
+
)
|
|
3330
|
+
end
|
|
3331
|
+
def self.new(label:, phone_number:)
|
|
3332
|
+
end
|
|
3333
|
+
|
|
3334
|
+
sig { override.returns({ label: String, phone_number: String }) }
|
|
3335
|
+
def to_hash
|
|
3336
|
+
end
|
|
3337
|
+
end
|
|
3338
|
+
|
|
3291
3339
|
module Type
|
|
3292
3340
|
extend Revox::Internal::Type::Enum
|
|
3293
3341
|
|
|
@@ -3368,7 +3416,7 @@ module Revox
|
|
|
3368
3416
|
attr_writer :model
|
|
3369
3417
|
|
|
3370
3418
|
# The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
|
|
3371
|
-
# 0.7–1.2. Default is 1.0.
|
|
3419
|
+
# 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
|
|
3372
3420
|
sig { returns(T.nilable(Float)) }
|
|
3373
3421
|
attr_reader :speed
|
|
3374
3422
|
|
|
@@ -3403,7 +3451,7 @@ module Revox
|
|
|
3403
3451
|
# for other providers.
|
|
3404
3452
|
model: nil,
|
|
3405
3453
|
# The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
|
|
3406
|
-
# 0.7–1.2. Default is 1.0.
|
|
3454
|
+
# 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
|
|
3407
3455
|
speed: nil,
|
|
3408
3456
|
# Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
|
|
3409
3457
|
# providers.
|
|
@@ -3450,6 +3498,11 @@ module Revox
|
|
|
3450
3498
|
:elevenlabs,
|
|
3451
3499
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::Provider::TaggedSymbol
|
|
3452
3500
|
)
|
|
3501
|
+
GRADIUM =
|
|
3502
|
+
T.let(
|
|
3503
|
+
:gradium,
|
|
3504
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::Provider::TaggedSymbol
|
|
3505
|
+
)
|
|
3453
3506
|
|
|
3454
3507
|
sig do
|
|
3455
3508
|
override.returns(
|
|
@@ -3680,21 +3733,6 @@ module Revox
|
|
|
3680
3733
|
:requested_callback_later,
|
|
3681
3734
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3682
3735
|
)
|
|
3683
|
-
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
3684
|
-
T.let(
|
|
3685
|
-
:requested_callback_new_number,
|
|
3686
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3687
|
-
)
|
|
3688
|
-
DO_NOT_CONTACT =
|
|
3689
|
-
T.let(
|
|
3690
|
-
:do_not_contact,
|
|
3691
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3692
|
-
)
|
|
3693
|
-
AI_AVERSE =
|
|
3694
|
-
T.let(
|
|
3695
|
-
:ai_averse,
|
|
3696
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3697
|
-
)
|
|
3698
3736
|
NONE =
|
|
3699
3737
|
T.let(
|
|
3700
3738
|
:none,
|
|
@@ -3912,6 +3950,37 @@ module Revox
|
|
|
3912
3950
|
sig { returns(T.anything) }
|
|
3913
3951
|
attr_accessor :ended_at
|
|
3914
3952
|
|
|
3953
|
+
# Whether the AI agent conducted the conversation on this attempt. False for a
|
|
3954
|
+
# silent speed-dial probe (whose agent only detects a human) and for attempts that
|
|
3955
|
+
# were never answered.
|
|
3956
|
+
sig { returns(T::Boolean) }
|
|
3957
|
+
attr_accessor :handled_by_ai
|
|
3958
|
+
|
|
3959
|
+
# Whether a human operator conducted (part of) this attempt — a jump-in takeover
|
|
3960
|
+
# or a speed-dial operator connection (both stamp human_takeover_at).
|
|
3961
|
+
sig { returns(T::Boolean) }
|
|
3962
|
+
attr_accessor :handled_by_human
|
|
3963
|
+
|
|
3964
|
+
# The team member responsible for following up on this call.
|
|
3965
|
+
sig do
|
|
3966
|
+
returns(
|
|
3967
|
+
T.nilable(
|
|
3968
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::HandledByUser
|
|
3969
|
+
)
|
|
3970
|
+
)
|
|
3971
|
+
end
|
|
3972
|
+
attr_reader :handled_by_user
|
|
3973
|
+
|
|
3974
|
+
sig do
|
|
3975
|
+
params(
|
|
3976
|
+
handled_by_user:
|
|
3977
|
+
T.nilable(
|
|
3978
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::HandledByUser::OrHash
|
|
3979
|
+
)
|
|
3980
|
+
).void
|
|
3981
|
+
end
|
|
3982
|
+
attr_writer :handled_by_user
|
|
3983
|
+
|
|
3915
3984
|
# The phone number that was called. Formatted in E.164 format. Example:
|
|
3916
3985
|
# +1234567890
|
|
3917
3986
|
sig { returns(String) }
|
|
@@ -3946,6 +4015,19 @@ module Revox
|
|
|
3946
4015
|
sig { returns(T.nilable(T::Array[String])) }
|
|
3947
4016
|
attr_accessor :assistants_used
|
|
3948
4017
|
|
|
4018
|
+
# Notification emails sent in connection with the call, ordered oldest first
|
|
4019
|
+
# (from/to addresses, subject, sent time).
|
|
4020
|
+
sig do
|
|
4021
|
+
returns(
|
|
4022
|
+
T.nilable(
|
|
4023
|
+
T::Array[
|
|
4024
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EmailLog
|
|
4025
|
+
]
|
|
4026
|
+
)
|
|
4027
|
+
)
|
|
4028
|
+
end
|
|
4029
|
+
attr_accessor :email_log
|
|
4030
|
+
|
|
3949
4031
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
3950
4032
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
3951
4033
|
sig do
|
|
@@ -3995,6 +4077,20 @@ module Revox
|
|
|
3995
4077
|
end
|
|
3996
4078
|
attr_accessor :sms_log
|
|
3997
4079
|
|
|
4080
|
+
# Per-turn speech segments (VAD-derived) with timing and pipeline latencies,
|
|
4081
|
+
# ordered by started_speaking_at_ms. Empty for calls recorded before this was
|
|
4082
|
+
# tracked or for realtime sessions that don't emit them.
|
|
4083
|
+
sig do
|
|
4084
|
+
returns(
|
|
4085
|
+
T.nilable(
|
|
4086
|
+
T::Array[
|
|
4087
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SpeechEvent
|
|
4088
|
+
]
|
|
4089
|
+
)
|
|
4090
|
+
)
|
|
4091
|
+
end
|
|
4092
|
+
attr_accessor :speech_events
|
|
4093
|
+
|
|
3998
4094
|
# The data extracted from the call, using the structured output config from the
|
|
3999
4095
|
# parent call object.
|
|
4000
4096
|
sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
|
|
@@ -4023,6 +4119,12 @@ module Revox
|
|
|
4023
4119
|
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::DialError::OrSymbol
|
|
4024
4120
|
),
|
|
4025
4121
|
ended_at: T.anything,
|
|
4122
|
+
handled_by_ai: T::Boolean,
|
|
4123
|
+
handled_by_human: T::Boolean,
|
|
4124
|
+
handled_by_user:
|
|
4125
|
+
T.nilable(
|
|
4126
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::HandledByUser::OrHash
|
|
4127
|
+
),
|
|
4026
4128
|
phone_number: String,
|
|
4027
4129
|
recording_url: T.nilable(String),
|
|
4028
4130
|
result:
|
|
@@ -4033,6 +4135,12 @@ module Revox
|
|
|
4033
4135
|
status:
|
|
4034
4136
|
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Status::OrSymbol,
|
|
4035
4137
|
assistants_used: T.nilable(T::Array[String]),
|
|
4138
|
+
email_log:
|
|
4139
|
+
T.nilable(
|
|
4140
|
+
T::Array[
|
|
4141
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EmailLog::OrHash
|
|
4142
|
+
]
|
|
4143
|
+
),
|
|
4036
4144
|
end_reason:
|
|
4037
4145
|
T.nilable(
|
|
4038
4146
|
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EndReason::OrSymbol
|
|
@@ -4053,6 +4161,12 @@ module Revox
|
|
|
4053
4161
|
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog::OrHash
|
|
4054
4162
|
]
|
|
4055
4163
|
),
|
|
4164
|
+
speech_events:
|
|
4165
|
+
T.nilable(
|
|
4166
|
+
T::Array[
|
|
4167
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SpeechEvent::OrHash
|
|
4168
|
+
]
|
|
4169
|
+
),
|
|
4056
4170
|
structured_output: T.nilable(T::Hash[Symbol, T.anything]),
|
|
4057
4171
|
transcript:
|
|
4058
4172
|
T.nilable(
|
|
@@ -4071,6 +4185,15 @@ module Revox
|
|
|
4071
4185
|
dial_error:,
|
|
4072
4186
|
# The time the call ended.
|
|
4073
4187
|
ended_at:,
|
|
4188
|
+
# Whether the AI agent conducted the conversation on this attempt. False for a
|
|
4189
|
+
# silent speed-dial probe (whose agent only detects a human) and for attempts that
|
|
4190
|
+
# were never answered.
|
|
4191
|
+
handled_by_ai:,
|
|
4192
|
+
# Whether a human operator conducted (part of) this attempt — a jump-in takeover
|
|
4193
|
+
# or a speed-dial operator connection (both stamp human_takeover_at).
|
|
4194
|
+
handled_by_human:,
|
|
4195
|
+
# The team member responsible for following up on this call.
|
|
4196
|
+
handled_by_user:,
|
|
4074
4197
|
# The phone number that was called. Formatted in E.164 format. Example:
|
|
4075
4198
|
# +1234567890
|
|
4076
4199
|
phone_number:,
|
|
@@ -4083,6 +4206,9 @@ module Revox
|
|
|
4083
4206
|
status:,
|
|
4084
4207
|
# Assistant node ids entered during this attempt, in traversal order.
|
|
4085
4208
|
assistants_used: nil,
|
|
4209
|
+
# Notification emails sent in connection with the call, ordered oldest first
|
|
4210
|
+
# (from/to addresses, subject, sent time).
|
|
4211
|
+
email_log: nil,
|
|
4086
4212
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
4087
4213
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
4088
4214
|
end_reason: nil,
|
|
@@ -4096,6 +4222,10 @@ module Revox
|
|
|
4096
4222
|
# first. The in-call `send_sms` is excluded — it already appears in the transcript
|
|
4097
4223
|
# as a tool call.
|
|
4098
4224
|
sms_log: nil,
|
|
4225
|
+
# Per-turn speech segments (VAD-derived) with timing and pipeline latencies,
|
|
4226
|
+
# ordered by started_speaking_at_ms. Empty for calls recorded before this was
|
|
4227
|
+
# tracked or for realtime sessions that don't emit them.
|
|
4228
|
+
speech_events: nil,
|
|
4099
4229
|
# The data extracted from the call, using the structured output config from the
|
|
4100
4230
|
# parent call object.
|
|
4101
4231
|
structured_output: nil,
|
|
@@ -4114,6 +4244,12 @@ module Revox
|
|
|
4114
4244
|
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::DialError::TaggedSymbol
|
|
4115
4245
|
),
|
|
4116
4246
|
ended_at: T.anything,
|
|
4247
|
+
handled_by_ai: T::Boolean,
|
|
4248
|
+
handled_by_human: T::Boolean,
|
|
4249
|
+
handled_by_user:
|
|
4250
|
+
T.nilable(
|
|
4251
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::HandledByUser
|
|
4252
|
+
),
|
|
4117
4253
|
phone_number: String,
|
|
4118
4254
|
recording_url: T.nilable(String),
|
|
4119
4255
|
result:
|
|
@@ -4124,6 +4260,12 @@ module Revox
|
|
|
4124
4260
|
status:
|
|
4125
4261
|
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Status::TaggedSymbol,
|
|
4126
4262
|
assistants_used: T.nilable(T::Array[String]),
|
|
4263
|
+
email_log:
|
|
4264
|
+
T.nilable(
|
|
4265
|
+
T::Array[
|
|
4266
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EmailLog
|
|
4267
|
+
]
|
|
4268
|
+
),
|
|
4127
4269
|
end_reason:
|
|
4128
4270
|
T.nilable(
|
|
4129
4271
|
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EndReason::TaggedSymbol
|
|
@@ -4144,6 +4286,12 @@ module Revox
|
|
|
4144
4286
|
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog
|
|
4145
4287
|
]
|
|
4146
4288
|
),
|
|
4289
|
+
speech_events:
|
|
4290
|
+
T.nilable(
|
|
4291
|
+
T::Array[
|
|
4292
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SpeechEvent
|
|
4293
|
+
]
|
|
4294
|
+
),
|
|
4147
4295
|
structured_output: T.nilable(T::Hash[Symbol, T.anything]),
|
|
4148
4296
|
transcript:
|
|
4149
4297
|
T.nilable(
|
|
@@ -4222,50 +4370,104 @@ module Revox
|
|
|
4222
4370
|
end
|
|
4223
4371
|
end
|
|
4224
4372
|
|
|
4225
|
-
|
|
4226
|
-
|
|
4227
|
-
|
|
4228
|
-
TaggedSymbol =
|
|
4373
|
+
class HandledByUser < Revox::Internal::Type::BaseModel
|
|
4374
|
+
OrHash =
|
|
4229
4375
|
T.type_alias do
|
|
4230
|
-
T.
|
|
4231
|
-
|
|
4232
|
-
Revox::
|
|
4376
|
+
T.any(
|
|
4377
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::HandledByUser,
|
|
4378
|
+
Revox::Internal::AnyHash
|
|
4233
4379
|
)
|
|
4234
4380
|
end
|
|
4235
|
-
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
4236
4381
|
|
|
4237
|
-
|
|
4238
|
-
|
|
4239
|
-
|
|
4240
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Result::TaggedSymbol
|
|
4241
|
-
)
|
|
4242
|
-
VOICEMAIL =
|
|
4243
|
-
T.let(
|
|
4244
|
-
:voicemail,
|
|
4245
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Result::TaggedSymbol
|
|
4246
|
-
)
|
|
4247
|
-
HUMAN =
|
|
4248
|
-
T.let(
|
|
4249
|
-
:human,
|
|
4250
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Result::TaggedSymbol
|
|
4251
|
-
)
|
|
4252
|
-
UNKNOWN =
|
|
4253
|
-
T.let(
|
|
4254
|
-
:unknown,
|
|
4255
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Result::TaggedSymbol
|
|
4256
|
-
)
|
|
4257
|
-
IOS_SCREENING_FILTER =
|
|
4258
|
-
T.let(
|
|
4259
|
-
:"ios-screening-filter",
|
|
4260
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Result::TaggedSymbol
|
|
4261
|
-
)
|
|
4382
|
+
# The database user id of the assignee.
|
|
4383
|
+
sig { returns(String) }
|
|
4384
|
+
attr_accessor :id
|
|
4262
4385
|
|
|
4263
|
-
sig
|
|
4264
|
-
|
|
4265
|
-
|
|
4266
|
-
|
|
4267
|
-
|
|
4268
|
-
|
|
4386
|
+
sig { returns(String) }
|
|
4387
|
+
attr_accessor :email
|
|
4388
|
+
|
|
4389
|
+
sig { returns(T.nilable(String)) }
|
|
4390
|
+
attr_accessor :first_name
|
|
4391
|
+
|
|
4392
|
+
sig { returns(T.nilable(String)) }
|
|
4393
|
+
attr_accessor :last_name
|
|
4394
|
+
|
|
4395
|
+
# The team member responsible for following up on this call.
|
|
4396
|
+
sig do
|
|
4397
|
+
params(
|
|
4398
|
+
id: String,
|
|
4399
|
+
email: String,
|
|
4400
|
+
first_name: T.nilable(String),
|
|
4401
|
+
last_name: T.nilable(String)
|
|
4402
|
+
).returns(T.attached_class)
|
|
4403
|
+
end
|
|
4404
|
+
def self.new(
|
|
4405
|
+
# The database user id of the assignee.
|
|
4406
|
+
id:,
|
|
4407
|
+
email:,
|
|
4408
|
+
first_name:,
|
|
4409
|
+
last_name:
|
|
4410
|
+
)
|
|
4411
|
+
end
|
|
4412
|
+
|
|
4413
|
+
sig do
|
|
4414
|
+
override.returns(
|
|
4415
|
+
{
|
|
4416
|
+
id: String,
|
|
4417
|
+
email: String,
|
|
4418
|
+
first_name: T.nilable(String),
|
|
4419
|
+
last_name: T.nilable(String)
|
|
4420
|
+
}
|
|
4421
|
+
)
|
|
4422
|
+
end
|
|
4423
|
+
def to_hash
|
|
4424
|
+
end
|
|
4425
|
+
end
|
|
4426
|
+
|
|
4427
|
+
module Result
|
|
4428
|
+
extend Revox::Internal::Type::Enum
|
|
4429
|
+
|
|
4430
|
+
TaggedSymbol =
|
|
4431
|
+
T.type_alias do
|
|
4432
|
+
T.all(
|
|
4433
|
+
Symbol,
|
|
4434
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Result
|
|
4435
|
+
)
|
|
4436
|
+
end
|
|
4437
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
4438
|
+
|
|
4439
|
+
IVR =
|
|
4440
|
+
T.let(
|
|
4441
|
+
:IVR,
|
|
4442
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Result::TaggedSymbol
|
|
4443
|
+
)
|
|
4444
|
+
VOICEMAIL =
|
|
4445
|
+
T.let(
|
|
4446
|
+
:voicemail,
|
|
4447
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Result::TaggedSymbol
|
|
4448
|
+
)
|
|
4449
|
+
HUMAN =
|
|
4450
|
+
T.let(
|
|
4451
|
+
:human,
|
|
4452
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Result::TaggedSymbol
|
|
4453
|
+
)
|
|
4454
|
+
UNKNOWN =
|
|
4455
|
+
T.let(
|
|
4456
|
+
:unknown,
|
|
4457
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Result::TaggedSymbol
|
|
4458
|
+
)
|
|
4459
|
+
IOS_SCREENING_FILTER =
|
|
4460
|
+
T.let(
|
|
4461
|
+
:"ios-screening-filter",
|
|
4462
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Result::TaggedSymbol
|
|
4463
|
+
)
|
|
4464
|
+
|
|
4465
|
+
sig do
|
|
4466
|
+
override.returns(
|
|
4467
|
+
T::Array[
|
|
4468
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Result::TaggedSymbol
|
|
4469
|
+
]
|
|
4470
|
+
)
|
|
4269
4471
|
end
|
|
4270
4472
|
def self.values
|
|
4271
4473
|
end
|
|
@@ -4321,6 +4523,71 @@ module Revox
|
|
|
4321
4523
|
end
|
|
4322
4524
|
end
|
|
4323
4525
|
|
|
4526
|
+
class EmailLog < Revox::Internal::Type::BaseModel
|
|
4527
|
+
OrHash =
|
|
4528
|
+
T.type_alias do
|
|
4529
|
+
T.any(
|
|
4530
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::EmailLog,
|
|
4531
|
+
Revox::Internal::AnyHash
|
|
4532
|
+
)
|
|
4533
|
+
end
|
|
4534
|
+
|
|
4535
|
+
sig { returns(String) }
|
|
4536
|
+
attr_accessor :id
|
|
4537
|
+
|
|
4538
|
+
# When the email was sent.
|
|
4539
|
+
sig { returns(T.anything) }
|
|
4540
|
+
attr_accessor :created_at
|
|
4541
|
+
|
|
4542
|
+
sig { returns(String) }
|
|
4543
|
+
attr_accessor :from_address
|
|
4544
|
+
|
|
4545
|
+
sig { returns(T.nilable(String)) }
|
|
4546
|
+
attr_accessor :resend_message_id
|
|
4547
|
+
|
|
4548
|
+
sig { returns(String) }
|
|
4549
|
+
attr_accessor :subject
|
|
4550
|
+
|
|
4551
|
+
sig { returns(T::Array[String]) }
|
|
4552
|
+
attr_accessor :to_emails
|
|
4553
|
+
|
|
4554
|
+
sig do
|
|
4555
|
+
params(
|
|
4556
|
+
id: String,
|
|
4557
|
+
created_at: T.anything,
|
|
4558
|
+
from_address: String,
|
|
4559
|
+
resend_message_id: T.nilable(String),
|
|
4560
|
+
subject: String,
|
|
4561
|
+
to_emails: T::Array[String]
|
|
4562
|
+
).returns(T.attached_class)
|
|
4563
|
+
end
|
|
4564
|
+
def self.new(
|
|
4565
|
+
id:,
|
|
4566
|
+
# When the email was sent.
|
|
4567
|
+
created_at:,
|
|
4568
|
+
from_address:,
|
|
4569
|
+
resend_message_id:,
|
|
4570
|
+
subject:,
|
|
4571
|
+
to_emails:
|
|
4572
|
+
)
|
|
4573
|
+
end
|
|
4574
|
+
|
|
4575
|
+
sig do
|
|
4576
|
+
override.returns(
|
|
4577
|
+
{
|
|
4578
|
+
id: String,
|
|
4579
|
+
created_at: T.anything,
|
|
4580
|
+
from_address: String,
|
|
4581
|
+
resend_message_id: T.nilable(String),
|
|
4582
|
+
subject: String,
|
|
4583
|
+
to_emails: T::Array[String]
|
|
4584
|
+
}
|
|
4585
|
+
)
|
|
4586
|
+
end
|
|
4587
|
+
def to_hash
|
|
4588
|
+
end
|
|
4589
|
+
end
|
|
4590
|
+
|
|
4324
4591
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
4325
4592
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
4326
4593
|
module EndReason
|
|
@@ -4650,11 +4917,18 @@ module Revox
|
|
|
4650
4917
|
sig { returns(String) }
|
|
4651
4918
|
attr_accessor :message_body
|
|
4652
4919
|
|
|
4653
|
-
sig
|
|
4654
|
-
|
|
4920
|
+
sig do
|
|
4921
|
+
returns(
|
|
4922
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog::Provider::TaggedSymbol
|
|
4923
|
+
)
|
|
4924
|
+
end
|
|
4925
|
+
attr_accessor :provider
|
|
4655
4926
|
|
|
4656
4927
|
sig { returns(T.nilable(String)) }
|
|
4657
|
-
attr_accessor :
|
|
4928
|
+
attr_accessor :provider_message_id
|
|
4929
|
+
|
|
4930
|
+
sig { returns(String) }
|
|
4931
|
+
attr_accessor :to_phone_number
|
|
4658
4932
|
|
|
4659
4933
|
sig do
|
|
4660
4934
|
returns(
|
|
@@ -4668,8 +4942,10 @@ module Revox
|
|
|
4668
4942
|
id: String,
|
|
4669
4943
|
created_at: T.anything,
|
|
4670
4944
|
message_body: String,
|
|
4945
|
+
provider:
|
|
4946
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog::Provider::OrSymbol,
|
|
4947
|
+
provider_message_id: T.nilable(String),
|
|
4671
4948
|
to_phone_number: String,
|
|
4672
|
-
twilio_message_sid: T.nilable(String),
|
|
4673
4949
|
type:
|
|
4674
4950
|
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog::Type::OrSymbol
|
|
4675
4951
|
).returns(T.attached_class)
|
|
@@ -4679,8 +4955,9 @@ module Revox
|
|
|
4679
4955
|
# When the SMS was sent.
|
|
4680
4956
|
created_at:,
|
|
4681
4957
|
message_body:,
|
|
4958
|
+
provider:,
|
|
4959
|
+
provider_message_id:,
|
|
4682
4960
|
to_phone_number:,
|
|
4683
|
-
twilio_message_sid:,
|
|
4684
4961
|
type:
|
|
4685
4962
|
)
|
|
4686
4963
|
end
|
|
@@ -4691,8 +4968,10 @@ module Revox
|
|
|
4691
4968
|
id: String,
|
|
4692
4969
|
created_at: T.anything,
|
|
4693
4970
|
message_body: String,
|
|
4971
|
+
provider:
|
|
4972
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog::Provider::TaggedSymbol,
|
|
4973
|
+
provider_message_id: T.nilable(String),
|
|
4694
4974
|
to_phone_number: String,
|
|
4695
|
-
twilio_message_sid: T.nilable(String),
|
|
4696
4975
|
type:
|
|
4697
4976
|
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog::Type::TaggedSymbol
|
|
4698
4977
|
}
|
|
@@ -4701,6 +4980,40 @@ module Revox
|
|
|
4701
4980
|
def to_hash
|
|
4702
4981
|
end
|
|
4703
4982
|
|
|
4983
|
+
module Provider
|
|
4984
|
+
extend Revox::Internal::Type::Enum
|
|
4985
|
+
|
|
4986
|
+
TaggedSymbol =
|
|
4987
|
+
T.type_alias do
|
|
4988
|
+
T.all(
|
|
4989
|
+
Symbol,
|
|
4990
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog::Provider
|
|
4991
|
+
)
|
|
4992
|
+
end
|
|
4993
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
4994
|
+
|
|
4995
|
+
TWILIO =
|
|
4996
|
+
T.let(
|
|
4997
|
+
:twilio,
|
|
4998
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog::Provider::TaggedSymbol
|
|
4999
|
+
)
|
|
5000
|
+
VONAGE =
|
|
5001
|
+
T.let(
|
|
5002
|
+
:vonage,
|
|
5003
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog::Provider::TaggedSymbol
|
|
5004
|
+
)
|
|
5005
|
+
|
|
5006
|
+
sig do
|
|
5007
|
+
override.returns(
|
|
5008
|
+
T::Array[
|
|
5009
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SMSLog::Provider::TaggedSymbol
|
|
5010
|
+
]
|
|
5011
|
+
)
|
|
5012
|
+
end
|
|
5013
|
+
def self.values
|
|
5014
|
+
end
|
|
5015
|
+
end
|
|
5016
|
+
|
|
4704
5017
|
module Type
|
|
4705
5018
|
extend Revox::Internal::Type::Enum
|
|
4706
5019
|
|
|
@@ -4741,6 +5054,176 @@ module Revox
|
|
|
4741
5054
|
end
|
|
4742
5055
|
end
|
|
4743
5056
|
|
|
5057
|
+
class SpeechEvent < Revox::Internal::Type::BaseModel
|
|
5058
|
+
OrHash =
|
|
5059
|
+
T.type_alias do
|
|
5060
|
+
T.any(
|
|
5061
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SpeechEvent,
|
|
5062
|
+
Revox::Internal::AnyHash
|
|
5063
|
+
)
|
|
5064
|
+
end
|
|
5065
|
+
|
|
5066
|
+
sig { returns(String) }
|
|
5067
|
+
attr_accessor :id
|
|
5068
|
+
|
|
5069
|
+
# False when the segment was flagged as noise/blip rather than a meaningful turn.
|
|
5070
|
+
sig { returns(T::Boolean) }
|
|
5071
|
+
attr_accessor :is_real_turn
|
|
5072
|
+
|
|
5073
|
+
# Agent-only: despite the name, the whole prompt the LLM was given for this turn —
|
|
5074
|
+
# system instructions plus conversation history — as JSON.
|
|
5075
|
+
sig { returns(T.nilable(String)) }
|
|
5076
|
+
attr_accessor :llm_system_prompt
|
|
5077
|
+
|
|
5078
|
+
# Agent-only: LLM time-to-first-token for the reply, in ms.
|
|
5079
|
+
sig { returns(T.nilable(Float)) }
|
|
5080
|
+
attr_accessor :llm_ttft_ms
|
|
5081
|
+
|
|
5082
|
+
# Agent-only: the model that produced the reply — the winning leg when the LLM is
|
|
5083
|
+
# a race, which is also the model `llm_ttft_ms` describes.
|
|
5084
|
+
sig { returns(T.nilable(String)) }
|
|
5085
|
+
attr_accessor :llm_winner_model
|
|
5086
|
+
|
|
5087
|
+
# Who was speaking during this segment.
|
|
5088
|
+
sig do
|
|
5089
|
+
returns(
|
|
5090
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
5091
|
+
)
|
|
5092
|
+
end
|
|
5093
|
+
attr_accessor :speaker
|
|
5094
|
+
|
|
5095
|
+
# Milliseconds since session start when speech began.
|
|
5096
|
+
sig { returns(Float) }
|
|
5097
|
+
attr_accessor :started_speaking_at_ms
|
|
5098
|
+
|
|
5099
|
+
# Milliseconds since session start when speech ended. Null when the session ended
|
|
5100
|
+
# before the turn closed.
|
|
5101
|
+
sig { returns(T.nilable(Float)) }
|
|
5102
|
+
attr_accessor :stopped_speaking_at_ms
|
|
5103
|
+
|
|
5104
|
+
# User-only: time from end-of-speech to final transcript, in ms.
|
|
5105
|
+
sig { returns(T.nilable(Float)) }
|
|
5106
|
+
attr_accessor :stt_transcription_delay_ms
|
|
5107
|
+
|
|
5108
|
+
# Recognized text for this segment, when available.
|
|
5109
|
+
sig { returns(T.nilable(String)) }
|
|
5110
|
+
attr_accessor :transcript
|
|
5111
|
+
|
|
5112
|
+
# Agent-only: TTS time-to-first-audio-byte for the reply, in ms.
|
|
5113
|
+
sig { returns(T.nilable(Float)) }
|
|
5114
|
+
attr_accessor :tts_ttfb_ms
|
|
5115
|
+
|
|
5116
|
+
# Agent-only: true when the agent's audio was interrupted (real or auto-resumed).
|
|
5117
|
+
# Null on user segments.
|
|
5118
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
5119
|
+
attr_accessor :was_cut
|
|
5120
|
+
|
|
5121
|
+
sig do
|
|
5122
|
+
params(
|
|
5123
|
+
id: String,
|
|
5124
|
+
is_real_turn: T::Boolean,
|
|
5125
|
+
llm_system_prompt: T.nilable(String),
|
|
5126
|
+
llm_ttft_ms: T.nilable(Float),
|
|
5127
|
+
llm_winner_model: T.nilable(String),
|
|
5128
|
+
speaker:
|
|
5129
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SpeechEvent::Speaker::OrSymbol,
|
|
5130
|
+
started_speaking_at_ms: Float,
|
|
5131
|
+
stopped_speaking_at_ms: T.nilable(Float),
|
|
5132
|
+
stt_transcription_delay_ms: T.nilable(Float),
|
|
5133
|
+
transcript: T.nilable(String),
|
|
5134
|
+
tts_ttfb_ms: T.nilable(Float),
|
|
5135
|
+
was_cut: T.nilable(T::Boolean)
|
|
5136
|
+
).returns(T.attached_class)
|
|
5137
|
+
end
|
|
5138
|
+
def self.new(
|
|
5139
|
+
id:,
|
|
5140
|
+
# False when the segment was flagged as noise/blip rather than a meaningful turn.
|
|
5141
|
+
is_real_turn:,
|
|
5142
|
+
# Agent-only: despite the name, the whole prompt the LLM was given for this turn —
|
|
5143
|
+
# system instructions plus conversation history — as JSON.
|
|
5144
|
+
llm_system_prompt:,
|
|
5145
|
+
# Agent-only: LLM time-to-first-token for the reply, in ms.
|
|
5146
|
+
llm_ttft_ms:,
|
|
5147
|
+
# Agent-only: the model that produced the reply — the winning leg when the LLM is
|
|
5148
|
+
# a race, which is also the model `llm_ttft_ms` describes.
|
|
5149
|
+
llm_winner_model:,
|
|
5150
|
+
# Who was speaking during this segment.
|
|
5151
|
+
speaker:,
|
|
5152
|
+
# Milliseconds since session start when speech began.
|
|
5153
|
+
started_speaking_at_ms:,
|
|
5154
|
+
# Milliseconds since session start when speech ended. Null when the session ended
|
|
5155
|
+
# before the turn closed.
|
|
5156
|
+
stopped_speaking_at_ms:,
|
|
5157
|
+
# User-only: time from end-of-speech to final transcript, in ms.
|
|
5158
|
+
stt_transcription_delay_ms:,
|
|
5159
|
+
# Recognized text for this segment, when available.
|
|
5160
|
+
transcript:,
|
|
5161
|
+
# Agent-only: TTS time-to-first-audio-byte for the reply, in ms.
|
|
5162
|
+
tts_ttfb_ms:,
|
|
5163
|
+
# Agent-only: true when the agent's audio was interrupted (real or auto-resumed).
|
|
5164
|
+
# Null on user segments.
|
|
5165
|
+
was_cut:
|
|
5166
|
+
)
|
|
5167
|
+
end
|
|
5168
|
+
|
|
5169
|
+
sig do
|
|
5170
|
+
override.returns(
|
|
5171
|
+
{
|
|
5172
|
+
id: String,
|
|
5173
|
+
is_real_turn: T::Boolean,
|
|
5174
|
+
llm_system_prompt: T.nilable(String),
|
|
5175
|
+
llm_ttft_ms: T.nilable(Float),
|
|
5176
|
+
llm_winner_model: T.nilable(String),
|
|
5177
|
+
speaker:
|
|
5178
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SpeechEvent::Speaker::TaggedSymbol,
|
|
5179
|
+
started_speaking_at_ms: Float,
|
|
5180
|
+
stopped_speaking_at_ms: T.nilable(Float),
|
|
5181
|
+
stt_transcription_delay_ms: T.nilable(Float),
|
|
5182
|
+
transcript: T.nilable(String),
|
|
5183
|
+
tts_ttfb_ms: T.nilable(Float),
|
|
5184
|
+
was_cut: T.nilable(T::Boolean)
|
|
5185
|
+
}
|
|
5186
|
+
)
|
|
5187
|
+
end
|
|
5188
|
+
def to_hash
|
|
5189
|
+
end
|
|
5190
|
+
|
|
5191
|
+
# Who was speaking during this segment.
|
|
5192
|
+
module Speaker
|
|
5193
|
+
extend Revox::Internal::Type::Enum
|
|
5194
|
+
|
|
5195
|
+
TaggedSymbol =
|
|
5196
|
+
T.type_alias do
|
|
5197
|
+
T.all(
|
|
5198
|
+
Symbol,
|
|
5199
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SpeechEvent::Speaker
|
|
5200
|
+
)
|
|
5201
|
+
end
|
|
5202
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
5203
|
+
|
|
5204
|
+
USER =
|
|
5205
|
+
T.let(
|
|
5206
|
+
:user,
|
|
5207
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
5208
|
+
)
|
|
5209
|
+
AGENT =
|
|
5210
|
+
T.let(
|
|
5211
|
+
:agent,
|
|
5212
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
5213
|
+
)
|
|
5214
|
+
|
|
5215
|
+
sig do
|
|
5216
|
+
override.returns(
|
|
5217
|
+
T::Array[
|
|
5218
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
5219
|
+
]
|
|
5220
|
+
)
|
|
5221
|
+
end
|
|
5222
|
+
def self.values
|
|
5223
|
+
end
|
|
5224
|
+
end
|
|
5225
|
+
end
|
|
5226
|
+
|
|
4744
5227
|
class Transcript < Revox::Internal::Type::BaseModel
|
|
4745
5228
|
OrHash =
|
|
4746
5229
|
T.type_alias do
|
|
@@ -5087,7 +5570,8 @@ module Revox
|
|
|
5087
5570
|
sig { returns(String) }
|
|
5088
5571
|
attr_accessor :calling_window_start_time
|
|
5089
5572
|
|
|
5090
|
-
# Delay between retry attempts in seconds.
|
|
5573
|
+
# Delay between retry attempts in seconds. 0 retries as soon as the calling window
|
|
5574
|
+
# allows. Default: 7200 (2 hours).
|
|
5091
5575
|
sig { returns(Integer) }
|
|
5092
5576
|
attr_accessor :retry_delay_seconds
|
|
5093
5577
|
|
|
@@ -5107,7 +5591,8 @@ module Revox
|
|
|
5107
5591
|
# timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
|
|
5108
5592
|
# Examples: '09:00', '10am'. Default: '10:00'.
|
|
5109
5593
|
calling_window_start_time:,
|
|
5110
|
-
# Delay between retry attempts in seconds.
|
|
5594
|
+
# Delay between retry attempts in seconds. 0 retries as soon as the calling window
|
|
5595
|
+
# allows. Default: 7200 (2 hours).
|
|
5111
5596
|
retry_delay_seconds:
|
|
5112
5597
|
)
|
|
5113
5598
|
end
|
|
@@ -5168,6 +5653,9 @@ module Revox
|
|
|
5168
5653
|
sig { returns(T.nilable(String)) }
|
|
5169
5654
|
attr_accessor :first_name
|
|
5170
5655
|
|
|
5656
|
+
sig { returns(T.nilable(String)) }
|
|
5657
|
+
attr_accessor :job_title
|
|
5658
|
+
|
|
5171
5659
|
sig { returns(T.nilable(String)) }
|
|
5172
5660
|
attr_accessor :last_name
|
|
5173
5661
|
|
|
@@ -5178,10 +5666,11 @@ module Revox
|
|
|
5178
5666
|
company: T.nilable(String),
|
|
5179
5667
|
email: T.nilable(String),
|
|
5180
5668
|
first_name: T.nilable(String),
|
|
5669
|
+
job_title: T.nilable(String),
|
|
5181
5670
|
last_name: T.nilable(String)
|
|
5182
5671
|
).returns(T.attached_class)
|
|
5183
5672
|
end
|
|
5184
|
-
def self.new(company:, email:, first_name:, last_name:)
|
|
5673
|
+
def self.new(company:, email:, first_name:, job_title:, last_name:)
|
|
5185
5674
|
end
|
|
5186
5675
|
|
|
5187
5676
|
sig do
|
|
@@ -5190,6 +5679,7 @@ module Revox
|
|
|
5190
5679
|
company: T.nilable(String),
|
|
5191
5680
|
email: T.nilable(String),
|
|
5192
5681
|
first_name: T.nilable(String),
|
|
5682
|
+
job_title: T.nilable(String),
|
|
5193
5683
|
last_name: T.nilable(String)
|
|
5194
5684
|
}
|
|
5195
5685
|
)
|
|
@@ -5264,6 +5754,37 @@ module Revox
|
|
|
5264
5754
|
sig { returns(T.anything) }
|
|
5265
5755
|
attr_accessor :ended_at
|
|
5266
5756
|
|
|
5757
|
+
# Whether the AI agent conducted the conversation on this attempt. False for a
|
|
5758
|
+
# silent speed-dial probe (whose agent only detects a human) and for attempts that
|
|
5759
|
+
# were never answered.
|
|
5760
|
+
sig { returns(T::Boolean) }
|
|
5761
|
+
attr_accessor :handled_by_ai
|
|
5762
|
+
|
|
5763
|
+
# Whether a human operator conducted (part of) this attempt — a jump-in takeover
|
|
5764
|
+
# or a speed-dial operator connection (both stamp human_takeover_at).
|
|
5765
|
+
sig { returns(T::Boolean) }
|
|
5766
|
+
attr_accessor :handled_by_human
|
|
5767
|
+
|
|
5768
|
+
# The team member responsible for following up on this call.
|
|
5769
|
+
sig do
|
|
5770
|
+
returns(
|
|
5771
|
+
T.nilable(
|
|
5772
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::HandledByUser
|
|
5773
|
+
)
|
|
5774
|
+
)
|
|
5775
|
+
end
|
|
5776
|
+
attr_reader :handled_by_user
|
|
5777
|
+
|
|
5778
|
+
sig do
|
|
5779
|
+
params(
|
|
5780
|
+
handled_by_user:
|
|
5781
|
+
T.nilable(
|
|
5782
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::HandledByUser::OrHash
|
|
5783
|
+
)
|
|
5784
|
+
).void
|
|
5785
|
+
end
|
|
5786
|
+
attr_writer :handled_by_user
|
|
5787
|
+
|
|
5267
5788
|
# The phone number that was called. Formatted in E.164 format. Example:
|
|
5268
5789
|
# +1234567890
|
|
5269
5790
|
sig { returns(String) }
|
|
@@ -5298,6 +5819,19 @@ module Revox
|
|
|
5298
5819
|
sig { returns(T.nilable(T::Array[String])) }
|
|
5299
5820
|
attr_accessor :assistants_used
|
|
5300
5821
|
|
|
5822
|
+
# Notification emails sent in connection with the call, ordered oldest first
|
|
5823
|
+
# (from/to addresses, subject, sent time).
|
|
5824
|
+
sig do
|
|
5825
|
+
returns(
|
|
5826
|
+
T.nilable(
|
|
5827
|
+
T::Array[
|
|
5828
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EmailLog
|
|
5829
|
+
]
|
|
5830
|
+
)
|
|
5831
|
+
)
|
|
5832
|
+
end
|
|
5833
|
+
attr_accessor :email_log
|
|
5834
|
+
|
|
5301
5835
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
5302
5836
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
5303
5837
|
sig do
|
|
@@ -5331,21 +5865,35 @@ module Revox
|
|
|
5331
5865
|
)
|
|
5332
5866
|
)
|
|
5333
5867
|
end
|
|
5334
|
-
attr_accessor :post_call_transcript
|
|
5868
|
+
attr_accessor :post_call_transcript
|
|
5869
|
+
|
|
5870
|
+
# Automatic SMS sent after the call (voicemail and after-call), ordered oldest
|
|
5871
|
+
# first. The in-call `send_sms` is excluded — it already appears in the transcript
|
|
5872
|
+
# as a tool call.
|
|
5873
|
+
sig do
|
|
5874
|
+
returns(
|
|
5875
|
+
T.nilable(
|
|
5876
|
+
T::Array[
|
|
5877
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog
|
|
5878
|
+
]
|
|
5879
|
+
)
|
|
5880
|
+
)
|
|
5881
|
+
end
|
|
5882
|
+
attr_accessor :sms_log
|
|
5335
5883
|
|
|
5336
|
-
#
|
|
5337
|
-
#
|
|
5338
|
-
#
|
|
5884
|
+
# Per-turn speech segments (VAD-derived) with timing and pipeline latencies,
|
|
5885
|
+
# ordered by started_speaking_at_ms. Empty for calls recorded before this was
|
|
5886
|
+
# tracked or for realtime sessions that don't emit them.
|
|
5339
5887
|
sig do
|
|
5340
5888
|
returns(
|
|
5341
5889
|
T.nilable(
|
|
5342
5890
|
T::Array[
|
|
5343
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::
|
|
5891
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SpeechEvent
|
|
5344
5892
|
]
|
|
5345
5893
|
)
|
|
5346
5894
|
)
|
|
5347
5895
|
end
|
|
5348
|
-
attr_accessor :
|
|
5896
|
+
attr_accessor :speech_events
|
|
5349
5897
|
|
|
5350
5898
|
# The data extracted from the call, using the structured output config from the
|
|
5351
5899
|
# parent call object.
|
|
@@ -5375,6 +5923,12 @@ module Revox
|
|
|
5375
5923
|
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::DialError::OrSymbol
|
|
5376
5924
|
),
|
|
5377
5925
|
ended_at: T.anything,
|
|
5926
|
+
handled_by_ai: T::Boolean,
|
|
5927
|
+
handled_by_human: T::Boolean,
|
|
5928
|
+
handled_by_user:
|
|
5929
|
+
T.nilable(
|
|
5930
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::HandledByUser::OrHash
|
|
5931
|
+
),
|
|
5378
5932
|
phone_number: String,
|
|
5379
5933
|
recording_url: T.nilable(String),
|
|
5380
5934
|
result:
|
|
@@ -5385,6 +5939,12 @@ module Revox
|
|
|
5385
5939
|
status:
|
|
5386
5940
|
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Status::OrSymbol,
|
|
5387
5941
|
assistants_used: T.nilable(T::Array[String]),
|
|
5942
|
+
email_log:
|
|
5943
|
+
T.nilable(
|
|
5944
|
+
T::Array[
|
|
5945
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EmailLog::OrHash
|
|
5946
|
+
]
|
|
5947
|
+
),
|
|
5388
5948
|
end_reason:
|
|
5389
5949
|
T.nilable(
|
|
5390
5950
|
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EndReason::OrSymbol
|
|
@@ -5405,6 +5965,12 @@ module Revox
|
|
|
5405
5965
|
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog::OrHash
|
|
5406
5966
|
]
|
|
5407
5967
|
),
|
|
5968
|
+
speech_events:
|
|
5969
|
+
T.nilable(
|
|
5970
|
+
T::Array[
|
|
5971
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SpeechEvent::OrHash
|
|
5972
|
+
]
|
|
5973
|
+
),
|
|
5408
5974
|
structured_output: T.nilable(T::Hash[Symbol, T.anything]),
|
|
5409
5975
|
transcript:
|
|
5410
5976
|
T.nilable(
|
|
@@ -5423,6 +5989,15 @@ module Revox
|
|
|
5423
5989
|
dial_error:,
|
|
5424
5990
|
# The time the call ended.
|
|
5425
5991
|
ended_at:,
|
|
5992
|
+
# Whether the AI agent conducted the conversation on this attempt. False for a
|
|
5993
|
+
# silent speed-dial probe (whose agent only detects a human) and for attempts that
|
|
5994
|
+
# were never answered.
|
|
5995
|
+
handled_by_ai:,
|
|
5996
|
+
# Whether a human operator conducted (part of) this attempt — a jump-in takeover
|
|
5997
|
+
# or a speed-dial operator connection (both stamp human_takeover_at).
|
|
5998
|
+
handled_by_human:,
|
|
5999
|
+
# The team member responsible for following up on this call.
|
|
6000
|
+
handled_by_user:,
|
|
5426
6001
|
# The phone number that was called. Formatted in E.164 format. Example:
|
|
5427
6002
|
# +1234567890
|
|
5428
6003
|
phone_number:,
|
|
@@ -5435,6 +6010,9 @@ module Revox
|
|
|
5435
6010
|
status:,
|
|
5436
6011
|
# Assistant node ids entered during this attempt, in traversal order.
|
|
5437
6012
|
assistants_used: nil,
|
|
6013
|
+
# Notification emails sent in connection with the call, ordered oldest first
|
|
6014
|
+
# (from/to addresses, subject, sent time).
|
|
6015
|
+
email_log: nil,
|
|
5438
6016
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
5439
6017
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
5440
6018
|
end_reason: nil,
|
|
@@ -5448,6 +6026,10 @@ module Revox
|
|
|
5448
6026
|
# first. The in-call `send_sms` is excluded — it already appears in the transcript
|
|
5449
6027
|
# as a tool call.
|
|
5450
6028
|
sms_log: nil,
|
|
6029
|
+
# Per-turn speech segments (VAD-derived) with timing and pipeline latencies,
|
|
6030
|
+
# ordered by started_speaking_at_ms. Empty for calls recorded before this was
|
|
6031
|
+
# tracked or for realtime sessions that don't emit them.
|
|
6032
|
+
speech_events: nil,
|
|
5451
6033
|
# The data extracted from the call, using the structured output config from the
|
|
5452
6034
|
# parent call object.
|
|
5453
6035
|
structured_output: nil,
|
|
@@ -5466,6 +6048,12 @@ module Revox
|
|
|
5466
6048
|
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::DialError::TaggedSymbol
|
|
5467
6049
|
),
|
|
5468
6050
|
ended_at: T.anything,
|
|
6051
|
+
handled_by_ai: T::Boolean,
|
|
6052
|
+
handled_by_human: T::Boolean,
|
|
6053
|
+
handled_by_user:
|
|
6054
|
+
T.nilable(
|
|
6055
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::HandledByUser
|
|
6056
|
+
),
|
|
5469
6057
|
phone_number: String,
|
|
5470
6058
|
recording_url: T.nilable(String),
|
|
5471
6059
|
result:
|
|
@@ -5476,6 +6064,12 @@ module Revox
|
|
|
5476
6064
|
status:
|
|
5477
6065
|
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Status::TaggedSymbol,
|
|
5478
6066
|
assistants_used: T.nilable(T::Array[String]),
|
|
6067
|
+
email_log:
|
|
6068
|
+
T.nilable(
|
|
6069
|
+
T::Array[
|
|
6070
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EmailLog
|
|
6071
|
+
]
|
|
6072
|
+
),
|
|
5479
6073
|
end_reason:
|
|
5480
6074
|
T.nilable(
|
|
5481
6075
|
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EndReason::TaggedSymbol
|
|
@@ -5496,6 +6090,12 @@ module Revox
|
|
|
5496
6090
|
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog
|
|
5497
6091
|
]
|
|
5498
6092
|
),
|
|
6093
|
+
speech_events:
|
|
6094
|
+
T.nilable(
|
|
6095
|
+
T::Array[
|
|
6096
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SpeechEvent
|
|
6097
|
+
]
|
|
6098
|
+
),
|
|
5499
6099
|
structured_output: T.nilable(T::Hash[Symbol, T.anything]),
|
|
5500
6100
|
transcript:
|
|
5501
6101
|
T.nilable(
|
|
@@ -5574,6 +6174,60 @@ module Revox
|
|
|
5574
6174
|
end
|
|
5575
6175
|
end
|
|
5576
6176
|
|
|
6177
|
+
class HandledByUser < Revox::Internal::Type::BaseModel
|
|
6178
|
+
OrHash =
|
|
6179
|
+
T.type_alias do
|
|
6180
|
+
T.any(
|
|
6181
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::HandledByUser,
|
|
6182
|
+
Revox::Internal::AnyHash
|
|
6183
|
+
)
|
|
6184
|
+
end
|
|
6185
|
+
|
|
6186
|
+
# The database user id of the assignee.
|
|
6187
|
+
sig { returns(String) }
|
|
6188
|
+
attr_accessor :id
|
|
6189
|
+
|
|
6190
|
+
sig { returns(String) }
|
|
6191
|
+
attr_accessor :email
|
|
6192
|
+
|
|
6193
|
+
sig { returns(T.nilable(String)) }
|
|
6194
|
+
attr_accessor :first_name
|
|
6195
|
+
|
|
6196
|
+
sig { returns(T.nilable(String)) }
|
|
6197
|
+
attr_accessor :last_name
|
|
6198
|
+
|
|
6199
|
+
# The team member responsible for following up on this call.
|
|
6200
|
+
sig do
|
|
6201
|
+
params(
|
|
6202
|
+
id: String,
|
|
6203
|
+
email: String,
|
|
6204
|
+
first_name: T.nilable(String),
|
|
6205
|
+
last_name: T.nilable(String)
|
|
6206
|
+
).returns(T.attached_class)
|
|
6207
|
+
end
|
|
6208
|
+
def self.new(
|
|
6209
|
+
# The database user id of the assignee.
|
|
6210
|
+
id:,
|
|
6211
|
+
email:,
|
|
6212
|
+
first_name:,
|
|
6213
|
+
last_name:
|
|
6214
|
+
)
|
|
6215
|
+
end
|
|
6216
|
+
|
|
6217
|
+
sig do
|
|
6218
|
+
override.returns(
|
|
6219
|
+
{
|
|
6220
|
+
id: String,
|
|
6221
|
+
email: String,
|
|
6222
|
+
first_name: T.nilable(String),
|
|
6223
|
+
last_name: T.nilable(String)
|
|
6224
|
+
}
|
|
6225
|
+
)
|
|
6226
|
+
end
|
|
6227
|
+
def to_hash
|
|
6228
|
+
end
|
|
6229
|
+
end
|
|
6230
|
+
|
|
5577
6231
|
module Result
|
|
5578
6232
|
extend Revox::Internal::Type::Enum
|
|
5579
6233
|
|
|
@@ -5673,6 +6327,71 @@ module Revox
|
|
|
5673
6327
|
end
|
|
5674
6328
|
end
|
|
5675
6329
|
|
|
6330
|
+
class EmailLog < Revox::Internal::Type::BaseModel
|
|
6331
|
+
OrHash =
|
|
6332
|
+
T.type_alias do
|
|
6333
|
+
T.any(
|
|
6334
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::EmailLog,
|
|
6335
|
+
Revox::Internal::AnyHash
|
|
6336
|
+
)
|
|
6337
|
+
end
|
|
6338
|
+
|
|
6339
|
+
sig { returns(String) }
|
|
6340
|
+
attr_accessor :id
|
|
6341
|
+
|
|
6342
|
+
# When the email was sent.
|
|
6343
|
+
sig { returns(T.anything) }
|
|
6344
|
+
attr_accessor :created_at
|
|
6345
|
+
|
|
6346
|
+
sig { returns(String) }
|
|
6347
|
+
attr_accessor :from_address
|
|
6348
|
+
|
|
6349
|
+
sig { returns(T.nilable(String)) }
|
|
6350
|
+
attr_accessor :resend_message_id
|
|
6351
|
+
|
|
6352
|
+
sig { returns(String) }
|
|
6353
|
+
attr_accessor :subject
|
|
6354
|
+
|
|
6355
|
+
sig { returns(T::Array[String]) }
|
|
6356
|
+
attr_accessor :to_emails
|
|
6357
|
+
|
|
6358
|
+
sig do
|
|
6359
|
+
params(
|
|
6360
|
+
id: String,
|
|
6361
|
+
created_at: T.anything,
|
|
6362
|
+
from_address: String,
|
|
6363
|
+
resend_message_id: T.nilable(String),
|
|
6364
|
+
subject: String,
|
|
6365
|
+
to_emails: T::Array[String]
|
|
6366
|
+
).returns(T.attached_class)
|
|
6367
|
+
end
|
|
6368
|
+
def self.new(
|
|
6369
|
+
id:,
|
|
6370
|
+
# When the email was sent.
|
|
6371
|
+
created_at:,
|
|
6372
|
+
from_address:,
|
|
6373
|
+
resend_message_id:,
|
|
6374
|
+
subject:,
|
|
6375
|
+
to_emails:
|
|
6376
|
+
)
|
|
6377
|
+
end
|
|
6378
|
+
|
|
6379
|
+
sig do
|
|
6380
|
+
override.returns(
|
|
6381
|
+
{
|
|
6382
|
+
id: String,
|
|
6383
|
+
created_at: T.anything,
|
|
6384
|
+
from_address: String,
|
|
6385
|
+
resend_message_id: T.nilable(String),
|
|
6386
|
+
subject: String,
|
|
6387
|
+
to_emails: T::Array[String]
|
|
6388
|
+
}
|
|
6389
|
+
)
|
|
6390
|
+
end
|
|
6391
|
+
def to_hash
|
|
6392
|
+
end
|
|
6393
|
+
end
|
|
6394
|
+
|
|
5676
6395
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
5677
6396
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
5678
6397
|
module EndReason
|
|
@@ -6002,11 +6721,18 @@ module Revox
|
|
|
6002
6721
|
sig { returns(String) }
|
|
6003
6722
|
attr_accessor :message_body
|
|
6004
6723
|
|
|
6005
|
-
sig
|
|
6006
|
-
|
|
6724
|
+
sig do
|
|
6725
|
+
returns(
|
|
6726
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog::Provider::TaggedSymbol
|
|
6727
|
+
)
|
|
6728
|
+
end
|
|
6729
|
+
attr_accessor :provider
|
|
6007
6730
|
|
|
6008
6731
|
sig { returns(T.nilable(String)) }
|
|
6009
|
-
attr_accessor :
|
|
6732
|
+
attr_accessor :provider_message_id
|
|
6733
|
+
|
|
6734
|
+
sig { returns(String) }
|
|
6735
|
+
attr_accessor :to_phone_number
|
|
6010
6736
|
|
|
6011
6737
|
sig do
|
|
6012
6738
|
returns(
|
|
@@ -6020,8 +6746,10 @@ module Revox
|
|
|
6020
6746
|
id: String,
|
|
6021
6747
|
created_at: T.anything,
|
|
6022
6748
|
message_body: String,
|
|
6749
|
+
provider:
|
|
6750
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog::Provider::OrSymbol,
|
|
6751
|
+
provider_message_id: T.nilable(String),
|
|
6023
6752
|
to_phone_number: String,
|
|
6024
|
-
twilio_message_sid: T.nilable(String),
|
|
6025
6753
|
type:
|
|
6026
6754
|
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog::Type::OrSymbol
|
|
6027
6755
|
).returns(T.attached_class)
|
|
@@ -6031,8 +6759,9 @@ module Revox
|
|
|
6031
6759
|
# When the SMS was sent.
|
|
6032
6760
|
created_at:,
|
|
6033
6761
|
message_body:,
|
|
6762
|
+
provider:,
|
|
6763
|
+
provider_message_id:,
|
|
6034
6764
|
to_phone_number:,
|
|
6035
|
-
twilio_message_sid:,
|
|
6036
6765
|
type:
|
|
6037
6766
|
)
|
|
6038
6767
|
end
|
|
@@ -6043,8 +6772,10 @@ module Revox
|
|
|
6043
6772
|
id: String,
|
|
6044
6773
|
created_at: T.anything,
|
|
6045
6774
|
message_body: String,
|
|
6775
|
+
provider:
|
|
6776
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog::Provider::TaggedSymbol,
|
|
6777
|
+
provider_message_id: T.nilable(String),
|
|
6046
6778
|
to_phone_number: String,
|
|
6047
|
-
twilio_message_sid: T.nilable(String),
|
|
6048
6779
|
type:
|
|
6049
6780
|
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog::Type::TaggedSymbol
|
|
6050
6781
|
}
|
|
@@ -6053,6 +6784,40 @@ module Revox
|
|
|
6053
6784
|
def to_hash
|
|
6054
6785
|
end
|
|
6055
6786
|
|
|
6787
|
+
module Provider
|
|
6788
|
+
extend Revox::Internal::Type::Enum
|
|
6789
|
+
|
|
6790
|
+
TaggedSymbol =
|
|
6791
|
+
T.type_alias do
|
|
6792
|
+
T.all(
|
|
6793
|
+
Symbol,
|
|
6794
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog::Provider
|
|
6795
|
+
)
|
|
6796
|
+
end
|
|
6797
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
6798
|
+
|
|
6799
|
+
TWILIO =
|
|
6800
|
+
T.let(
|
|
6801
|
+
:twilio,
|
|
6802
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog::Provider::TaggedSymbol
|
|
6803
|
+
)
|
|
6804
|
+
VONAGE =
|
|
6805
|
+
T.let(
|
|
6806
|
+
:vonage,
|
|
6807
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog::Provider::TaggedSymbol
|
|
6808
|
+
)
|
|
6809
|
+
|
|
6810
|
+
sig do
|
|
6811
|
+
override.returns(
|
|
6812
|
+
T::Array[
|
|
6813
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SMSLog::Provider::TaggedSymbol
|
|
6814
|
+
]
|
|
6815
|
+
)
|
|
6816
|
+
end
|
|
6817
|
+
def self.values
|
|
6818
|
+
end
|
|
6819
|
+
end
|
|
6820
|
+
|
|
6056
6821
|
module Type
|
|
6057
6822
|
extend Revox::Internal::Type::Enum
|
|
6058
6823
|
|
|
@@ -6093,6 +6858,176 @@ module Revox
|
|
|
6093
6858
|
end
|
|
6094
6859
|
end
|
|
6095
6860
|
|
|
6861
|
+
class SpeechEvent < Revox::Internal::Type::BaseModel
|
|
6862
|
+
OrHash =
|
|
6863
|
+
T.type_alias do
|
|
6864
|
+
T.any(
|
|
6865
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SpeechEvent,
|
|
6866
|
+
Revox::Internal::AnyHash
|
|
6867
|
+
)
|
|
6868
|
+
end
|
|
6869
|
+
|
|
6870
|
+
sig { returns(String) }
|
|
6871
|
+
attr_accessor :id
|
|
6872
|
+
|
|
6873
|
+
# False when the segment was flagged as noise/blip rather than a meaningful turn.
|
|
6874
|
+
sig { returns(T::Boolean) }
|
|
6875
|
+
attr_accessor :is_real_turn
|
|
6876
|
+
|
|
6877
|
+
# Agent-only: despite the name, the whole prompt the LLM was given for this turn —
|
|
6878
|
+
# system instructions plus conversation history — as JSON.
|
|
6879
|
+
sig { returns(T.nilable(String)) }
|
|
6880
|
+
attr_accessor :llm_system_prompt
|
|
6881
|
+
|
|
6882
|
+
# Agent-only: LLM time-to-first-token for the reply, in ms.
|
|
6883
|
+
sig { returns(T.nilable(Float)) }
|
|
6884
|
+
attr_accessor :llm_ttft_ms
|
|
6885
|
+
|
|
6886
|
+
# Agent-only: the model that produced the reply — the winning leg when the LLM is
|
|
6887
|
+
# a race, which is also the model `llm_ttft_ms` describes.
|
|
6888
|
+
sig { returns(T.nilable(String)) }
|
|
6889
|
+
attr_accessor :llm_winner_model
|
|
6890
|
+
|
|
6891
|
+
# Who was speaking during this segment.
|
|
6892
|
+
sig do
|
|
6893
|
+
returns(
|
|
6894
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
6895
|
+
)
|
|
6896
|
+
end
|
|
6897
|
+
attr_accessor :speaker
|
|
6898
|
+
|
|
6899
|
+
# Milliseconds since session start when speech began.
|
|
6900
|
+
sig { returns(Float) }
|
|
6901
|
+
attr_accessor :started_speaking_at_ms
|
|
6902
|
+
|
|
6903
|
+
# Milliseconds since session start when speech ended. Null when the session ended
|
|
6904
|
+
# before the turn closed.
|
|
6905
|
+
sig { returns(T.nilable(Float)) }
|
|
6906
|
+
attr_accessor :stopped_speaking_at_ms
|
|
6907
|
+
|
|
6908
|
+
# User-only: time from end-of-speech to final transcript, in ms.
|
|
6909
|
+
sig { returns(T.nilable(Float)) }
|
|
6910
|
+
attr_accessor :stt_transcription_delay_ms
|
|
6911
|
+
|
|
6912
|
+
# Recognized text for this segment, when available.
|
|
6913
|
+
sig { returns(T.nilable(String)) }
|
|
6914
|
+
attr_accessor :transcript
|
|
6915
|
+
|
|
6916
|
+
# Agent-only: TTS time-to-first-audio-byte for the reply, in ms.
|
|
6917
|
+
sig { returns(T.nilable(Float)) }
|
|
6918
|
+
attr_accessor :tts_ttfb_ms
|
|
6919
|
+
|
|
6920
|
+
# Agent-only: true when the agent's audio was interrupted (real or auto-resumed).
|
|
6921
|
+
# Null on user segments.
|
|
6922
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
6923
|
+
attr_accessor :was_cut
|
|
6924
|
+
|
|
6925
|
+
sig do
|
|
6926
|
+
params(
|
|
6927
|
+
id: String,
|
|
6928
|
+
is_real_turn: T::Boolean,
|
|
6929
|
+
llm_system_prompt: T.nilable(String),
|
|
6930
|
+
llm_ttft_ms: T.nilable(Float),
|
|
6931
|
+
llm_winner_model: T.nilable(String),
|
|
6932
|
+
speaker:
|
|
6933
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SpeechEvent::Speaker::OrSymbol,
|
|
6934
|
+
started_speaking_at_ms: Float,
|
|
6935
|
+
stopped_speaking_at_ms: T.nilable(Float),
|
|
6936
|
+
stt_transcription_delay_ms: T.nilable(Float),
|
|
6937
|
+
transcript: T.nilable(String),
|
|
6938
|
+
tts_ttfb_ms: T.nilable(Float),
|
|
6939
|
+
was_cut: T.nilable(T::Boolean)
|
|
6940
|
+
).returns(T.attached_class)
|
|
6941
|
+
end
|
|
6942
|
+
def self.new(
|
|
6943
|
+
id:,
|
|
6944
|
+
# False when the segment was flagged as noise/blip rather than a meaningful turn.
|
|
6945
|
+
is_real_turn:,
|
|
6946
|
+
# Agent-only: despite the name, the whole prompt the LLM was given for this turn —
|
|
6947
|
+
# system instructions plus conversation history — as JSON.
|
|
6948
|
+
llm_system_prompt:,
|
|
6949
|
+
# Agent-only: LLM time-to-first-token for the reply, in ms.
|
|
6950
|
+
llm_ttft_ms:,
|
|
6951
|
+
# Agent-only: the model that produced the reply — the winning leg when the LLM is
|
|
6952
|
+
# a race, which is also the model `llm_ttft_ms` describes.
|
|
6953
|
+
llm_winner_model:,
|
|
6954
|
+
# Who was speaking during this segment.
|
|
6955
|
+
speaker:,
|
|
6956
|
+
# Milliseconds since session start when speech began.
|
|
6957
|
+
started_speaking_at_ms:,
|
|
6958
|
+
# Milliseconds since session start when speech ended. Null when the session ended
|
|
6959
|
+
# before the turn closed.
|
|
6960
|
+
stopped_speaking_at_ms:,
|
|
6961
|
+
# User-only: time from end-of-speech to final transcript, in ms.
|
|
6962
|
+
stt_transcription_delay_ms:,
|
|
6963
|
+
# Recognized text for this segment, when available.
|
|
6964
|
+
transcript:,
|
|
6965
|
+
# Agent-only: TTS time-to-first-audio-byte for the reply, in ms.
|
|
6966
|
+
tts_ttfb_ms:,
|
|
6967
|
+
# Agent-only: true when the agent's audio was interrupted (real or auto-resumed).
|
|
6968
|
+
# Null on user segments.
|
|
6969
|
+
was_cut:
|
|
6970
|
+
)
|
|
6971
|
+
end
|
|
6972
|
+
|
|
6973
|
+
sig do
|
|
6974
|
+
override.returns(
|
|
6975
|
+
{
|
|
6976
|
+
id: String,
|
|
6977
|
+
is_real_turn: T::Boolean,
|
|
6978
|
+
llm_system_prompt: T.nilable(String),
|
|
6979
|
+
llm_ttft_ms: T.nilable(Float),
|
|
6980
|
+
llm_winner_model: T.nilable(String),
|
|
6981
|
+
speaker:
|
|
6982
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SpeechEvent::Speaker::TaggedSymbol,
|
|
6983
|
+
started_speaking_at_ms: Float,
|
|
6984
|
+
stopped_speaking_at_ms: T.nilable(Float),
|
|
6985
|
+
stt_transcription_delay_ms: T.nilable(Float),
|
|
6986
|
+
transcript: T.nilable(String),
|
|
6987
|
+
tts_ttfb_ms: T.nilable(Float),
|
|
6988
|
+
was_cut: T.nilable(T::Boolean)
|
|
6989
|
+
}
|
|
6990
|
+
)
|
|
6991
|
+
end
|
|
6992
|
+
def to_hash
|
|
6993
|
+
end
|
|
6994
|
+
|
|
6995
|
+
# Who was speaking during this segment.
|
|
6996
|
+
module Speaker
|
|
6997
|
+
extend Revox::Internal::Type::Enum
|
|
6998
|
+
|
|
6999
|
+
TaggedSymbol =
|
|
7000
|
+
T.type_alias do
|
|
7001
|
+
T.all(
|
|
7002
|
+
Symbol,
|
|
7003
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SpeechEvent::Speaker
|
|
7004
|
+
)
|
|
7005
|
+
end
|
|
7006
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
7007
|
+
|
|
7008
|
+
USER =
|
|
7009
|
+
T.let(
|
|
7010
|
+
:user,
|
|
7011
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
7012
|
+
)
|
|
7013
|
+
AGENT =
|
|
7014
|
+
T.let(
|
|
7015
|
+
:agent,
|
|
7016
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
7017
|
+
)
|
|
7018
|
+
|
|
7019
|
+
sig do
|
|
7020
|
+
override.returns(
|
|
7021
|
+
T::Array[
|
|
7022
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
7023
|
+
]
|
|
7024
|
+
)
|
|
7025
|
+
end
|
|
7026
|
+
def self.values
|
|
7027
|
+
end
|
|
7028
|
+
end
|
|
7029
|
+
end
|
|
7030
|
+
|
|
6096
7031
|
class Transcript < Revox::Internal::Type::BaseModel
|
|
6097
7032
|
OrHash =
|
|
6098
7033
|
T.type_alias do
|
|
@@ -6603,6 +7538,11 @@ module Revox
|
|
|
6603
7538
|
:post_processing,
|
|
6604
7539
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Status::TaggedSymbol
|
|
6605
7540
|
)
|
|
7541
|
+
NOT_LAUNCHED =
|
|
7542
|
+
T.let(
|
|
7543
|
+
:not_launched,
|
|
7544
|
+
Revox::Models::CampaignGetRowsResponse::Row::Call::Status::TaggedSymbol
|
|
7545
|
+
)
|
|
6606
7546
|
SCHEDULED =
|
|
6607
7547
|
T.let(
|
|
6608
7548
|
:scheduled,
|
|
@@ -6673,21 +7613,6 @@ module Revox
|
|
|
6673
7613
|
:requested_callback_later,
|
|
6674
7614
|
Revox::Models::CampaignGetRowsResponse::Row::Call::Outcome::TaggedSymbol
|
|
6675
7615
|
)
|
|
6676
|
-
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
6677
|
-
T.let(
|
|
6678
|
-
:requested_callback_new_number,
|
|
6679
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Outcome::TaggedSymbol
|
|
6680
|
-
)
|
|
6681
|
-
DO_NOT_CONTACT =
|
|
6682
|
-
T.let(
|
|
6683
|
-
:do_not_contact,
|
|
6684
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Outcome::TaggedSymbol
|
|
6685
|
-
)
|
|
6686
|
-
AI_AVERSE =
|
|
6687
|
-
T.let(
|
|
6688
|
-
:ai_averse,
|
|
6689
|
-
Revox::Models::CampaignGetRowsResponse::Row::Call::Outcome::TaggedSymbol
|
|
6690
|
-
)
|
|
6691
7616
|
|
|
6692
7617
|
sig do
|
|
6693
7618
|
override.returns(
|