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
|
@@ -237,6 +237,12 @@ module Revox
|
|
|
237
237
|
sig { returns(T.anything) }
|
|
238
238
|
attr_accessor :updated_at
|
|
239
239
|
|
|
240
|
+
# Extra notification recipients resolved from the agent prompt's own routing
|
|
241
|
+
# rules, when it defines any. Added to the assistant's configured notification
|
|
242
|
+
# recipients; never replaces them. Null when the prompt defines no routing rules.
|
|
243
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
244
|
+
attr_accessor :follow_up_emails
|
|
245
|
+
|
|
240
246
|
# Business outcome of the call. Null if not computed or no transcript.
|
|
241
247
|
sig do
|
|
242
248
|
returns(
|
|
@@ -251,6 +257,13 @@ module Revox
|
|
|
251
257
|
sig { returns(T.nilable(String)) }
|
|
252
258
|
attr_accessor :outcome_summary
|
|
253
259
|
|
|
260
|
+
# Slack channels resolved from the agent prompt's own routing rules, when it
|
|
261
|
+
# defines any. Always a subset of the channels configured on the assistant. Null
|
|
262
|
+
# when the prompt defines no routing rules, in which case every configured channel
|
|
263
|
+
# is notified.
|
|
264
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
265
|
+
attr_accessor :slack_channel_ids
|
|
266
|
+
|
|
254
267
|
# This represent a call "order" that was requested by the user. A call order can
|
|
255
268
|
# be resolved over multiple call attempts spanning up to a few days.
|
|
256
269
|
sig do
|
|
@@ -303,11 +316,13 @@ module Revox
|
|
|
303
316
|
status: Revox::Models::CallRetrieveResponse::Call::Status::OrSymbol,
|
|
304
317
|
to_phone_number: String,
|
|
305
318
|
updated_at: T.anything,
|
|
319
|
+
follow_up_emails: T.nilable(T::Array[String]),
|
|
306
320
|
outcome:
|
|
307
321
|
T.nilable(
|
|
308
322
|
Revox::Models::CallRetrieveResponse::Call::Outcome::OrSymbol
|
|
309
323
|
),
|
|
310
|
-
outcome_summary: T.nilable(String)
|
|
324
|
+
outcome_summary: T.nilable(String),
|
|
325
|
+
slack_channel_ids: T.nilable(T::Array[String])
|
|
311
326
|
).returns(T.attached_class)
|
|
312
327
|
end
|
|
313
328
|
def self.new(
|
|
@@ -362,10 +377,19 @@ module Revox
|
|
|
362
377
|
# The time the call order was last updated (any state change, retry, or analysis
|
|
363
378
|
# result).
|
|
364
379
|
updated_at:,
|
|
380
|
+
# Extra notification recipients resolved from the agent prompt's own routing
|
|
381
|
+
# rules, when it defines any. Added to the assistant's configured notification
|
|
382
|
+
# recipients; never replaces them. Null when the prompt defines no routing rules.
|
|
383
|
+
follow_up_emails: nil,
|
|
365
384
|
# Business outcome of the call. Null if not computed or no transcript.
|
|
366
385
|
outcome: nil,
|
|
367
386
|
# LLM explanation for the outcome, when outcome was computed from the transcript.
|
|
368
|
-
outcome_summary: nil
|
|
387
|
+
outcome_summary: nil,
|
|
388
|
+
# Slack channels resolved from the agent prompt's own routing rules, when it
|
|
389
|
+
# defines any. Always a subset of the channels configured on the assistant. Null
|
|
390
|
+
# when the prompt defines no routing rules, in which case every configured channel
|
|
391
|
+
# is notified.
|
|
392
|
+
slack_channel_ids: nil
|
|
369
393
|
)
|
|
370
394
|
end
|
|
371
395
|
|
|
@@ -410,11 +434,13 @@ module Revox
|
|
|
410
434
|
Revox::Models::CallRetrieveResponse::Call::Status::TaggedSymbol,
|
|
411
435
|
to_phone_number: String,
|
|
412
436
|
updated_at: T.anything,
|
|
437
|
+
follow_up_emails: T.nilable(T::Array[String]),
|
|
413
438
|
outcome:
|
|
414
439
|
T.nilable(
|
|
415
440
|
Revox::Models::CallRetrieveResponse::Call::Outcome::TaggedSymbol
|
|
416
441
|
),
|
|
417
|
-
outcome_summary: T.nilable(String)
|
|
442
|
+
outcome_summary: T.nilable(String),
|
|
443
|
+
slack_channel_ids: T.nilable(T::Array[String])
|
|
418
444
|
}
|
|
419
445
|
)
|
|
420
446
|
end
|
|
@@ -583,14 +609,6 @@ module Revox
|
|
|
583
609
|
sig { returns(T.nilable(String)) }
|
|
584
610
|
attr_accessor :email_notification_address
|
|
585
611
|
|
|
586
|
-
# The language used for the notification email content. One of "en" or "fr".
|
|
587
|
-
sig do
|
|
588
|
-
returns(
|
|
589
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
590
|
-
)
|
|
591
|
-
end
|
|
592
|
-
attr_accessor :email_notification_language
|
|
593
|
-
|
|
594
612
|
# Which call outcomes trigger an email notification. E.g. ["interested",
|
|
595
613
|
# "completed", "none"]. Use "none" when outcome is null.
|
|
596
614
|
sig do
|
|
@@ -626,8 +644,8 @@ module Revox
|
|
|
626
644
|
sig { returns(T.nilable(String)) }
|
|
627
645
|
attr_accessor :from_phone_number
|
|
628
646
|
|
|
629
|
-
# Warm or cold transfer when
|
|
630
|
-
# not configured.
|
|
647
|
+
# Warm or cold transfer when transfer_destinations is non-empty; null when
|
|
648
|
+
# transfer is not configured.
|
|
631
649
|
sig do
|
|
632
650
|
returns(
|
|
633
651
|
T.nilable(
|
|
@@ -690,6 +708,11 @@ module Revox
|
|
|
690
708
|
end
|
|
691
709
|
attr_writer :position
|
|
692
710
|
|
|
711
|
+
# URL fetched before an inbound call is answered to resolve the assistant's prompt
|
|
712
|
+
# variables. Null when no lookup is configured.
|
|
713
|
+
sig { returns(T.nilable(String)) }
|
|
714
|
+
attr_accessor :precall_lookup_url
|
|
715
|
+
|
|
693
716
|
sig { returns(String) }
|
|
694
717
|
attr_accessor :prompt
|
|
695
718
|
|
|
@@ -811,9 +834,18 @@ module Revox
|
|
|
811
834
|
sig { returns(Float) }
|
|
812
835
|
attr_accessor :thinking_sound_volume
|
|
813
836
|
|
|
814
|
-
#
|
|
815
|
-
|
|
816
|
-
|
|
837
|
+
# Where calls can be transferred to when users ask to speak to a human. Null or
|
|
838
|
+
# empty when transfer is not configured.
|
|
839
|
+
sig do
|
|
840
|
+
returns(
|
|
841
|
+
T.nilable(
|
|
842
|
+
T::Array[
|
|
843
|
+
Revox::Models::CallRetrieveResponse::Call::Assistant::TransferDestination
|
|
844
|
+
]
|
|
845
|
+
)
|
|
846
|
+
)
|
|
847
|
+
end
|
|
848
|
+
attr_accessor :transfer_destinations
|
|
817
849
|
|
|
818
850
|
sig do
|
|
819
851
|
returns(
|
|
@@ -923,6 +955,12 @@ module Revox
|
|
|
923
955
|
end
|
|
924
956
|
attr_writer :faq_items
|
|
925
957
|
|
|
958
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
959
|
+
attr_reader :is_inbound_receptionist
|
|
960
|
+
|
|
961
|
+
sig { params(is_inbound_receptionist: T::Boolean).void }
|
|
962
|
+
attr_writer :is_inbound_receptionist
|
|
963
|
+
|
|
926
964
|
sig { returns(T.nilable(T::Boolean)) }
|
|
927
965
|
attr_reader :is_realestate_assistant
|
|
928
966
|
|
|
@@ -967,8 +1005,6 @@ module Revox
|
|
|
967
1005
|
]
|
|
968
1006
|
),
|
|
969
1007
|
email_notification_address: T.nilable(String),
|
|
970
|
-
email_notification_language:
|
|
971
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationLanguage::OrSymbol,
|
|
972
1008
|
email_notification_outcomes:
|
|
973
1009
|
T.nilable(
|
|
974
1010
|
T::Array[
|
|
@@ -1002,6 +1038,7 @@ module Revox
|
|
|
1002
1038
|
T.nilable(
|
|
1003
1039
|
Revox::Models::CallRetrieveResponse::Call::Assistant::Position::OrHash
|
|
1004
1040
|
),
|
|
1041
|
+
precall_lookup_url: T.nilable(String),
|
|
1005
1042
|
prompt: String,
|
|
1006
1043
|
prompt_flow:
|
|
1007
1044
|
T.nilable(
|
|
@@ -1032,7 +1069,12 @@ module Revox
|
|
|
1032
1069
|
),
|
|
1033
1070
|
thinking_sound_probability: Float,
|
|
1034
1071
|
thinking_sound_volume: Float,
|
|
1035
|
-
|
|
1072
|
+
transfer_destinations:
|
|
1073
|
+
T.nilable(
|
|
1074
|
+
T::Array[
|
|
1075
|
+
Revox::Models::CallRetrieveResponse::Call::Assistant::TransferDestination::OrHash
|
|
1076
|
+
]
|
|
1077
|
+
),
|
|
1036
1078
|
type:
|
|
1037
1079
|
Revox::Models::CallRetrieveResponse::Call::Assistant::Type::OrSymbol,
|
|
1038
1080
|
updated_at: T.anything,
|
|
@@ -1056,6 +1098,7 @@ module Revox
|
|
|
1056
1098
|
T::Array[
|
|
1057
1099
|
Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem::OrHash
|
|
1058
1100
|
],
|
|
1101
|
+
is_inbound_receptionist: T::Boolean,
|
|
1059
1102
|
is_realestate_assistant: T::Boolean,
|
|
1060
1103
|
pending_faq_count: Float
|
|
1061
1104
|
).returns(T.attached_class)
|
|
@@ -1084,8 +1127,6 @@ module Revox
|
|
|
1084
1127
|
# outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
|
|
1085
1128
|
# bob@y.com").
|
|
1086
1129
|
email_notification_address:,
|
|
1087
|
-
# The language used for the notification email content. One of "en" or "fr".
|
|
1088
|
-
email_notification_language:,
|
|
1089
1130
|
# Which call outcomes trigger an email notification. E.g. ["interested",
|
|
1090
1131
|
# "completed", "none"]. Use "none" when outcome is null.
|
|
1091
1132
|
email_notification_outcomes:,
|
|
@@ -1097,8 +1138,8 @@ module Revox
|
|
|
1097
1138
|
# Override the default outbound phone number for calls placed with this assistant.
|
|
1098
1139
|
# When null, the organization's default phone number is used.
|
|
1099
1140
|
from_phone_number:,
|
|
1100
|
-
# Warm or cold transfer when
|
|
1101
|
-
# not configured.
|
|
1141
|
+
# Warm or cold transfer when transfer_destinations is non-empty; null when
|
|
1142
|
+
# transfer is not configured.
|
|
1102
1143
|
human_transfer_mode:,
|
|
1103
1144
|
# Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
|
|
1104
1145
|
# skip turns to navigate phone menus.
|
|
@@ -1117,6 +1158,9 @@ module Revox
|
|
|
1117
1158
|
name:,
|
|
1118
1159
|
organization_id:,
|
|
1119
1160
|
position:,
|
|
1161
|
+
# URL fetched before an inbound call is answered to resolve the assistant's prompt
|
|
1162
|
+
# variables. Null when no lookup is configured.
|
|
1163
|
+
precall_lookup_url:,
|
|
1120
1164
|
prompt:,
|
|
1121
1165
|
prompt_flow:,
|
|
1122
1166
|
slack:,
|
|
@@ -1148,8 +1192,9 @@ module Revox
|
|
|
1148
1192
|
thinking_sound_probability:,
|
|
1149
1193
|
# Volume of the thinking sound (0 = silent, 1 = max).
|
|
1150
1194
|
thinking_sound_volume:,
|
|
1151
|
-
#
|
|
1152
|
-
|
|
1195
|
+
# Where calls can be transferred to when users ask to speak to a human. Null or
|
|
1196
|
+
# empty when transfer is not configured.
|
|
1197
|
+
transfer_destinations:,
|
|
1153
1198
|
type:,
|
|
1154
1199
|
updated_at:,
|
|
1155
1200
|
voice:,
|
|
@@ -1168,6 +1213,7 @@ module Revox
|
|
|
1168
1213
|
# The user who created the assistant.
|
|
1169
1214
|
created_by: nil,
|
|
1170
1215
|
faq_items: nil,
|
|
1216
|
+
is_inbound_receptionist: nil,
|
|
1171
1217
|
is_realestate_assistant: nil,
|
|
1172
1218
|
pending_faq_count: nil
|
|
1173
1219
|
)
|
|
@@ -1206,8 +1252,6 @@ module Revox
|
|
|
1206
1252
|
]
|
|
1207
1253
|
),
|
|
1208
1254
|
email_notification_address: T.nilable(String),
|
|
1209
|
-
email_notification_language:
|
|
1210
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationLanguage::TaggedSymbol,
|
|
1211
1255
|
email_notification_outcomes:
|
|
1212
1256
|
T.nilable(
|
|
1213
1257
|
T::Array[
|
|
@@ -1236,6 +1280,7 @@ module Revox
|
|
|
1236
1280
|
T.nilable(
|
|
1237
1281
|
Revox::Models::CallRetrieveResponse::Call::Assistant::Position
|
|
1238
1282
|
),
|
|
1283
|
+
precall_lookup_url: T.nilable(String),
|
|
1239
1284
|
prompt: String,
|
|
1240
1285
|
prompt_flow:
|
|
1241
1286
|
T.nilable(
|
|
@@ -1266,7 +1311,12 @@ module Revox
|
|
|
1266
1311
|
),
|
|
1267
1312
|
thinking_sound_probability: Float,
|
|
1268
1313
|
thinking_sound_volume: Float,
|
|
1269
|
-
|
|
1314
|
+
transfer_destinations:
|
|
1315
|
+
T.nilable(
|
|
1316
|
+
T::Array[
|
|
1317
|
+
Revox::Models::CallRetrieveResponse::Call::Assistant::TransferDestination
|
|
1318
|
+
]
|
|
1319
|
+
),
|
|
1270
1320
|
type:
|
|
1271
1321
|
Revox::Models::CallRetrieveResponse::Call::Assistant::Type::TaggedSymbol,
|
|
1272
1322
|
updated_at: T.anything,
|
|
@@ -1290,6 +1340,7 @@ module Revox
|
|
|
1290
1340
|
T::Array[
|
|
1291
1341
|
Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem
|
|
1292
1342
|
],
|
|
1343
|
+
is_inbound_receptionist: T::Boolean,
|
|
1293
1344
|
is_realestate_assistant: T::Boolean,
|
|
1294
1345
|
pending_faq_count: Float
|
|
1295
1346
|
}
|
|
@@ -1330,21 +1381,6 @@ module Revox
|
|
|
1330
1381
|
:requested_callback_later,
|
|
1331
1382
|
Revox::Models::CallRetrieveResponse::Call::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1332
1383
|
)
|
|
1333
|
-
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
1334
|
-
T.let(
|
|
1335
|
-
:requested_callback_new_number,
|
|
1336
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1337
|
-
)
|
|
1338
|
-
DO_NOT_CONTACT =
|
|
1339
|
-
T.let(
|
|
1340
|
-
:do_not_contact,
|
|
1341
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1342
|
-
)
|
|
1343
|
-
AI_AVERSE =
|
|
1344
|
-
T.let(
|
|
1345
|
-
:ai_averse,
|
|
1346
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1347
|
-
)
|
|
1348
1384
|
NONE =
|
|
1349
1385
|
T.let(
|
|
1350
1386
|
:none,
|
|
@@ -1613,7 +1649,8 @@ module Revox
|
|
|
1613
1649
|
sig { returns(String) }
|
|
1614
1650
|
attr_accessor :calling_window_start_time
|
|
1615
1651
|
|
|
1616
|
-
# Delay between retry attempts in seconds.
|
|
1652
|
+
# Delay between retry attempts in seconds. 0 retries as soon as the calling window
|
|
1653
|
+
# allows. Default: 7200 (2 hours).
|
|
1617
1654
|
sig { returns(Integer) }
|
|
1618
1655
|
attr_accessor :retry_delay_seconds
|
|
1619
1656
|
|
|
@@ -1633,7 +1670,8 @@ module Revox
|
|
|
1633
1670
|
# timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
|
|
1634
1671
|
# Examples: '09:00', '10am'. Default: '10:00'.
|
|
1635
1672
|
calling_window_start_time:,
|
|
1636
|
-
# Delay between retry attempts in seconds.
|
|
1673
|
+
# Delay between retry attempts in seconds. 0 retries as soon as the calling window
|
|
1674
|
+
# allows. Default: 7200 (2 hours).
|
|
1637
1675
|
retry_delay_seconds:
|
|
1638
1676
|
)
|
|
1639
1677
|
end
|
|
@@ -2020,41 +2058,6 @@ module Revox
|
|
|
2020
2058
|
end
|
|
2021
2059
|
end
|
|
2022
2060
|
|
|
2023
|
-
# The language used for the notification email content. One of "en" or "fr".
|
|
2024
|
-
module EmailNotificationLanguage
|
|
2025
|
-
extend Revox::Internal::Type::Enum
|
|
2026
|
-
|
|
2027
|
-
TaggedSymbol =
|
|
2028
|
-
T.type_alias do
|
|
2029
|
-
T.all(
|
|
2030
|
-
Symbol,
|
|
2031
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationLanguage
|
|
2032
|
-
)
|
|
2033
|
-
end
|
|
2034
|
-
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
2035
|
-
|
|
2036
|
-
EN =
|
|
2037
|
-
T.let(
|
|
2038
|
-
:en,
|
|
2039
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
2040
|
-
)
|
|
2041
|
-
FR =
|
|
2042
|
-
T.let(
|
|
2043
|
-
:fr,
|
|
2044
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
2045
|
-
)
|
|
2046
|
-
|
|
2047
|
-
sig do
|
|
2048
|
-
override.returns(
|
|
2049
|
-
T::Array[
|
|
2050
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
2051
|
-
]
|
|
2052
|
-
)
|
|
2053
|
-
end
|
|
2054
|
-
def self.values
|
|
2055
|
-
end
|
|
2056
|
-
end
|
|
2057
|
-
|
|
2058
2061
|
module EmailNotificationOutcome
|
|
2059
2062
|
extend Revox::Internal::Type::Enum
|
|
2060
2063
|
|
|
@@ -2087,21 +2090,6 @@ module Revox
|
|
|
2087
2090
|
:requested_callback_later,
|
|
2088
2091
|
Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2089
2092
|
)
|
|
2090
|
-
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
2091
|
-
T.let(
|
|
2092
|
-
:requested_callback_new_number,
|
|
2093
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2094
|
-
)
|
|
2095
|
-
DO_NOT_CONTACT =
|
|
2096
|
-
T.let(
|
|
2097
|
-
:do_not_contact,
|
|
2098
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2099
|
-
)
|
|
2100
|
-
AI_AVERSE =
|
|
2101
|
-
T.let(
|
|
2102
|
-
:ai_averse,
|
|
2103
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2104
|
-
)
|
|
2105
2093
|
NONE =
|
|
2106
2094
|
T.let(
|
|
2107
2095
|
:none,
|
|
@@ -2158,8 +2146,8 @@ module Revox
|
|
|
2158
2146
|
end
|
|
2159
2147
|
end
|
|
2160
2148
|
|
|
2161
|
-
# Warm or cold transfer when
|
|
2162
|
-
# not configured.
|
|
2149
|
+
# Warm or cold transfer when transfer_destinations is non-empty; null when
|
|
2150
|
+
# transfer is not configured.
|
|
2163
2151
|
module HumanTransferMode
|
|
2164
2152
|
extend Revox::Internal::Type::Enum
|
|
2165
2153
|
|
|
@@ -2757,9 +2745,17 @@ module Revox
|
|
|
2757
2745
|
)
|
|
2758
2746
|
end
|
|
2759
2747
|
|
|
2760
|
-
# The Slack
|
|
2761
|
-
|
|
2762
|
-
|
|
2748
|
+
# The Slack channels eligible to receive the notification. When more than one is
|
|
2749
|
+
# configured, the agent prompt may define routing rules to narrow it down per
|
|
2750
|
+
# call; with no such rules every channel here is notified.
|
|
2751
|
+
sig do
|
|
2752
|
+
returns(
|
|
2753
|
+
T::Array[
|
|
2754
|
+
Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Channel
|
|
2755
|
+
]
|
|
2756
|
+
)
|
|
2757
|
+
end
|
|
2758
|
+
attr_accessor :channels
|
|
2763
2759
|
|
|
2764
2760
|
# The Nango connection ID linking the org's Slack workspace to Revox.
|
|
2765
2761
|
sig { returns(String) }
|
|
@@ -2776,45 +2772,43 @@ module Revox
|
|
|
2776
2772
|
end
|
|
2777
2773
|
attr_accessor :outcomes
|
|
2778
2774
|
|
|
2779
|
-
# Human-readable Slack channel name, cached for display in the UI.
|
|
2780
|
-
sig { returns(T.nilable(String)) }
|
|
2781
|
-
attr_accessor :channel_name
|
|
2782
|
-
|
|
2783
2775
|
# Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
|
|
2784
2776
|
# {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
|
|
2785
|
-
# {{last_name}}, {{email}}, {{company}}, {{
|
|
2786
|
-
# prompt_variables and structured_output keys. When
|
|
2787
|
-
# is used.
|
|
2777
|
+
# {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
|
|
2778
|
+
# {{contact_line}}, plus prompt_variables and structured_output keys. When
|
|
2779
|
+
# null/empty a default template is used.
|
|
2788
2780
|
sig { returns(T.nilable(String)) }
|
|
2789
2781
|
attr_accessor :template
|
|
2790
2782
|
|
|
2791
2783
|
sig do
|
|
2792
2784
|
params(
|
|
2793
|
-
|
|
2785
|
+
channels:
|
|
2786
|
+
T::Array[
|
|
2787
|
+
Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Channel::OrHash
|
|
2788
|
+
],
|
|
2794
2789
|
connection_id: String,
|
|
2795
2790
|
outcomes:
|
|
2796
2791
|
T::Array[
|
|
2797
2792
|
Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Outcome::OrSymbol
|
|
2798
2793
|
],
|
|
2799
|
-
channel_name: T.nilable(String),
|
|
2800
2794
|
template: T.nilable(String)
|
|
2801
2795
|
).returns(T.attached_class)
|
|
2802
2796
|
end
|
|
2803
2797
|
def self.new(
|
|
2804
|
-
# The Slack
|
|
2805
|
-
|
|
2798
|
+
# The Slack channels eligible to receive the notification. When more than one is
|
|
2799
|
+
# configured, the agent prompt may define routing rules to narrow it down per
|
|
2800
|
+
# call; with no such rules every channel here is notified.
|
|
2801
|
+
channels:,
|
|
2806
2802
|
# The Nango connection ID linking the org's Slack workspace to Revox.
|
|
2807
2803
|
connection_id:,
|
|
2808
2804
|
# Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
|
|
2809
2805
|
# Use 'none' to notify when outcome is null.
|
|
2810
2806
|
outcomes:,
|
|
2811
|
-
# Human-readable Slack channel name, cached for display in the UI.
|
|
2812
|
-
channel_name: nil,
|
|
2813
2807
|
# Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
|
|
2814
2808
|
# {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
|
|
2815
|
-
# {{last_name}}, {{email}}, {{company}}, {{
|
|
2816
|
-
# prompt_variables and structured_output keys. When
|
|
2817
|
-
# is used.
|
|
2809
|
+
# {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
|
|
2810
|
+
# {{contact_line}}, plus prompt_variables and structured_output keys. When
|
|
2811
|
+
# null/empty a default template is used.
|
|
2818
2812
|
template: nil
|
|
2819
2813
|
)
|
|
2820
2814
|
end
|
|
@@ -2822,13 +2816,15 @@ module Revox
|
|
|
2822
2816
|
sig do
|
|
2823
2817
|
override.returns(
|
|
2824
2818
|
{
|
|
2825
|
-
|
|
2819
|
+
channels:
|
|
2820
|
+
T::Array[
|
|
2821
|
+
Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Channel
|
|
2822
|
+
],
|
|
2826
2823
|
connection_id: String,
|
|
2827
2824
|
outcomes:
|
|
2828
2825
|
T::Array[
|
|
2829
2826
|
Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Outcome::TaggedSymbol
|
|
2830
2827
|
],
|
|
2831
|
-
channel_name: T.nilable(String),
|
|
2832
2828
|
template: T.nilable(String)
|
|
2833
2829
|
}
|
|
2834
2830
|
)
|
|
@@ -2836,6 +2832,43 @@ module Revox
|
|
|
2836
2832
|
def to_hash
|
|
2837
2833
|
end
|
|
2838
2834
|
|
|
2835
|
+
class Channel < Revox::Internal::Type::BaseModel
|
|
2836
|
+
OrHash =
|
|
2837
|
+
T.type_alias do
|
|
2838
|
+
T.any(
|
|
2839
|
+
Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Channel,
|
|
2840
|
+
Revox::Internal::AnyHash
|
|
2841
|
+
)
|
|
2842
|
+
end
|
|
2843
|
+
|
|
2844
|
+
# The Slack channel ID (e.g. 'C01234567').
|
|
2845
|
+
sig { returns(String) }
|
|
2846
|
+
attr_accessor :id
|
|
2847
|
+
|
|
2848
|
+
# Human-readable Slack channel name, cached for display in the UI and given to the
|
|
2849
|
+
# LLM when the agent prompt routes by channel name.
|
|
2850
|
+
sig { returns(T.nilable(String)) }
|
|
2851
|
+
attr_accessor :name
|
|
2852
|
+
|
|
2853
|
+
sig do
|
|
2854
|
+
params(id: String, name: T.nilable(String)).returns(
|
|
2855
|
+
T.attached_class
|
|
2856
|
+
)
|
|
2857
|
+
end
|
|
2858
|
+
def self.new(
|
|
2859
|
+
# The Slack channel ID (e.g. 'C01234567').
|
|
2860
|
+
id:,
|
|
2861
|
+
# Human-readable Slack channel name, cached for display in the UI and given to the
|
|
2862
|
+
# LLM when the agent prompt routes by channel name.
|
|
2863
|
+
name: nil
|
|
2864
|
+
)
|
|
2865
|
+
end
|
|
2866
|
+
|
|
2867
|
+
sig { override.returns({ id: String, name: T.nilable(String) }) }
|
|
2868
|
+
def to_hash
|
|
2869
|
+
end
|
|
2870
|
+
end
|
|
2871
|
+
|
|
2839
2872
|
module Outcome
|
|
2840
2873
|
extend Revox::Internal::Type::Enum
|
|
2841
2874
|
|
|
@@ -2868,21 +2901,6 @@ module Revox
|
|
|
2868
2901
|
:requested_callback_later,
|
|
2869
2902
|
Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Outcome::TaggedSymbol
|
|
2870
2903
|
)
|
|
2871
|
-
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
2872
|
-
T.let(
|
|
2873
|
-
:requested_callback_new_number,
|
|
2874
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Outcome::TaggedSymbol
|
|
2875
|
-
)
|
|
2876
|
-
DO_NOT_CONTACT =
|
|
2877
|
-
T.let(
|
|
2878
|
-
:do_not_contact,
|
|
2879
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Outcome::TaggedSymbol
|
|
2880
|
-
)
|
|
2881
|
-
AI_AVERSE =
|
|
2882
|
-
T.let(
|
|
2883
|
-
:ai_averse,
|
|
2884
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Outcome::TaggedSymbol
|
|
2885
|
-
)
|
|
2886
2904
|
NONE =
|
|
2887
2905
|
T.let(
|
|
2888
2906
|
:none,
|
|
@@ -3197,6 +3215,34 @@ module Revox
|
|
|
3197
3215
|
end
|
|
3198
3216
|
end
|
|
3199
3217
|
|
|
3218
|
+
class TransferDestination < Revox::Internal::Type::BaseModel
|
|
3219
|
+
OrHash =
|
|
3220
|
+
T.type_alias do
|
|
3221
|
+
T.any(
|
|
3222
|
+
Revox::Models::CallRetrieveResponse::Call::Assistant::TransferDestination,
|
|
3223
|
+
Revox::Internal::AnyHash
|
|
3224
|
+
)
|
|
3225
|
+
end
|
|
3226
|
+
|
|
3227
|
+
sig { returns(String) }
|
|
3228
|
+
attr_accessor :label
|
|
3229
|
+
|
|
3230
|
+
sig { returns(String) }
|
|
3231
|
+
attr_accessor :phone_number
|
|
3232
|
+
|
|
3233
|
+
sig do
|
|
3234
|
+
params(label: String, phone_number: String).returns(
|
|
3235
|
+
T.attached_class
|
|
3236
|
+
)
|
|
3237
|
+
end
|
|
3238
|
+
def self.new(label:, phone_number:)
|
|
3239
|
+
end
|
|
3240
|
+
|
|
3241
|
+
sig { override.returns({ label: String, phone_number: String }) }
|
|
3242
|
+
def to_hash
|
|
3243
|
+
end
|
|
3244
|
+
end
|
|
3245
|
+
|
|
3200
3246
|
module Type
|
|
3201
3247
|
extend Revox::Internal::Type::Enum
|
|
3202
3248
|
|
|
@@ -3277,7 +3323,7 @@ module Revox
|
|
|
3277
3323
|
attr_writer :model
|
|
3278
3324
|
|
|
3279
3325
|
# The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
|
|
3280
|
-
# 0.7–1.2. Default is 1.0.
|
|
3326
|
+
# 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
|
|
3281
3327
|
sig { returns(T.nilable(Float)) }
|
|
3282
3328
|
attr_reader :speed
|
|
3283
3329
|
|
|
@@ -3312,7 +3358,7 @@ module Revox
|
|
|
3312
3358
|
# for other providers.
|
|
3313
3359
|
model: nil,
|
|
3314
3360
|
# The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
|
|
3315
|
-
# 0.7–1.2. Default is 1.0.
|
|
3361
|
+
# 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
|
|
3316
3362
|
speed: nil,
|
|
3317
3363
|
# Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
|
|
3318
3364
|
# providers.
|
|
@@ -3359,6 +3405,11 @@ module Revox
|
|
|
3359
3405
|
:elevenlabs,
|
|
3360
3406
|
Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::Provider::TaggedSymbol
|
|
3361
3407
|
)
|
|
3408
|
+
GRADIUM =
|
|
3409
|
+
T.let(
|
|
3410
|
+
:gradium,
|
|
3411
|
+
Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::Provider::TaggedSymbol
|
|
3412
|
+
)
|
|
3362
3413
|
|
|
3363
3414
|
sig do
|
|
3364
3415
|
override.returns(
|
|
@@ -3589,21 +3640,6 @@ module Revox
|
|
|
3589
3640
|
:requested_callback_later,
|
|
3590
3641
|
Revox::Models::CallRetrieveResponse::Call::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3591
3642
|
)
|
|
3592
|
-
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
3593
|
-
T.let(
|
|
3594
|
-
:requested_callback_new_number,
|
|
3595
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3596
|
-
)
|
|
3597
|
-
DO_NOT_CONTACT =
|
|
3598
|
-
T.let(
|
|
3599
|
-
:do_not_contact,
|
|
3600
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3601
|
-
)
|
|
3602
|
-
AI_AVERSE =
|
|
3603
|
-
T.let(
|
|
3604
|
-
:ai_averse,
|
|
3605
|
-
Revox::Models::CallRetrieveResponse::Call::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3606
|
-
)
|
|
3607
3643
|
NONE =
|
|
3608
3644
|
T.let(
|
|
3609
3645
|
:none,
|
|
@@ -3821,6 +3857,37 @@ module Revox
|
|
|
3821
3857
|
sig { returns(T.anything) }
|
|
3822
3858
|
attr_accessor :ended_at
|
|
3823
3859
|
|
|
3860
|
+
# Whether the AI agent conducted the conversation on this attempt. False for a
|
|
3861
|
+
# silent speed-dial probe (whose agent only detects a human) and for attempts that
|
|
3862
|
+
# were never answered.
|
|
3863
|
+
sig { returns(T::Boolean) }
|
|
3864
|
+
attr_accessor :handled_by_ai
|
|
3865
|
+
|
|
3866
|
+
# Whether a human operator conducted (part of) this attempt — a jump-in takeover
|
|
3867
|
+
# or a speed-dial operator connection (both stamp human_takeover_at).
|
|
3868
|
+
sig { returns(T::Boolean) }
|
|
3869
|
+
attr_accessor :handled_by_human
|
|
3870
|
+
|
|
3871
|
+
# The team member responsible for following up on this call.
|
|
3872
|
+
sig do
|
|
3873
|
+
returns(
|
|
3874
|
+
T.nilable(
|
|
3875
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::HandledByUser
|
|
3876
|
+
)
|
|
3877
|
+
)
|
|
3878
|
+
end
|
|
3879
|
+
attr_reader :handled_by_user
|
|
3880
|
+
|
|
3881
|
+
sig do
|
|
3882
|
+
params(
|
|
3883
|
+
handled_by_user:
|
|
3884
|
+
T.nilable(
|
|
3885
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::HandledByUser::OrHash
|
|
3886
|
+
)
|
|
3887
|
+
).void
|
|
3888
|
+
end
|
|
3889
|
+
attr_writer :handled_by_user
|
|
3890
|
+
|
|
3824
3891
|
# The phone number that was called. Formatted in E.164 format. Example:
|
|
3825
3892
|
# +1234567890
|
|
3826
3893
|
sig { returns(String) }
|
|
@@ -3855,6 +3922,19 @@ module Revox
|
|
|
3855
3922
|
sig { returns(T.nilable(T::Array[String])) }
|
|
3856
3923
|
attr_accessor :assistants_used
|
|
3857
3924
|
|
|
3925
|
+
# Notification emails sent in connection with the call, ordered oldest first
|
|
3926
|
+
# (from/to addresses, subject, sent time).
|
|
3927
|
+
sig do
|
|
3928
|
+
returns(
|
|
3929
|
+
T.nilable(
|
|
3930
|
+
T::Array[
|
|
3931
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::EmailLog
|
|
3932
|
+
]
|
|
3933
|
+
)
|
|
3934
|
+
)
|
|
3935
|
+
end
|
|
3936
|
+
attr_accessor :email_log
|
|
3937
|
+
|
|
3858
3938
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
3859
3939
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
3860
3940
|
sig do
|
|
@@ -3904,6 +3984,20 @@ module Revox
|
|
|
3904
3984
|
end
|
|
3905
3985
|
attr_accessor :sms_log
|
|
3906
3986
|
|
|
3987
|
+
# Per-turn speech segments (VAD-derived) with timing and pipeline latencies,
|
|
3988
|
+
# ordered by started_speaking_at_ms. Empty for calls recorded before this was
|
|
3989
|
+
# tracked or for realtime sessions that don't emit them.
|
|
3990
|
+
sig do
|
|
3991
|
+
returns(
|
|
3992
|
+
T.nilable(
|
|
3993
|
+
T::Array[
|
|
3994
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent
|
|
3995
|
+
]
|
|
3996
|
+
)
|
|
3997
|
+
)
|
|
3998
|
+
end
|
|
3999
|
+
attr_accessor :speech_events
|
|
4000
|
+
|
|
3907
4001
|
# The data extracted from the call, using the structured output config from the
|
|
3908
4002
|
# parent call object.
|
|
3909
4003
|
sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
|
|
@@ -3932,6 +4026,12 @@ module Revox
|
|
|
3932
4026
|
Revox::Models::CallRetrieveResponse::Call::CallAttempt::DialError::OrSymbol
|
|
3933
4027
|
),
|
|
3934
4028
|
ended_at: T.anything,
|
|
4029
|
+
handled_by_ai: T::Boolean,
|
|
4030
|
+
handled_by_human: T::Boolean,
|
|
4031
|
+
handled_by_user:
|
|
4032
|
+
T.nilable(
|
|
4033
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::HandledByUser::OrHash
|
|
4034
|
+
),
|
|
3935
4035
|
phone_number: String,
|
|
3936
4036
|
recording_url: T.nilable(String),
|
|
3937
4037
|
result:
|
|
@@ -3942,6 +4042,12 @@ module Revox
|
|
|
3942
4042
|
status:
|
|
3943
4043
|
Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status::OrSymbol,
|
|
3944
4044
|
assistants_used: T.nilable(T::Array[String]),
|
|
4045
|
+
email_log:
|
|
4046
|
+
T.nilable(
|
|
4047
|
+
T::Array[
|
|
4048
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::EmailLog::OrHash
|
|
4049
|
+
]
|
|
4050
|
+
),
|
|
3945
4051
|
end_reason:
|
|
3946
4052
|
T.nilable(
|
|
3947
4053
|
Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndReason::OrSymbol
|
|
@@ -3962,6 +4068,12 @@ module Revox
|
|
|
3962
4068
|
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::OrHash
|
|
3963
4069
|
]
|
|
3964
4070
|
),
|
|
4071
|
+
speech_events:
|
|
4072
|
+
T.nilable(
|
|
4073
|
+
T::Array[
|
|
4074
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent::OrHash
|
|
4075
|
+
]
|
|
4076
|
+
),
|
|
3965
4077
|
structured_output: T.nilable(T::Hash[Symbol, T.anything]),
|
|
3966
4078
|
transcript:
|
|
3967
4079
|
T.nilable(
|
|
@@ -3980,6 +4092,15 @@ module Revox
|
|
|
3980
4092
|
dial_error:,
|
|
3981
4093
|
# The time the call ended.
|
|
3982
4094
|
ended_at:,
|
|
4095
|
+
# Whether the AI agent conducted the conversation on this attempt. False for a
|
|
4096
|
+
# silent speed-dial probe (whose agent only detects a human) and for attempts that
|
|
4097
|
+
# were never answered.
|
|
4098
|
+
handled_by_ai:,
|
|
4099
|
+
# Whether a human operator conducted (part of) this attempt — a jump-in takeover
|
|
4100
|
+
# or a speed-dial operator connection (both stamp human_takeover_at).
|
|
4101
|
+
handled_by_human:,
|
|
4102
|
+
# The team member responsible for following up on this call.
|
|
4103
|
+
handled_by_user:,
|
|
3983
4104
|
# The phone number that was called. Formatted in E.164 format. Example:
|
|
3984
4105
|
# +1234567890
|
|
3985
4106
|
phone_number:,
|
|
@@ -3992,6 +4113,9 @@ module Revox
|
|
|
3992
4113
|
status:,
|
|
3993
4114
|
# Assistant node ids entered during this attempt, in traversal order.
|
|
3994
4115
|
assistants_used: nil,
|
|
4116
|
+
# Notification emails sent in connection with the call, ordered oldest first
|
|
4117
|
+
# (from/to addresses, subject, sent time).
|
|
4118
|
+
email_log: nil,
|
|
3995
4119
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
3996
4120
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
3997
4121
|
end_reason: nil,
|
|
@@ -4005,6 +4129,10 @@ module Revox
|
|
|
4005
4129
|
# first. The in-call `send_sms` is excluded — it already appears in the transcript
|
|
4006
4130
|
# as a tool call.
|
|
4007
4131
|
sms_log: nil,
|
|
4132
|
+
# Per-turn speech segments (VAD-derived) with timing and pipeline latencies,
|
|
4133
|
+
# ordered by started_speaking_at_ms. Empty for calls recorded before this was
|
|
4134
|
+
# tracked or for realtime sessions that don't emit them.
|
|
4135
|
+
speech_events: nil,
|
|
4008
4136
|
# The data extracted from the call, using the structured output config from the
|
|
4009
4137
|
# parent call object.
|
|
4010
4138
|
structured_output: nil,
|
|
@@ -4023,6 +4151,12 @@ module Revox
|
|
|
4023
4151
|
Revox::Models::CallRetrieveResponse::Call::CallAttempt::DialError::TaggedSymbol
|
|
4024
4152
|
),
|
|
4025
4153
|
ended_at: T.anything,
|
|
4154
|
+
handled_by_ai: T::Boolean,
|
|
4155
|
+
handled_by_human: T::Boolean,
|
|
4156
|
+
handled_by_user:
|
|
4157
|
+
T.nilable(
|
|
4158
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::HandledByUser
|
|
4159
|
+
),
|
|
4026
4160
|
phone_number: String,
|
|
4027
4161
|
recording_url: T.nilable(String),
|
|
4028
4162
|
result:
|
|
@@ -4033,6 +4167,12 @@ module Revox
|
|
|
4033
4167
|
status:
|
|
4034
4168
|
Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status::TaggedSymbol,
|
|
4035
4169
|
assistants_used: T.nilable(T::Array[String]),
|
|
4170
|
+
email_log:
|
|
4171
|
+
T.nilable(
|
|
4172
|
+
T::Array[
|
|
4173
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::EmailLog
|
|
4174
|
+
]
|
|
4175
|
+
),
|
|
4036
4176
|
end_reason:
|
|
4037
4177
|
T.nilable(
|
|
4038
4178
|
Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndReason::TaggedSymbol
|
|
@@ -4053,6 +4193,12 @@ module Revox
|
|
|
4053
4193
|
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog
|
|
4054
4194
|
]
|
|
4055
4195
|
),
|
|
4196
|
+
speech_events:
|
|
4197
|
+
T.nilable(
|
|
4198
|
+
T::Array[
|
|
4199
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent
|
|
4200
|
+
]
|
|
4201
|
+
),
|
|
4056
4202
|
structured_output: T.nilable(T::Hash[Symbol, T.anything]),
|
|
4057
4203
|
transcript:
|
|
4058
4204
|
T.nilable(
|
|
@@ -4131,52 +4277,106 @@ module Revox
|
|
|
4131
4277
|
end
|
|
4132
4278
|
end
|
|
4133
4279
|
|
|
4134
|
-
|
|
4135
|
-
|
|
4136
|
-
|
|
4137
|
-
TaggedSymbol =
|
|
4280
|
+
class HandledByUser < Revox::Internal::Type::BaseModel
|
|
4281
|
+
OrHash =
|
|
4138
4282
|
T.type_alias do
|
|
4139
|
-
T.
|
|
4140
|
-
|
|
4141
|
-
Revox::
|
|
4283
|
+
T.any(
|
|
4284
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::HandledByUser,
|
|
4285
|
+
Revox::Internal::AnyHash
|
|
4142
4286
|
)
|
|
4143
4287
|
end
|
|
4144
|
-
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
4145
4288
|
|
|
4146
|
-
|
|
4147
|
-
|
|
4148
|
-
|
|
4149
|
-
Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4150
|
-
)
|
|
4151
|
-
VOICEMAIL =
|
|
4152
|
-
T.let(
|
|
4153
|
-
:voicemail,
|
|
4154
|
-
Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4155
|
-
)
|
|
4156
|
-
HUMAN =
|
|
4157
|
-
T.let(
|
|
4158
|
-
:human,
|
|
4159
|
-
Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4160
|
-
)
|
|
4161
|
-
UNKNOWN =
|
|
4162
|
-
T.let(
|
|
4163
|
-
:unknown,
|
|
4164
|
-
Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4165
|
-
)
|
|
4166
|
-
IOS_SCREENING_FILTER =
|
|
4167
|
-
T.let(
|
|
4168
|
-
:"ios-screening-filter",
|
|
4169
|
-
Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4170
|
-
)
|
|
4289
|
+
# The database user id of the assignee.
|
|
4290
|
+
sig { returns(String) }
|
|
4291
|
+
attr_accessor :id
|
|
4171
4292
|
|
|
4172
|
-
sig
|
|
4173
|
-
|
|
4174
|
-
|
|
4175
|
-
|
|
4176
|
-
|
|
4177
|
-
|
|
4178
|
-
|
|
4179
|
-
|
|
4293
|
+
sig { returns(String) }
|
|
4294
|
+
attr_accessor :email
|
|
4295
|
+
|
|
4296
|
+
sig { returns(T.nilable(String)) }
|
|
4297
|
+
attr_accessor :first_name
|
|
4298
|
+
|
|
4299
|
+
sig { returns(T.nilable(String)) }
|
|
4300
|
+
attr_accessor :last_name
|
|
4301
|
+
|
|
4302
|
+
# The team member responsible for following up on this call.
|
|
4303
|
+
sig do
|
|
4304
|
+
params(
|
|
4305
|
+
id: String,
|
|
4306
|
+
email: String,
|
|
4307
|
+
first_name: T.nilable(String),
|
|
4308
|
+
last_name: T.nilable(String)
|
|
4309
|
+
).returns(T.attached_class)
|
|
4310
|
+
end
|
|
4311
|
+
def self.new(
|
|
4312
|
+
# The database user id of the assignee.
|
|
4313
|
+
id:,
|
|
4314
|
+
email:,
|
|
4315
|
+
first_name:,
|
|
4316
|
+
last_name:
|
|
4317
|
+
)
|
|
4318
|
+
end
|
|
4319
|
+
|
|
4320
|
+
sig do
|
|
4321
|
+
override.returns(
|
|
4322
|
+
{
|
|
4323
|
+
id: String,
|
|
4324
|
+
email: String,
|
|
4325
|
+
first_name: T.nilable(String),
|
|
4326
|
+
last_name: T.nilable(String)
|
|
4327
|
+
}
|
|
4328
|
+
)
|
|
4329
|
+
end
|
|
4330
|
+
def to_hash
|
|
4331
|
+
end
|
|
4332
|
+
end
|
|
4333
|
+
|
|
4334
|
+
module Result
|
|
4335
|
+
extend Revox::Internal::Type::Enum
|
|
4336
|
+
|
|
4337
|
+
TaggedSymbol =
|
|
4338
|
+
T.type_alias do
|
|
4339
|
+
T.all(
|
|
4340
|
+
Symbol,
|
|
4341
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result
|
|
4342
|
+
)
|
|
4343
|
+
end
|
|
4344
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
4345
|
+
|
|
4346
|
+
IVR =
|
|
4347
|
+
T.let(
|
|
4348
|
+
:IVR,
|
|
4349
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4350
|
+
)
|
|
4351
|
+
VOICEMAIL =
|
|
4352
|
+
T.let(
|
|
4353
|
+
:voicemail,
|
|
4354
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4355
|
+
)
|
|
4356
|
+
HUMAN =
|
|
4357
|
+
T.let(
|
|
4358
|
+
:human,
|
|
4359
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4360
|
+
)
|
|
4361
|
+
UNKNOWN =
|
|
4362
|
+
T.let(
|
|
4363
|
+
:unknown,
|
|
4364
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4365
|
+
)
|
|
4366
|
+
IOS_SCREENING_FILTER =
|
|
4367
|
+
T.let(
|
|
4368
|
+
:"ios-screening-filter",
|
|
4369
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4370
|
+
)
|
|
4371
|
+
|
|
4372
|
+
sig do
|
|
4373
|
+
override.returns(
|
|
4374
|
+
T::Array[
|
|
4375
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
|
|
4376
|
+
]
|
|
4377
|
+
)
|
|
4378
|
+
end
|
|
4379
|
+
def self.values
|
|
4180
4380
|
end
|
|
4181
4381
|
end
|
|
4182
4382
|
|
|
@@ -4230,6 +4430,71 @@ module Revox
|
|
|
4230
4430
|
end
|
|
4231
4431
|
end
|
|
4232
4432
|
|
|
4433
|
+
class EmailLog < Revox::Internal::Type::BaseModel
|
|
4434
|
+
OrHash =
|
|
4435
|
+
T.type_alias do
|
|
4436
|
+
T.any(
|
|
4437
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::EmailLog,
|
|
4438
|
+
Revox::Internal::AnyHash
|
|
4439
|
+
)
|
|
4440
|
+
end
|
|
4441
|
+
|
|
4442
|
+
sig { returns(String) }
|
|
4443
|
+
attr_accessor :id
|
|
4444
|
+
|
|
4445
|
+
# When the email was sent.
|
|
4446
|
+
sig { returns(T.anything) }
|
|
4447
|
+
attr_accessor :created_at
|
|
4448
|
+
|
|
4449
|
+
sig { returns(String) }
|
|
4450
|
+
attr_accessor :from_address
|
|
4451
|
+
|
|
4452
|
+
sig { returns(T.nilable(String)) }
|
|
4453
|
+
attr_accessor :resend_message_id
|
|
4454
|
+
|
|
4455
|
+
sig { returns(String) }
|
|
4456
|
+
attr_accessor :subject
|
|
4457
|
+
|
|
4458
|
+
sig { returns(T::Array[String]) }
|
|
4459
|
+
attr_accessor :to_emails
|
|
4460
|
+
|
|
4461
|
+
sig do
|
|
4462
|
+
params(
|
|
4463
|
+
id: String,
|
|
4464
|
+
created_at: T.anything,
|
|
4465
|
+
from_address: String,
|
|
4466
|
+
resend_message_id: T.nilable(String),
|
|
4467
|
+
subject: String,
|
|
4468
|
+
to_emails: T::Array[String]
|
|
4469
|
+
).returns(T.attached_class)
|
|
4470
|
+
end
|
|
4471
|
+
def self.new(
|
|
4472
|
+
id:,
|
|
4473
|
+
# When the email was sent.
|
|
4474
|
+
created_at:,
|
|
4475
|
+
from_address:,
|
|
4476
|
+
resend_message_id:,
|
|
4477
|
+
subject:,
|
|
4478
|
+
to_emails:
|
|
4479
|
+
)
|
|
4480
|
+
end
|
|
4481
|
+
|
|
4482
|
+
sig do
|
|
4483
|
+
override.returns(
|
|
4484
|
+
{
|
|
4485
|
+
id: String,
|
|
4486
|
+
created_at: T.anything,
|
|
4487
|
+
from_address: String,
|
|
4488
|
+
resend_message_id: T.nilable(String),
|
|
4489
|
+
subject: String,
|
|
4490
|
+
to_emails: T::Array[String]
|
|
4491
|
+
}
|
|
4492
|
+
)
|
|
4493
|
+
end
|
|
4494
|
+
def to_hash
|
|
4495
|
+
end
|
|
4496
|
+
end
|
|
4497
|
+
|
|
4233
4498
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
4234
4499
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
4235
4500
|
module EndReason
|
|
@@ -4557,11 +4822,18 @@ module Revox
|
|
|
4557
4822
|
sig { returns(String) }
|
|
4558
4823
|
attr_accessor :message_body
|
|
4559
4824
|
|
|
4560
|
-
sig
|
|
4561
|
-
|
|
4825
|
+
sig do
|
|
4826
|
+
returns(
|
|
4827
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Provider::TaggedSymbol
|
|
4828
|
+
)
|
|
4829
|
+
end
|
|
4830
|
+
attr_accessor :provider
|
|
4562
4831
|
|
|
4563
4832
|
sig { returns(T.nilable(String)) }
|
|
4564
|
-
attr_accessor :
|
|
4833
|
+
attr_accessor :provider_message_id
|
|
4834
|
+
|
|
4835
|
+
sig { returns(String) }
|
|
4836
|
+
attr_accessor :to_phone_number
|
|
4565
4837
|
|
|
4566
4838
|
sig do
|
|
4567
4839
|
returns(
|
|
@@ -4575,8 +4847,10 @@ module Revox
|
|
|
4575
4847
|
id: String,
|
|
4576
4848
|
created_at: T.anything,
|
|
4577
4849
|
message_body: String,
|
|
4850
|
+
provider:
|
|
4851
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Provider::OrSymbol,
|
|
4852
|
+
provider_message_id: T.nilable(String),
|
|
4578
4853
|
to_phone_number: String,
|
|
4579
|
-
twilio_message_sid: T.nilable(String),
|
|
4580
4854
|
type:
|
|
4581
4855
|
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Type::OrSymbol
|
|
4582
4856
|
).returns(T.attached_class)
|
|
@@ -4586,8 +4860,9 @@ module Revox
|
|
|
4586
4860
|
# When the SMS was sent.
|
|
4587
4861
|
created_at:,
|
|
4588
4862
|
message_body:,
|
|
4863
|
+
provider:,
|
|
4864
|
+
provider_message_id:,
|
|
4589
4865
|
to_phone_number:,
|
|
4590
|
-
twilio_message_sid:,
|
|
4591
4866
|
type:
|
|
4592
4867
|
)
|
|
4593
4868
|
end
|
|
@@ -4598,8 +4873,10 @@ module Revox
|
|
|
4598
4873
|
id: String,
|
|
4599
4874
|
created_at: T.anything,
|
|
4600
4875
|
message_body: String,
|
|
4876
|
+
provider:
|
|
4877
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Provider::TaggedSymbol,
|
|
4878
|
+
provider_message_id: T.nilable(String),
|
|
4601
4879
|
to_phone_number: String,
|
|
4602
|
-
twilio_message_sid: T.nilable(String),
|
|
4603
4880
|
type:
|
|
4604
4881
|
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Type::TaggedSymbol
|
|
4605
4882
|
}
|
|
@@ -4608,6 +4885,40 @@ module Revox
|
|
|
4608
4885
|
def to_hash
|
|
4609
4886
|
end
|
|
4610
4887
|
|
|
4888
|
+
module Provider
|
|
4889
|
+
extend Revox::Internal::Type::Enum
|
|
4890
|
+
|
|
4891
|
+
TaggedSymbol =
|
|
4892
|
+
T.type_alias do
|
|
4893
|
+
T.all(
|
|
4894
|
+
Symbol,
|
|
4895
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Provider
|
|
4896
|
+
)
|
|
4897
|
+
end
|
|
4898
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
4899
|
+
|
|
4900
|
+
TWILIO =
|
|
4901
|
+
T.let(
|
|
4902
|
+
:twilio,
|
|
4903
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Provider::TaggedSymbol
|
|
4904
|
+
)
|
|
4905
|
+
VONAGE =
|
|
4906
|
+
T.let(
|
|
4907
|
+
:vonage,
|
|
4908
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Provider::TaggedSymbol
|
|
4909
|
+
)
|
|
4910
|
+
|
|
4911
|
+
sig do
|
|
4912
|
+
override.returns(
|
|
4913
|
+
T::Array[
|
|
4914
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Provider::TaggedSymbol
|
|
4915
|
+
]
|
|
4916
|
+
)
|
|
4917
|
+
end
|
|
4918
|
+
def self.values
|
|
4919
|
+
end
|
|
4920
|
+
end
|
|
4921
|
+
|
|
4611
4922
|
module Type
|
|
4612
4923
|
extend Revox::Internal::Type::Enum
|
|
4613
4924
|
|
|
@@ -4648,6 +4959,176 @@ module Revox
|
|
|
4648
4959
|
end
|
|
4649
4960
|
end
|
|
4650
4961
|
|
|
4962
|
+
class SpeechEvent < Revox::Internal::Type::BaseModel
|
|
4963
|
+
OrHash =
|
|
4964
|
+
T.type_alias do
|
|
4965
|
+
T.any(
|
|
4966
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent,
|
|
4967
|
+
Revox::Internal::AnyHash
|
|
4968
|
+
)
|
|
4969
|
+
end
|
|
4970
|
+
|
|
4971
|
+
sig { returns(String) }
|
|
4972
|
+
attr_accessor :id
|
|
4973
|
+
|
|
4974
|
+
# False when the segment was flagged as noise/blip rather than a meaningful turn.
|
|
4975
|
+
sig { returns(T::Boolean) }
|
|
4976
|
+
attr_accessor :is_real_turn
|
|
4977
|
+
|
|
4978
|
+
# Agent-only: despite the name, the whole prompt the LLM was given for this turn —
|
|
4979
|
+
# system instructions plus conversation history — as JSON.
|
|
4980
|
+
sig { returns(T.nilable(String)) }
|
|
4981
|
+
attr_accessor :llm_system_prompt
|
|
4982
|
+
|
|
4983
|
+
# Agent-only: LLM time-to-first-token for the reply, in ms.
|
|
4984
|
+
sig { returns(T.nilable(Float)) }
|
|
4985
|
+
attr_accessor :llm_ttft_ms
|
|
4986
|
+
|
|
4987
|
+
# Agent-only: the model that produced the reply — the winning leg when the LLM is
|
|
4988
|
+
# a race, which is also the model `llm_ttft_ms` describes.
|
|
4989
|
+
sig { returns(T.nilable(String)) }
|
|
4990
|
+
attr_accessor :llm_winner_model
|
|
4991
|
+
|
|
4992
|
+
# Who was speaking during this segment.
|
|
4993
|
+
sig do
|
|
4994
|
+
returns(
|
|
4995
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
4996
|
+
)
|
|
4997
|
+
end
|
|
4998
|
+
attr_accessor :speaker
|
|
4999
|
+
|
|
5000
|
+
# Milliseconds since session start when speech began.
|
|
5001
|
+
sig { returns(Float) }
|
|
5002
|
+
attr_accessor :started_speaking_at_ms
|
|
5003
|
+
|
|
5004
|
+
# Milliseconds since session start when speech ended. Null when the session ended
|
|
5005
|
+
# before the turn closed.
|
|
5006
|
+
sig { returns(T.nilable(Float)) }
|
|
5007
|
+
attr_accessor :stopped_speaking_at_ms
|
|
5008
|
+
|
|
5009
|
+
# User-only: time from end-of-speech to final transcript, in ms.
|
|
5010
|
+
sig { returns(T.nilable(Float)) }
|
|
5011
|
+
attr_accessor :stt_transcription_delay_ms
|
|
5012
|
+
|
|
5013
|
+
# Recognized text for this segment, when available.
|
|
5014
|
+
sig { returns(T.nilable(String)) }
|
|
5015
|
+
attr_accessor :transcript
|
|
5016
|
+
|
|
5017
|
+
# Agent-only: TTS time-to-first-audio-byte for the reply, in ms.
|
|
5018
|
+
sig { returns(T.nilable(Float)) }
|
|
5019
|
+
attr_accessor :tts_ttfb_ms
|
|
5020
|
+
|
|
5021
|
+
# Agent-only: true when the agent's audio was interrupted (real or auto-resumed).
|
|
5022
|
+
# Null on user segments.
|
|
5023
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
5024
|
+
attr_accessor :was_cut
|
|
5025
|
+
|
|
5026
|
+
sig do
|
|
5027
|
+
params(
|
|
5028
|
+
id: String,
|
|
5029
|
+
is_real_turn: T::Boolean,
|
|
5030
|
+
llm_system_prompt: T.nilable(String),
|
|
5031
|
+
llm_ttft_ms: T.nilable(Float),
|
|
5032
|
+
llm_winner_model: T.nilable(String),
|
|
5033
|
+
speaker:
|
|
5034
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent::Speaker::OrSymbol,
|
|
5035
|
+
started_speaking_at_ms: Float,
|
|
5036
|
+
stopped_speaking_at_ms: T.nilable(Float),
|
|
5037
|
+
stt_transcription_delay_ms: T.nilable(Float),
|
|
5038
|
+
transcript: T.nilable(String),
|
|
5039
|
+
tts_ttfb_ms: T.nilable(Float),
|
|
5040
|
+
was_cut: T.nilable(T::Boolean)
|
|
5041
|
+
).returns(T.attached_class)
|
|
5042
|
+
end
|
|
5043
|
+
def self.new(
|
|
5044
|
+
id:,
|
|
5045
|
+
# False when the segment was flagged as noise/blip rather than a meaningful turn.
|
|
5046
|
+
is_real_turn:,
|
|
5047
|
+
# Agent-only: despite the name, the whole prompt the LLM was given for this turn —
|
|
5048
|
+
# system instructions plus conversation history — as JSON.
|
|
5049
|
+
llm_system_prompt:,
|
|
5050
|
+
# Agent-only: LLM time-to-first-token for the reply, in ms.
|
|
5051
|
+
llm_ttft_ms:,
|
|
5052
|
+
# Agent-only: the model that produced the reply — the winning leg when the LLM is
|
|
5053
|
+
# a race, which is also the model `llm_ttft_ms` describes.
|
|
5054
|
+
llm_winner_model:,
|
|
5055
|
+
# Who was speaking during this segment.
|
|
5056
|
+
speaker:,
|
|
5057
|
+
# Milliseconds since session start when speech began.
|
|
5058
|
+
started_speaking_at_ms:,
|
|
5059
|
+
# Milliseconds since session start when speech ended. Null when the session ended
|
|
5060
|
+
# before the turn closed.
|
|
5061
|
+
stopped_speaking_at_ms:,
|
|
5062
|
+
# User-only: time from end-of-speech to final transcript, in ms.
|
|
5063
|
+
stt_transcription_delay_ms:,
|
|
5064
|
+
# Recognized text for this segment, when available.
|
|
5065
|
+
transcript:,
|
|
5066
|
+
# Agent-only: TTS time-to-first-audio-byte for the reply, in ms.
|
|
5067
|
+
tts_ttfb_ms:,
|
|
5068
|
+
# Agent-only: true when the agent's audio was interrupted (real or auto-resumed).
|
|
5069
|
+
# Null on user segments.
|
|
5070
|
+
was_cut:
|
|
5071
|
+
)
|
|
5072
|
+
end
|
|
5073
|
+
|
|
5074
|
+
sig do
|
|
5075
|
+
override.returns(
|
|
5076
|
+
{
|
|
5077
|
+
id: String,
|
|
5078
|
+
is_real_turn: T::Boolean,
|
|
5079
|
+
llm_system_prompt: T.nilable(String),
|
|
5080
|
+
llm_ttft_ms: T.nilable(Float),
|
|
5081
|
+
llm_winner_model: T.nilable(String),
|
|
5082
|
+
speaker:
|
|
5083
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent::Speaker::TaggedSymbol,
|
|
5084
|
+
started_speaking_at_ms: Float,
|
|
5085
|
+
stopped_speaking_at_ms: T.nilable(Float),
|
|
5086
|
+
stt_transcription_delay_ms: T.nilable(Float),
|
|
5087
|
+
transcript: T.nilable(String),
|
|
5088
|
+
tts_ttfb_ms: T.nilable(Float),
|
|
5089
|
+
was_cut: T.nilable(T::Boolean)
|
|
5090
|
+
}
|
|
5091
|
+
)
|
|
5092
|
+
end
|
|
5093
|
+
def to_hash
|
|
5094
|
+
end
|
|
5095
|
+
|
|
5096
|
+
# Who was speaking during this segment.
|
|
5097
|
+
module Speaker
|
|
5098
|
+
extend Revox::Internal::Type::Enum
|
|
5099
|
+
|
|
5100
|
+
TaggedSymbol =
|
|
5101
|
+
T.type_alias do
|
|
5102
|
+
T.all(
|
|
5103
|
+
Symbol,
|
|
5104
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent::Speaker
|
|
5105
|
+
)
|
|
5106
|
+
end
|
|
5107
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
5108
|
+
|
|
5109
|
+
USER =
|
|
5110
|
+
T.let(
|
|
5111
|
+
:user,
|
|
5112
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
5113
|
+
)
|
|
5114
|
+
AGENT =
|
|
5115
|
+
T.let(
|
|
5116
|
+
:agent,
|
|
5117
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
5118
|
+
)
|
|
5119
|
+
|
|
5120
|
+
sig do
|
|
5121
|
+
override.returns(
|
|
5122
|
+
T::Array[
|
|
5123
|
+
Revox::Models::CallRetrieveResponse::Call::CallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
5124
|
+
]
|
|
5125
|
+
)
|
|
5126
|
+
end
|
|
5127
|
+
def self.values
|
|
5128
|
+
end
|
|
5129
|
+
end
|
|
5130
|
+
end
|
|
5131
|
+
|
|
4651
5132
|
class Transcript < Revox::Internal::Type::BaseModel
|
|
4652
5133
|
OrHash =
|
|
4653
5134
|
T.type_alias do
|
|
@@ -4992,7 +5473,8 @@ module Revox
|
|
|
4992
5473
|
sig { returns(String) }
|
|
4993
5474
|
attr_accessor :calling_window_start_time
|
|
4994
5475
|
|
|
4995
|
-
# Delay between retry attempts in seconds.
|
|
5476
|
+
# Delay between retry attempts in seconds. 0 retries as soon as the calling window
|
|
5477
|
+
# allows. Default: 7200 (2 hours).
|
|
4996
5478
|
sig { returns(Integer) }
|
|
4997
5479
|
attr_accessor :retry_delay_seconds
|
|
4998
5480
|
|
|
@@ -5012,7 +5494,8 @@ module Revox
|
|
|
5012
5494
|
# timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
|
|
5013
5495
|
# Examples: '09:00', '10am'. Default: '10:00'.
|
|
5014
5496
|
calling_window_start_time:,
|
|
5015
|
-
# Delay between retry attempts in seconds.
|
|
5497
|
+
# Delay between retry attempts in seconds. 0 retries as soon as the calling window
|
|
5498
|
+
# allows. Default: 7200 (2 hours).
|
|
5016
5499
|
retry_delay_seconds:
|
|
5017
5500
|
)
|
|
5018
5501
|
end
|
|
@@ -5073,6 +5556,9 @@ module Revox
|
|
|
5073
5556
|
sig { returns(T.nilable(String)) }
|
|
5074
5557
|
attr_accessor :first_name
|
|
5075
5558
|
|
|
5559
|
+
sig { returns(T.nilable(String)) }
|
|
5560
|
+
attr_accessor :job_title
|
|
5561
|
+
|
|
5076
5562
|
sig { returns(T.nilable(String)) }
|
|
5077
5563
|
attr_accessor :last_name
|
|
5078
5564
|
|
|
@@ -5083,10 +5569,11 @@ module Revox
|
|
|
5083
5569
|
company: T.nilable(String),
|
|
5084
5570
|
email: T.nilable(String),
|
|
5085
5571
|
first_name: T.nilable(String),
|
|
5572
|
+
job_title: T.nilable(String),
|
|
5086
5573
|
last_name: T.nilable(String)
|
|
5087
5574
|
).returns(T.attached_class)
|
|
5088
5575
|
end
|
|
5089
|
-
def self.new(company:, email:, first_name:, last_name:)
|
|
5576
|
+
def self.new(company:, email:, first_name:, job_title:, last_name:)
|
|
5090
5577
|
end
|
|
5091
5578
|
|
|
5092
5579
|
sig do
|
|
@@ -5095,6 +5582,7 @@ module Revox
|
|
|
5095
5582
|
company: T.nilable(String),
|
|
5096
5583
|
email: T.nilable(String),
|
|
5097
5584
|
first_name: T.nilable(String),
|
|
5585
|
+
job_title: T.nilable(String),
|
|
5098
5586
|
last_name: T.nilable(String)
|
|
5099
5587
|
}
|
|
5100
5588
|
)
|
|
@@ -5169,6 +5657,37 @@ module Revox
|
|
|
5169
5657
|
sig { returns(T.anything) }
|
|
5170
5658
|
attr_accessor :ended_at
|
|
5171
5659
|
|
|
5660
|
+
# Whether the AI agent conducted the conversation on this attempt. False for a
|
|
5661
|
+
# silent speed-dial probe (whose agent only detects a human) and for attempts that
|
|
5662
|
+
# were never answered.
|
|
5663
|
+
sig { returns(T::Boolean) }
|
|
5664
|
+
attr_accessor :handled_by_ai
|
|
5665
|
+
|
|
5666
|
+
# Whether a human operator conducted (part of) this attempt — a jump-in takeover
|
|
5667
|
+
# or a speed-dial operator connection (both stamp human_takeover_at).
|
|
5668
|
+
sig { returns(T::Boolean) }
|
|
5669
|
+
attr_accessor :handled_by_human
|
|
5670
|
+
|
|
5671
|
+
# The team member responsible for following up on this call.
|
|
5672
|
+
sig do
|
|
5673
|
+
returns(
|
|
5674
|
+
T.nilable(
|
|
5675
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::HandledByUser
|
|
5676
|
+
)
|
|
5677
|
+
)
|
|
5678
|
+
end
|
|
5679
|
+
attr_reader :handled_by_user
|
|
5680
|
+
|
|
5681
|
+
sig do
|
|
5682
|
+
params(
|
|
5683
|
+
handled_by_user:
|
|
5684
|
+
T.nilable(
|
|
5685
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::HandledByUser::OrHash
|
|
5686
|
+
)
|
|
5687
|
+
).void
|
|
5688
|
+
end
|
|
5689
|
+
attr_writer :handled_by_user
|
|
5690
|
+
|
|
5172
5691
|
# The phone number that was called. Formatted in E.164 format. Example:
|
|
5173
5692
|
# +1234567890
|
|
5174
5693
|
sig { returns(String) }
|
|
@@ -5203,6 +5722,19 @@ module Revox
|
|
|
5203
5722
|
sig { returns(T.nilable(T::Array[String])) }
|
|
5204
5723
|
attr_accessor :assistants_used
|
|
5205
5724
|
|
|
5725
|
+
# Notification emails sent in connection with the call, ordered oldest first
|
|
5726
|
+
# (from/to addresses, subject, sent time).
|
|
5727
|
+
sig do
|
|
5728
|
+
returns(
|
|
5729
|
+
T.nilable(
|
|
5730
|
+
T::Array[
|
|
5731
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EmailLog
|
|
5732
|
+
]
|
|
5733
|
+
)
|
|
5734
|
+
)
|
|
5735
|
+
end
|
|
5736
|
+
attr_accessor :email_log
|
|
5737
|
+
|
|
5206
5738
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
5207
5739
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
5208
5740
|
sig do
|
|
@@ -5236,21 +5768,35 @@ module Revox
|
|
|
5236
5768
|
)
|
|
5237
5769
|
)
|
|
5238
5770
|
end
|
|
5239
|
-
attr_accessor :post_call_transcript
|
|
5771
|
+
attr_accessor :post_call_transcript
|
|
5772
|
+
|
|
5773
|
+
# Automatic SMS sent after the call (voicemail and after-call), ordered oldest
|
|
5774
|
+
# first. The in-call `send_sms` is excluded — it already appears in the transcript
|
|
5775
|
+
# as a tool call.
|
|
5776
|
+
sig do
|
|
5777
|
+
returns(
|
|
5778
|
+
T.nilable(
|
|
5779
|
+
T::Array[
|
|
5780
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog
|
|
5781
|
+
]
|
|
5782
|
+
)
|
|
5783
|
+
)
|
|
5784
|
+
end
|
|
5785
|
+
attr_accessor :sms_log
|
|
5240
5786
|
|
|
5241
|
-
#
|
|
5242
|
-
#
|
|
5243
|
-
#
|
|
5787
|
+
# Per-turn speech segments (VAD-derived) with timing and pipeline latencies,
|
|
5788
|
+
# ordered by started_speaking_at_ms. Empty for calls recorded before this was
|
|
5789
|
+
# tracked or for realtime sessions that don't emit them.
|
|
5244
5790
|
sig do
|
|
5245
5791
|
returns(
|
|
5246
5792
|
T.nilable(
|
|
5247
5793
|
T::Array[
|
|
5248
|
-
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::
|
|
5794
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent
|
|
5249
5795
|
]
|
|
5250
5796
|
)
|
|
5251
5797
|
)
|
|
5252
5798
|
end
|
|
5253
|
-
attr_accessor :
|
|
5799
|
+
attr_accessor :speech_events
|
|
5254
5800
|
|
|
5255
5801
|
# The data extracted from the call, using the structured output config from the
|
|
5256
5802
|
# parent call object.
|
|
@@ -5280,6 +5826,12 @@ module Revox
|
|
|
5280
5826
|
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::DialError::OrSymbol
|
|
5281
5827
|
),
|
|
5282
5828
|
ended_at: T.anything,
|
|
5829
|
+
handled_by_ai: T::Boolean,
|
|
5830
|
+
handled_by_human: T::Boolean,
|
|
5831
|
+
handled_by_user:
|
|
5832
|
+
T.nilable(
|
|
5833
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::HandledByUser::OrHash
|
|
5834
|
+
),
|
|
5283
5835
|
phone_number: String,
|
|
5284
5836
|
recording_url: T.nilable(String),
|
|
5285
5837
|
result:
|
|
@@ -5290,6 +5842,12 @@ module Revox
|
|
|
5290
5842
|
status:
|
|
5291
5843
|
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status::OrSymbol,
|
|
5292
5844
|
assistants_used: T.nilable(T::Array[String]),
|
|
5845
|
+
email_log:
|
|
5846
|
+
T.nilable(
|
|
5847
|
+
T::Array[
|
|
5848
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EmailLog::OrHash
|
|
5849
|
+
]
|
|
5850
|
+
),
|
|
5293
5851
|
end_reason:
|
|
5294
5852
|
T.nilable(
|
|
5295
5853
|
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndReason::OrSymbol
|
|
@@ -5310,6 +5868,12 @@ module Revox
|
|
|
5310
5868
|
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::OrHash
|
|
5311
5869
|
]
|
|
5312
5870
|
),
|
|
5871
|
+
speech_events:
|
|
5872
|
+
T.nilable(
|
|
5873
|
+
T::Array[
|
|
5874
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent::OrHash
|
|
5875
|
+
]
|
|
5876
|
+
),
|
|
5313
5877
|
structured_output: T.nilable(T::Hash[Symbol, T.anything]),
|
|
5314
5878
|
transcript:
|
|
5315
5879
|
T.nilable(
|
|
@@ -5328,6 +5892,15 @@ module Revox
|
|
|
5328
5892
|
dial_error:,
|
|
5329
5893
|
# The time the call ended.
|
|
5330
5894
|
ended_at:,
|
|
5895
|
+
# Whether the AI agent conducted the conversation on this attempt. False for a
|
|
5896
|
+
# silent speed-dial probe (whose agent only detects a human) and for attempts that
|
|
5897
|
+
# were never answered.
|
|
5898
|
+
handled_by_ai:,
|
|
5899
|
+
# Whether a human operator conducted (part of) this attempt — a jump-in takeover
|
|
5900
|
+
# or a speed-dial operator connection (both stamp human_takeover_at).
|
|
5901
|
+
handled_by_human:,
|
|
5902
|
+
# The team member responsible for following up on this call.
|
|
5903
|
+
handled_by_user:,
|
|
5331
5904
|
# The phone number that was called. Formatted in E.164 format. Example:
|
|
5332
5905
|
# +1234567890
|
|
5333
5906
|
phone_number:,
|
|
@@ -5340,6 +5913,9 @@ module Revox
|
|
|
5340
5913
|
status:,
|
|
5341
5914
|
# Assistant node ids entered during this attempt, in traversal order.
|
|
5342
5915
|
assistants_used: nil,
|
|
5916
|
+
# Notification emails sent in connection with the call, ordered oldest first
|
|
5917
|
+
# (from/to addresses, subject, sent time).
|
|
5918
|
+
email_log: nil,
|
|
5343
5919
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
5344
5920
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
5345
5921
|
end_reason: nil,
|
|
@@ -5353,6 +5929,10 @@ module Revox
|
|
|
5353
5929
|
# first. The in-call `send_sms` is excluded — it already appears in the transcript
|
|
5354
5930
|
# as a tool call.
|
|
5355
5931
|
sms_log: nil,
|
|
5932
|
+
# Per-turn speech segments (VAD-derived) with timing and pipeline latencies,
|
|
5933
|
+
# ordered by started_speaking_at_ms. Empty for calls recorded before this was
|
|
5934
|
+
# tracked or for realtime sessions that don't emit them.
|
|
5935
|
+
speech_events: nil,
|
|
5356
5936
|
# The data extracted from the call, using the structured output config from the
|
|
5357
5937
|
# parent call object.
|
|
5358
5938
|
structured_output: nil,
|
|
@@ -5371,6 +5951,12 @@ module Revox
|
|
|
5371
5951
|
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::DialError::TaggedSymbol
|
|
5372
5952
|
),
|
|
5373
5953
|
ended_at: T.anything,
|
|
5954
|
+
handled_by_ai: T::Boolean,
|
|
5955
|
+
handled_by_human: T::Boolean,
|
|
5956
|
+
handled_by_user:
|
|
5957
|
+
T.nilable(
|
|
5958
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::HandledByUser
|
|
5959
|
+
),
|
|
5374
5960
|
phone_number: String,
|
|
5375
5961
|
recording_url: T.nilable(String),
|
|
5376
5962
|
result:
|
|
@@ -5381,6 +5967,12 @@ module Revox
|
|
|
5381
5967
|
status:
|
|
5382
5968
|
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status::TaggedSymbol,
|
|
5383
5969
|
assistants_used: T.nilable(T::Array[String]),
|
|
5970
|
+
email_log:
|
|
5971
|
+
T.nilable(
|
|
5972
|
+
T::Array[
|
|
5973
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EmailLog
|
|
5974
|
+
]
|
|
5975
|
+
),
|
|
5384
5976
|
end_reason:
|
|
5385
5977
|
T.nilable(
|
|
5386
5978
|
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndReason::TaggedSymbol
|
|
@@ -5401,6 +5993,12 @@ module Revox
|
|
|
5401
5993
|
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog
|
|
5402
5994
|
]
|
|
5403
5995
|
),
|
|
5996
|
+
speech_events:
|
|
5997
|
+
T.nilable(
|
|
5998
|
+
T::Array[
|
|
5999
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent
|
|
6000
|
+
]
|
|
6001
|
+
),
|
|
5404
6002
|
structured_output: T.nilable(T::Hash[Symbol, T.anything]),
|
|
5405
6003
|
transcript:
|
|
5406
6004
|
T.nilable(
|
|
@@ -5479,6 +6077,60 @@ module Revox
|
|
|
5479
6077
|
end
|
|
5480
6078
|
end
|
|
5481
6079
|
|
|
6080
|
+
class HandledByUser < Revox::Internal::Type::BaseModel
|
|
6081
|
+
OrHash =
|
|
6082
|
+
T.type_alias do
|
|
6083
|
+
T.any(
|
|
6084
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::HandledByUser,
|
|
6085
|
+
Revox::Internal::AnyHash
|
|
6086
|
+
)
|
|
6087
|
+
end
|
|
6088
|
+
|
|
6089
|
+
# The database user id of the assignee.
|
|
6090
|
+
sig { returns(String) }
|
|
6091
|
+
attr_accessor :id
|
|
6092
|
+
|
|
6093
|
+
sig { returns(String) }
|
|
6094
|
+
attr_accessor :email
|
|
6095
|
+
|
|
6096
|
+
sig { returns(T.nilable(String)) }
|
|
6097
|
+
attr_accessor :first_name
|
|
6098
|
+
|
|
6099
|
+
sig { returns(T.nilable(String)) }
|
|
6100
|
+
attr_accessor :last_name
|
|
6101
|
+
|
|
6102
|
+
# The team member responsible for following up on this call.
|
|
6103
|
+
sig do
|
|
6104
|
+
params(
|
|
6105
|
+
id: String,
|
|
6106
|
+
email: String,
|
|
6107
|
+
first_name: T.nilable(String),
|
|
6108
|
+
last_name: T.nilable(String)
|
|
6109
|
+
).returns(T.attached_class)
|
|
6110
|
+
end
|
|
6111
|
+
def self.new(
|
|
6112
|
+
# The database user id of the assignee.
|
|
6113
|
+
id:,
|
|
6114
|
+
email:,
|
|
6115
|
+
first_name:,
|
|
6116
|
+
last_name:
|
|
6117
|
+
)
|
|
6118
|
+
end
|
|
6119
|
+
|
|
6120
|
+
sig do
|
|
6121
|
+
override.returns(
|
|
6122
|
+
{
|
|
6123
|
+
id: String,
|
|
6124
|
+
email: String,
|
|
6125
|
+
first_name: T.nilable(String),
|
|
6126
|
+
last_name: T.nilable(String)
|
|
6127
|
+
}
|
|
6128
|
+
)
|
|
6129
|
+
end
|
|
6130
|
+
def to_hash
|
|
6131
|
+
end
|
|
6132
|
+
end
|
|
6133
|
+
|
|
5482
6134
|
module Result
|
|
5483
6135
|
extend Revox::Internal::Type::Enum
|
|
5484
6136
|
|
|
@@ -5578,6 +6230,71 @@ module Revox
|
|
|
5578
6230
|
end
|
|
5579
6231
|
end
|
|
5580
6232
|
|
|
6233
|
+
class EmailLog < Revox::Internal::Type::BaseModel
|
|
6234
|
+
OrHash =
|
|
6235
|
+
T.type_alias do
|
|
6236
|
+
T.any(
|
|
6237
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EmailLog,
|
|
6238
|
+
Revox::Internal::AnyHash
|
|
6239
|
+
)
|
|
6240
|
+
end
|
|
6241
|
+
|
|
6242
|
+
sig { returns(String) }
|
|
6243
|
+
attr_accessor :id
|
|
6244
|
+
|
|
6245
|
+
# When the email was sent.
|
|
6246
|
+
sig { returns(T.anything) }
|
|
6247
|
+
attr_accessor :created_at
|
|
6248
|
+
|
|
6249
|
+
sig { returns(String) }
|
|
6250
|
+
attr_accessor :from_address
|
|
6251
|
+
|
|
6252
|
+
sig { returns(T.nilable(String)) }
|
|
6253
|
+
attr_accessor :resend_message_id
|
|
6254
|
+
|
|
6255
|
+
sig { returns(String) }
|
|
6256
|
+
attr_accessor :subject
|
|
6257
|
+
|
|
6258
|
+
sig { returns(T::Array[String]) }
|
|
6259
|
+
attr_accessor :to_emails
|
|
6260
|
+
|
|
6261
|
+
sig do
|
|
6262
|
+
params(
|
|
6263
|
+
id: String,
|
|
6264
|
+
created_at: T.anything,
|
|
6265
|
+
from_address: String,
|
|
6266
|
+
resend_message_id: T.nilable(String),
|
|
6267
|
+
subject: String,
|
|
6268
|
+
to_emails: T::Array[String]
|
|
6269
|
+
).returns(T.attached_class)
|
|
6270
|
+
end
|
|
6271
|
+
def self.new(
|
|
6272
|
+
id:,
|
|
6273
|
+
# When the email was sent.
|
|
6274
|
+
created_at:,
|
|
6275
|
+
from_address:,
|
|
6276
|
+
resend_message_id:,
|
|
6277
|
+
subject:,
|
|
6278
|
+
to_emails:
|
|
6279
|
+
)
|
|
6280
|
+
end
|
|
6281
|
+
|
|
6282
|
+
sig do
|
|
6283
|
+
override.returns(
|
|
6284
|
+
{
|
|
6285
|
+
id: String,
|
|
6286
|
+
created_at: T.anything,
|
|
6287
|
+
from_address: String,
|
|
6288
|
+
resend_message_id: T.nilable(String),
|
|
6289
|
+
subject: String,
|
|
6290
|
+
to_emails: T::Array[String]
|
|
6291
|
+
}
|
|
6292
|
+
)
|
|
6293
|
+
end
|
|
6294
|
+
def to_hash
|
|
6295
|
+
end
|
|
6296
|
+
end
|
|
6297
|
+
|
|
5581
6298
|
# Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
|
|
5582
6299
|
# 'voicemail', 'transfer', 'ivr_no_navigate'.
|
|
5583
6300
|
module EndReason
|
|
@@ -5905,11 +6622,18 @@ module Revox
|
|
|
5905
6622
|
sig { returns(String) }
|
|
5906
6623
|
attr_accessor :message_body
|
|
5907
6624
|
|
|
5908
|
-
sig
|
|
5909
|
-
|
|
6625
|
+
sig do
|
|
6626
|
+
returns(
|
|
6627
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Provider::TaggedSymbol
|
|
6628
|
+
)
|
|
6629
|
+
end
|
|
6630
|
+
attr_accessor :provider
|
|
5910
6631
|
|
|
5911
6632
|
sig { returns(T.nilable(String)) }
|
|
5912
|
-
attr_accessor :
|
|
6633
|
+
attr_accessor :provider_message_id
|
|
6634
|
+
|
|
6635
|
+
sig { returns(String) }
|
|
6636
|
+
attr_accessor :to_phone_number
|
|
5913
6637
|
|
|
5914
6638
|
sig do
|
|
5915
6639
|
returns(
|
|
@@ -5923,8 +6647,10 @@ module Revox
|
|
|
5923
6647
|
id: String,
|
|
5924
6648
|
created_at: T.anything,
|
|
5925
6649
|
message_body: String,
|
|
6650
|
+
provider:
|
|
6651
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Provider::OrSymbol,
|
|
6652
|
+
provider_message_id: T.nilable(String),
|
|
5926
6653
|
to_phone_number: String,
|
|
5927
|
-
twilio_message_sid: T.nilable(String),
|
|
5928
6654
|
type:
|
|
5929
6655
|
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Type::OrSymbol
|
|
5930
6656
|
).returns(T.attached_class)
|
|
@@ -5934,8 +6660,9 @@ module Revox
|
|
|
5934
6660
|
# When the SMS was sent.
|
|
5935
6661
|
created_at:,
|
|
5936
6662
|
message_body:,
|
|
6663
|
+
provider:,
|
|
6664
|
+
provider_message_id:,
|
|
5937
6665
|
to_phone_number:,
|
|
5938
|
-
twilio_message_sid:,
|
|
5939
6666
|
type:
|
|
5940
6667
|
)
|
|
5941
6668
|
end
|
|
@@ -5946,8 +6673,10 @@ module Revox
|
|
|
5946
6673
|
id: String,
|
|
5947
6674
|
created_at: T.anything,
|
|
5948
6675
|
message_body: String,
|
|
6676
|
+
provider:
|
|
6677
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Provider::TaggedSymbol,
|
|
6678
|
+
provider_message_id: T.nilable(String),
|
|
5949
6679
|
to_phone_number: String,
|
|
5950
|
-
twilio_message_sid: T.nilable(String),
|
|
5951
6680
|
type:
|
|
5952
6681
|
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Type::TaggedSymbol
|
|
5953
6682
|
}
|
|
@@ -5956,6 +6685,40 @@ module Revox
|
|
|
5956
6685
|
def to_hash
|
|
5957
6686
|
end
|
|
5958
6687
|
|
|
6688
|
+
module Provider
|
|
6689
|
+
extend Revox::Internal::Type::Enum
|
|
6690
|
+
|
|
6691
|
+
TaggedSymbol =
|
|
6692
|
+
T.type_alias do
|
|
6693
|
+
T.all(
|
|
6694
|
+
Symbol,
|
|
6695
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Provider
|
|
6696
|
+
)
|
|
6697
|
+
end
|
|
6698
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
6699
|
+
|
|
6700
|
+
TWILIO =
|
|
6701
|
+
T.let(
|
|
6702
|
+
:twilio,
|
|
6703
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Provider::TaggedSymbol
|
|
6704
|
+
)
|
|
6705
|
+
VONAGE =
|
|
6706
|
+
T.let(
|
|
6707
|
+
:vonage,
|
|
6708
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Provider::TaggedSymbol
|
|
6709
|
+
)
|
|
6710
|
+
|
|
6711
|
+
sig do
|
|
6712
|
+
override.returns(
|
|
6713
|
+
T::Array[
|
|
6714
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Provider::TaggedSymbol
|
|
6715
|
+
]
|
|
6716
|
+
)
|
|
6717
|
+
end
|
|
6718
|
+
def self.values
|
|
6719
|
+
end
|
|
6720
|
+
end
|
|
6721
|
+
|
|
5959
6722
|
module Type
|
|
5960
6723
|
extend Revox::Internal::Type::Enum
|
|
5961
6724
|
|
|
@@ -5996,6 +6759,176 @@ module Revox
|
|
|
5996
6759
|
end
|
|
5997
6760
|
end
|
|
5998
6761
|
|
|
6762
|
+
class SpeechEvent < Revox::Internal::Type::BaseModel
|
|
6763
|
+
OrHash =
|
|
6764
|
+
T.type_alias do
|
|
6765
|
+
T.any(
|
|
6766
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent,
|
|
6767
|
+
Revox::Internal::AnyHash
|
|
6768
|
+
)
|
|
6769
|
+
end
|
|
6770
|
+
|
|
6771
|
+
sig { returns(String) }
|
|
6772
|
+
attr_accessor :id
|
|
6773
|
+
|
|
6774
|
+
# False when the segment was flagged as noise/blip rather than a meaningful turn.
|
|
6775
|
+
sig { returns(T::Boolean) }
|
|
6776
|
+
attr_accessor :is_real_turn
|
|
6777
|
+
|
|
6778
|
+
# Agent-only: despite the name, the whole prompt the LLM was given for this turn —
|
|
6779
|
+
# system instructions plus conversation history — as JSON.
|
|
6780
|
+
sig { returns(T.nilable(String)) }
|
|
6781
|
+
attr_accessor :llm_system_prompt
|
|
6782
|
+
|
|
6783
|
+
# Agent-only: LLM time-to-first-token for the reply, in ms.
|
|
6784
|
+
sig { returns(T.nilable(Float)) }
|
|
6785
|
+
attr_accessor :llm_ttft_ms
|
|
6786
|
+
|
|
6787
|
+
# Agent-only: the model that produced the reply — the winning leg when the LLM is
|
|
6788
|
+
# a race, which is also the model `llm_ttft_ms` describes.
|
|
6789
|
+
sig { returns(T.nilable(String)) }
|
|
6790
|
+
attr_accessor :llm_winner_model
|
|
6791
|
+
|
|
6792
|
+
# Who was speaking during this segment.
|
|
6793
|
+
sig do
|
|
6794
|
+
returns(
|
|
6795
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
6796
|
+
)
|
|
6797
|
+
end
|
|
6798
|
+
attr_accessor :speaker
|
|
6799
|
+
|
|
6800
|
+
# Milliseconds since session start when speech began.
|
|
6801
|
+
sig { returns(Float) }
|
|
6802
|
+
attr_accessor :started_speaking_at_ms
|
|
6803
|
+
|
|
6804
|
+
# Milliseconds since session start when speech ended. Null when the session ended
|
|
6805
|
+
# before the turn closed.
|
|
6806
|
+
sig { returns(T.nilable(Float)) }
|
|
6807
|
+
attr_accessor :stopped_speaking_at_ms
|
|
6808
|
+
|
|
6809
|
+
# User-only: time from end-of-speech to final transcript, in ms.
|
|
6810
|
+
sig { returns(T.nilable(Float)) }
|
|
6811
|
+
attr_accessor :stt_transcription_delay_ms
|
|
6812
|
+
|
|
6813
|
+
# Recognized text for this segment, when available.
|
|
6814
|
+
sig { returns(T.nilable(String)) }
|
|
6815
|
+
attr_accessor :transcript
|
|
6816
|
+
|
|
6817
|
+
# Agent-only: TTS time-to-first-audio-byte for the reply, in ms.
|
|
6818
|
+
sig { returns(T.nilable(Float)) }
|
|
6819
|
+
attr_accessor :tts_ttfb_ms
|
|
6820
|
+
|
|
6821
|
+
# Agent-only: true when the agent's audio was interrupted (real or auto-resumed).
|
|
6822
|
+
# Null on user segments.
|
|
6823
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
6824
|
+
attr_accessor :was_cut
|
|
6825
|
+
|
|
6826
|
+
sig do
|
|
6827
|
+
params(
|
|
6828
|
+
id: String,
|
|
6829
|
+
is_real_turn: T::Boolean,
|
|
6830
|
+
llm_system_prompt: T.nilable(String),
|
|
6831
|
+
llm_ttft_ms: T.nilable(Float),
|
|
6832
|
+
llm_winner_model: T.nilable(String),
|
|
6833
|
+
speaker:
|
|
6834
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent::Speaker::OrSymbol,
|
|
6835
|
+
started_speaking_at_ms: Float,
|
|
6836
|
+
stopped_speaking_at_ms: T.nilable(Float),
|
|
6837
|
+
stt_transcription_delay_ms: T.nilable(Float),
|
|
6838
|
+
transcript: T.nilable(String),
|
|
6839
|
+
tts_ttfb_ms: T.nilable(Float),
|
|
6840
|
+
was_cut: T.nilable(T::Boolean)
|
|
6841
|
+
).returns(T.attached_class)
|
|
6842
|
+
end
|
|
6843
|
+
def self.new(
|
|
6844
|
+
id:,
|
|
6845
|
+
# False when the segment was flagged as noise/blip rather than a meaningful turn.
|
|
6846
|
+
is_real_turn:,
|
|
6847
|
+
# Agent-only: despite the name, the whole prompt the LLM was given for this turn —
|
|
6848
|
+
# system instructions plus conversation history — as JSON.
|
|
6849
|
+
llm_system_prompt:,
|
|
6850
|
+
# Agent-only: LLM time-to-first-token for the reply, in ms.
|
|
6851
|
+
llm_ttft_ms:,
|
|
6852
|
+
# Agent-only: the model that produced the reply — the winning leg when the LLM is
|
|
6853
|
+
# a race, which is also the model `llm_ttft_ms` describes.
|
|
6854
|
+
llm_winner_model:,
|
|
6855
|
+
# Who was speaking during this segment.
|
|
6856
|
+
speaker:,
|
|
6857
|
+
# Milliseconds since session start when speech began.
|
|
6858
|
+
started_speaking_at_ms:,
|
|
6859
|
+
# Milliseconds since session start when speech ended. Null when the session ended
|
|
6860
|
+
# before the turn closed.
|
|
6861
|
+
stopped_speaking_at_ms:,
|
|
6862
|
+
# User-only: time from end-of-speech to final transcript, in ms.
|
|
6863
|
+
stt_transcription_delay_ms:,
|
|
6864
|
+
# Recognized text for this segment, when available.
|
|
6865
|
+
transcript:,
|
|
6866
|
+
# Agent-only: TTS time-to-first-audio-byte for the reply, in ms.
|
|
6867
|
+
tts_ttfb_ms:,
|
|
6868
|
+
# Agent-only: true when the agent's audio was interrupted (real or auto-resumed).
|
|
6869
|
+
# Null on user segments.
|
|
6870
|
+
was_cut:
|
|
6871
|
+
)
|
|
6872
|
+
end
|
|
6873
|
+
|
|
6874
|
+
sig do
|
|
6875
|
+
override.returns(
|
|
6876
|
+
{
|
|
6877
|
+
id: String,
|
|
6878
|
+
is_real_turn: T::Boolean,
|
|
6879
|
+
llm_system_prompt: T.nilable(String),
|
|
6880
|
+
llm_ttft_ms: T.nilable(Float),
|
|
6881
|
+
llm_winner_model: T.nilable(String),
|
|
6882
|
+
speaker:
|
|
6883
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent::Speaker::TaggedSymbol,
|
|
6884
|
+
started_speaking_at_ms: Float,
|
|
6885
|
+
stopped_speaking_at_ms: T.nilable(Float),
|
|
6886
|
+
stt_transcription_delay_ms: T.nilable(Float),
|
|
6887
|
+
transcript: T.nilable(String),
|
|
6888
|
+
tts_ttfb_ms: T.nilable(Float),
|
|
6889
|
+
was_cut: T.nilable(T::Boolean)
|
|
6890
|
+
}
|
|
6891
|
+
)
|
|
6892
|
+
end
|
|
6893
|
+
def to_hash
|
|
6894
|
+
end
|
|
6895
|
+
|
|
6896
|
+
# Who was speaking during this segment.
|
|
6897
|
+
module Speaker
|
|
6898
|
+
extend Revox::Internal::Type::Enum
|
|
6899
|
+
|
|
6900
|
+
TaggedSymbol =
|
|
6901
|
+
T.type_alias do
|
|
6902
|
+
T.all(
|
|
6903
|
+
Symbol,
|
|
6904
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent::Speaker
|
|
6905
|
+
)
|
|
6906
|
+
end
|
|
6907
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
6908
|
+
|
|
6909
|
+
USER =
|
|
6910
|
+
T.let(
|
|
6911
|
+
:user,
|
|
6912
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
6913
|
+
)
|
|
6914
|
+
AGENT =
|
|
6915
|
+
T.let(
|
|
6916
|
+
:agent,
|
|
6917
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
6918
|
+
)
|
|
6919
|
+
|
|
6920
|
+
sig do
|
|
6921
|
+
override.returns(
|
|
6922
|
+
T::Array[
|
|
6923
|
+
Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SpeechEvent::Speaker::TaggedSymbol
|
|
6924
|
+
]
|
|
6925
|
+
)
|
|
6926
|
+
end
|
|
6927
|
+
def self.values
|
|
6928
|
+
end
|
|
6929
|
+
end
|
|
6930
|
+
end
|
|
6931
|
+
|
|
5999
6932
|
class Transcript < Revox::Internal::Type::BaseModel
|
|
6000
6933
|
OrHash =
|
|
6001
6934
|
T.type_alias do
|
|
@@ -6501,6 +7434,11 @@ module Revox
|
|
|
6501
7434
|
:post_processing,
|
|
6502
7435
|
Revox::Models::CallRetrieveResponse::Call::Status::TaggedSymbol
|
|
6503
7436
|
)
|
|
7437
|
+
NOT_LAUNCHED =
|
|
7438
|
+
T.let(
|
|
7439
|
+
:not_launched,
|
|
7440
|
+
Revox::Models::CallRetrieveResponse::Call::Status::TaggedSymbol
|
|
7441
|
+
)
|
|
6504
7442
|
SCHEDULED =
|
|
6505
7443
|
T.let(
|
|
6506
7444
|
:scheduled,
|
|
@@ -6568,21 +7506,6 @@ module Revox
|
|
|
6568
7506
|
:requested_callback_later,
|
|
6569
7507
|
Revox::Models::CallRetrieveResponse::Call::Outcome::TaggedSymbol
|
|
6570
7508
|
)
|
|
6571
|
-
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
6572
|
-
T.let(
|
|
6573
|
-
:requested_callback_new_number,
|
|
6574
|
-
Revox::Models::CallRetrieveResponse::Call::Outcome::TaggedSymbol
|
|
6575
|
-
)
|
|
6576
|
-
DO_NOT_CONTACT =
|
|
6577
|
-
T.let(
|
|
6578
|
-
:do_not_contact,
|
|
6579
|
-
Revox::Models::CallRetrieveResponse::Call::Outcome::TaggedSymbol
|
|
6580
|
-
)
|
|
6581
|
-
AI_AVERSE =
|
|
6582
|
-
T.let(
|
|
6583
|
-
:ai_averse,
|
|
6584
|
-
Revox::Models::CallRetrieveResponse::Call::Outcome::TaggedSymbol
|
|
6585
|
-
)
|
|
6586
7509
|
|
|
6587
7510
|
sig do
|
|
6588
7511
|
override.returns(
|