zavudev 0.6.0 → 0.7.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 +9 -0
- data/README.md +1 -1
- data/lib/zavudev/models/contact.rb +3 -153
- data/lib/zavudev/models/contact_channel.rb +155 -0
- data/lib/zavudev/models/senders/agent/agent_flow.rb +6 -101
- data/lib/zavudev/models/senders/agent/agent_tool.rb +3 -53
- data/lib/zavudev/models/senders/agent/flow_create_params.rb +6 -100
- data/lib/zavudev/models/senders/agent/flow_step.rb +61 -0
- data/lib/zavudev/models/senders/agent/flow_trigger.rb +51 -0
- data/lib/zavudev/models/senders/agent/flow_update_params.rb +6 -100
- data/lib/zavudev/models/senders/agent/tool_create_params.rb +3 -52
- data/lib/zavudev/models/senders/agent/tool_parameters.rb +58 -0
- data/lib/zavudev/models/senders/agent/tool_update_params.rb +3 -52
- data/lib/zavudev/models/template_create_params.rb +38 -1
- data/lib/zavudev/models.rb +2 -0
- data/lib/zavudev/resources/senders/agent/flows.rb +4 -4
- data/lib/zavudev/resources/senders/agent/tools.rb +2 -2
- data/lib/zavudev/resources/templates.rb +7 -1
- data/lib/zavudev/version.rb +1 -1
- data/lib/zavudev.rb +4 -0
- data/rbi/zavudev/models/contact.rbi +4 -235
- data/rbi/zavudev/models/contact_channel.rbi +231 -0
- data/rbi/zavudev/models/senders/agent/agent_flow.rbi +7 -233
- data/rbi/zavudev/models/senders/agent/agent_tool.rbi +4 -130
- data/rbi/zavudev/models/senders/agent/flow_create_params.rbi +7 -245
- data/rbi/zavudev/models/senders/agent/flow_step.rbi +115 -0
- data/rbi/zavudev/models/senders/agent/flow_trigger.rbi +108 -0
- data/rbi/zavudev/models/senders/agent/flow_update_params.rbi +8 -255
- data/rbi/zavudev/models/senders/agent/tool_create_params.rbi +4 -132
- data/rbi/zavudev/models/senders/agent/tool_parameters.rbi +124 -0
- data/rbi/zavudev/models/senders/agent/tool_update_params.rbi +4 -136
- data/rbi/zavudev/models/template_create_params.rbi +70 -0
- data/rbi/zavudev/models.rbi +2 -0
- data/rbi/zavudev/resources/senders/agent/flows.rbi +4 -12
- data/rbi/zavudev/resources/senders/agent/tools.rbi +2 -4
- data/rbi/zavudev/resources/templates.rbi +9 -0
- data/sig/zavudev/models/contact.rbs +6 -153
- data/sig/zavudev/models/contact_channel.rbs +150 -0
- data/sig/zavudev/models/senders/agent/agent_flow.rbs +8 -100
- data/sig/zavudev/models/senders/agent/agent_tool.rbs +4 -57
- data/sig/zavudev/models/senders/agent/flow_create_params.rbs +8 -100
- data/sig/zavudev/models/senders/agent/flow_step.rbs +55 -0
- data/sig/zavudev/models/senders/agent/flow_trigger.rbs +51 -0
- data/sig/zavudev/models/senders/agent/flow_update_params.rbs +12 -104
- data/sig/zavudev/models/senders/agent/tool_create_params.rbs +4 -57
- data/sig/zavudev/models/senders/agent/tool_parameters.rbs +60 -0
- data/sig/zavudev/models/senders/agent/tool_update_params.rbs +6 -59
- data/sig/zavudev/models/template_create_params.rbs +36 -0
- data/sig/zavudev/models.rbs +2 -0
- data/sig/zavudev/resources/senders/agent/flows.rbs +4 -4
- data/sig/zavudev/resources/senders/agent/tools.rbs +2 -2
- data/sig/zavudev/resources/templates.rbs +3 -0
- metadata +14 -2
|
@@ -15,7 +15,7 @@ module Zavudev
|
|
|
15
15
|
#
|
|
16
16
|
# @param name [String]
|
|
17
17
|
#
|
|
18
|
-
# @param parameters [Zavudev::Models::Senders::Agent::
|
|
18
|
+
# @param parameters [Zavudev::Models::Senders::Agent::ToolParameters]
|
|
19
19
|
#
|
|
20
20
|
# @param webhook_url [String] Must be HTTPS.
|
|
21
21
|
#
|
|
@@ -78,7 +78,7 @@ module Zavudev
|
|
|
78
78
|
#
|
|
79
79
|
# @param name [String] Body param
|
|
80
80
|
#
|
|
81
|
-
# @param parameters [Zavudev::Models::Senders::Agent::
|
|
81
|
+
# @param parameters [Zavudev::Models::Senders::Agent::ToolParameters] Body param
|
|
82
82
|
#
|
|
83
83
|
# @param webhook_secret [String, nil] Body param
|
|
84
84
|
#
|
|
@@ -6,7 +6,7 @@ module Zavudev
|
|
|
6
6
|
# Create a WhatsApp message template. Note: Templates must be approved by Meta
|
|
7
7
|
# before use.
|
|
8
8
|
#
|
|
9
|
-
# @overload create(body:, language:, name:, add_security_recommendation: nil, buttons: nil, code_expiration_minutes: nil, instagram_body: nil, sms_body: nil, telegram_body: nil, variables: nil, whatsapp_category: nil, request_options: {})
|
|
9
|
+
# @overload create(body:, language:, name:, add_security_recommendation: nil, buttons: nil, code_expiration_minutes: nil, footer: nil, header_content: nil, header_type: nil, instagram_body: nil, sms_body: nil, telegram_body: nil, variables: nil, whatsapp_category: nil, request_options: {})
|
|
10
10
|
#
|
|
11
11
|
# @param body [String] Default template body. Used when no channel-specific body is set.
|
|
12
12
|
#
|
|
@@ -20,6 +20,12 @@ module Zavudev
|
|
|
20
20
|
#
|
|
21
21
|
# @param code_expiration_minutes [Integer] Code expiration time in minutes. Only for AUTHENTICATION templates.
|
|
22
22
|
#
|
|
23
|
+
# @param footer [String] Footer text for the template.
|
|
24
|
+
#
|
|
25
|
+
# @param header_content [String] Header content (text string or media URL).
|
|
26
|
+
#
|
|
27
|
+
# @param header_type [Symbol, Zavudev::Models::TemplateCreateParams::HeaderType] Type of header for the template.
|
|
28
|
+
#
|
|
23
29
|
# @param instagram_body [String] Channel-specific body for Instagram. Falls back to `body` if not set.
|
|
24
30
|
#
|
|
25
31
|
# @param sms_body [String] Channel-specific body for SMS. Falls back to `body` if not set.
|
data/lib/zavudev/version.rb
CHANGED
data/lib/zavudev.rb
CHANGED
|
@@ -91,6 +91,7 @@ require_relative "zavudev/models/broadcast_update_params"
|
|
|
91
91
|
require_relative "zavudev/models/broadcast_update_response"
|
|
92
92
|
require_relative "zavudev/models/channel"
|
|
93
93
|
require_relative "zavudev/models/contact"
|
|
94
|
+
require_relative "zavudev/models/contact_channel"
|
|
94
95
|
require_relative "zavudev/models/contact_list_params"
|
|
95
96
|
require_relative "zavudev/models/contact_retrieve_by_phone_params"
|
|
96
97
|
require_relative "zavudev/models/contact_retrieve_params"
|
|
@@ -158,6 +159,8 @@ require_relative "zavudev/models/senders/agent/flow_duplicate_response"
|
|
|
158
159
|
require_relative "zavudev/models/senders/agent/flow_list_params"
|
|
159
160
|
require_relative "zavudev/models/senders/agent/flow_retrieve_params"
|
|
160
161
|
require_relative "zavudev/models/senders/agent/flow_retrieve_response"
|
|
162
|
+
require_relative "zavudev/models/senders/agent/flow_step"
|
|
163
|
+
require_relative "zavudev/models/senders/agent/flow_trigger"
|
|
161
164
|
require_relative "zavudev/models/senders/agent/flow_update_params"
|
|
162
165
|
require_relative "zavudev/models/senders/agent/flow_update_response"
|
|
163
166
|
require_relative "zavudev/models/senders/agent/knowledge_base_create_params"
|
|
@@ -176,6 +179,7 @@ require_relative "zavudev/models/senders/agent/tool_create_params"
|
|
|
176
179
|
require_relative "zavudev/models/senders/agent/tool_create_response"
|
|
177
180
|
require_relative "zavudev/models/senders/agent/tool_delete_params"
|
|
178
181
|
require_relative "zavudev/models/senders/agent/tool_list_params"
|
|
182
|
+
require_relative "zavudev/models/senders/agent/tool_parameters"
|
|
179
183
|
require_relative "zavudev/models/senders/agent/tool_retrieve_params"
|
|
180
184
|
require_relative "zavudev/models/senders/agent/tool_retrieve_response"
|
|
181
185
|
require_relative "zavudev/models/senders/agent/tool_test_params"
|
|
@@ -24,10 +24,10 @@ module Zavudev
|
|
|
24
24
|
attr_accessor :verified
|
|
25
25
|
|
|
26
26
|
# All communication channels for this contact.
|
|
27
|
-
sig { returns(T.nilable(T::Array[Zavudev::
|
|
27
|
+
sig { returns(T.nilable(T::Array[Zavudev::ContactChannel])) }
|
|
28
28
|
attr_reader :channels
|
|
29
29
|
|
|
30
|
-
sig { params(channels: T::Array[Zavudev::
|
|
30
|
+
sig { params(channels: T::Array[Zavudev::ContactChannel::OrHash]).void }
|
|
31
31
|
attr_writer :channels
|
|
32
32
|
|
|
33
33
|
sig { returns(T.nilable(String)) }
|
|
@@ -97,7 +97,7 @@ module Zavudev
|
|
|
97
97
|
created_at: Time,
|
|
98
98
|
metadata: T::Hash[Symbol, String],
|
|
99
99
|
verified: T::Boolean,
|
|
100
|
-
channels: T::Array[Zavudev::
|
|
100
|
+
channels: T::Array[Zavudev::ContactChannel::OrHash],
|
|
101
101
|
country_code: String,
|
|
102
102
|
default_channel: Zavudev::Contact::DefaultChannel::OrSymbol,
|
|
103
103
|
display_name: String,
|
|
@@ -146,7 +146,7 @@ module Zavudev
|
|
|
146
146
|
created_at: Time,
|
|
147
147
|
metadata: T::Hash[Symbol, String],
|
|
148
148
|
verified: T::Boolean,
|
|
149
|
-
channels: T::Array[Zavudev::
|
|
149
|
+
channels: T::Array[Zavudev::ContactChannel],
|
|
150
150
|
country_code: String,
|
|
151
151
|
default_channel: Zavudev::Contact::DefaultChannel::TaggedSymbol,
|
|
152
152
|
display_name: String,
|
|
@@ -162,237 +162,6 @@ module Zavudev
|
|
|
162
162
|
def to_hash
|
|
163
163
|
end
|
|
164
164
|
|
|
165
|
-
class Channel < Zavudev::Internal::Type::BaseModel
|
|
166
|
-
OrHash =
|
|
167
|
-
T.type_alias do
|
|
168
|
-
T.any(Zavudev::Contact::Channel, Zavudev::Internal::AnyHash)
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
sig { returns(String) }
|
|
172
|
-
attr_accessor :id
|
|
173
|
-
|
|
174
|
-
# Channel type.
|
|
175
|
-
sig { returns(Zavudev::Contact::Channel::Channel::TaggedSymbol) }
|
|
176
|
-
attr_accessor :channel
|
|
177
|
-
|
|
178
|
-
sig { returns(Time) }
|
|
179
|
-
attr_accessor :created_at
|
|
180
|
-
|
|
181
|
-
# Channel identifier (phone number or email address).
|
|
182
|
-
sig { returns(String) }
|
|
183
|
-
attr_accessor :identifier
|
|
184
|
-
|
|
185
|
-
# Whether this is the primary channel for its type.
|
|
186
|
-
sig { returns(T::Boolean) }
|
|
187
|
-
attr_accessor :is_primary
|
|
188
|
-
|
|
189
|
-
# Whether this channel has been verified.
|
|
190
|
-
sig { returns(T::Boolean) }
|
|
191
|
-
attr_accessor :verified
|
|
192
|
-
|
|
193
|
-
# ISO country code for phone numbers.
|
|
194
|
-
sig { returns(T.nilable(String)) }
|
|
195
|
-
attr_reader :country_code
|
|
196
|
-
|
|
197
|
-
sig { params(country_code: String).void }
|
|
198
|
-
attr_writer :country_code
|
|
199
|
-
|
|
200
|
-
# Optional label for the channel.
|
|
201
|
-
sig { returns(T.nilable(String)) }
|
|
202
|
-
attr_reader :label
|
|
203
|
-
|
|
204
|
-
sig { params(label: String).void }
|
|
205
|
-
attr_writer :label
|
|
206
|
-
|
|
207
|
-
# Last time a message was received on this channel.
|
|
208
|
-
sig { returns(T.nilable(Time)) }
|
|
209
|
-
attr_reader :last_inbound_at
|
|
210
|
-
|
|
211
|
-
sig { params(last_inbound_at: Time).void }
|
|
212
|
-
attr_writer :last_inbound_at
|
|
213
|
-
|
|
214
|
-
sig { returns(T.nilable(T::Hash[Symbol, String])) }
|
|
215
|
-
attr_reader :metadata
|
|
216
|
-
|
|
217
|
-
sig { params(metadata: T::Hash[Symbol, String]).void }
|
|
218
|
-
attr_writer :metadata
|
|
219
|
-
|
|
220
|
-
# Delivery metrics for this channel.
|
|
221
|
-
sig { returns(T.nilable(Zavudev::Contact::Channel::Metrics)) }
|
|
222
|
-
attr_reader :metrics
|
|
223
|
-
|
|
224
|
-
sig { params(metrics: Zavudev::Contact::Channel::Metrics::OrHash).void }
|
|
225
|
-
attr_writer :metrics
|
|
226
|
-
|
|
227
|
-
sig { returns(T.nilable(Time)) }
|
|
228
|
-
attr_reader :updated_at
|
|
229
|
-
|
|
230
|
-
sig { params(updated_at: Time).void }
|
|
231
|
-
attr_writer :updated_at
|
|
232
|
-
|
|
233
|
-
# A communication channel for a contact.
|
|
234
|
-
sig do
|
|
235
|
-
params(
|
|
236
|
-
id: String,
|
|
237
|
-
channel: Zavudev::Contact::Channel::Channel::OrSymbol,
|
|
238
|
-
created_at: Time,
|
|
239
|
-
identifier: String,
|
|
240
|
-
is_primary: T::Boolean,
|
|
241
|
-
verified: T::Boolean,
|
|
242
|
-
country_code: String,
|
|
243
|
-
label: String,
|
|
244
|
-
last_inbound_at: Time,
|
|
245
|
-
metadata: T::Hash[Symbol, String],
|
|
246
|
-
metrics: Zavudev::Contact::Channel::Metrics::OrHash,
|
|
247
|
-
updated_at: Time
|
|
248
|
-
).returns(T.attached_class)
|
|
249
|
-
end
|
|
250
|
-
def self.new(
|
|
251
|
-
id:,
|
|
252
|
-
# Channel type.
|
|
253
|
-
channel:,
|
|
254
|
-
created_at:,
|
|
255
|
-
# Channel identifier (phone number or email address).
|
|
256
|
-
identifier:,
|
|
257
|
-
# Whether this is the primary channel for its type.
|
|
258
|
-
is_primary:,
|
|
259
|
-
# Whether this channel has been verified.
|
|
260
|
-
verified:,
|
|
261
|
-
# ISO country code for phone numbers.
|
|
262
|
-
country_code: nil,
|
|
263
|
-
# Optional label for the channel.
|
|
264
|
-
label: nil,
|
|
265
|
-
# Last time a message was received on this channel.
|
|
266
|
-
last_inbound_at: nil,
|
|
267
|
-
metadata: nil,
|
|
268
|
-
# Delivery metrics for this channel.
|
|
269
|
-
metrics: nil,
|
|
270
|
-
updated_at: nil
|
|
271
|
-
)
|
|
272
|
-
end
|
|
273
|
-
|
|
274
|
-
sig do
|
|
275
|
-
override.returns(
|
|
276
|
-
{
|
|
277
|
-
id: String,
|
|
278
|
-
channel: Zavudev::Contact::Channel::Channel::TaggedSymbol,
|
|
279
|
-
created_at: Time,
|
|
280
|
-
identifier: String,
|
|
281
|
-
is_primary: T::Boolean,
|
|
282
|
-
verified: T::Boolean,
|
|
283
|
-
country_code: String,
|
|
284
|
-
label: String,
|
|
285
|
-
last_inbound_at: Time,
|
|
286
|
-
metadata: T::Hash[Symbol, String],
|
|
287
|
-
metrics: Zavudev::Contact::Channel::Metrics,
|
|
288
|
-
updated_at: Time
|
|
289
|
-
}
|
|
290
|
-
)
|
|
291
|
-
end
|
|
292
|
-
def to_hash
|
|
293
|
-
end
|
|
294
|
-
|
|
295
|
-
# Channel type.
|
|
296
|
-
module Channel
|
|
297
|
-
extend Zavudev::Internal::Type::Enum
|
|
298
|
-
|
|
299
|
-
TaggedSymbol =
|
|
300
|
-
T.type_alias { T.all(Symbol, Zavudev::Contact::Channel::Channel) }
|
|
301
|
-
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
302
|
-
|
|
303
|
-
SMS = T.let(:sms, Zavudev::Contact::Channel::Channel::TaggedSymbol)
|
|
304
|
-
WHATSAPP =
|
|
305
|
-
T.let(:whatsapp, Zavudev::Contact::Channel::Channel::TaggedSymbol)
|
|
306
|
-
EMAIL =
|
|
307
|
-
T.let(:email, Zavudev::Contact::Channel::Channel::TaggedSymbol)
|
|
308
|
-
TELEGRAM =
|
|
309
|
-
T.let(:telegram, Zavudev::Contact::Channel::Channel::TaggedSymbol)
|
|
310
|
-
VOICE =
|
|
311
|
-
T.let(:voice, Zavudev::Contact::Channel::Channel::TaggedSymbol)
|
|
312
|
-
|
|
313
|
-
sig do
|
|
314
|
-
override.returns(
|
|
315
|
-
T::Array[Zavudev::Contact::Channel::Channel::TaggedSymbol]
|
|
316
|
-
)
|
|
317
|
-
end
|
|
318
|
-
def self.values
|
|
319
|
-
end
|
|
320
|
-
end
|
|
321
|
-
|
|
322
|
-
class Metrics < Zavudev::Internal::Type::BaseModel
|
|
323
|
-
OrHash =
|
|
324
|
-
T.type_alias do
|
|
325
|
-
T.any(
|
|
326
|
-
Zavudev::Contact::Channel::Metrics,
|
|
327
|
-
Zavudev::Internal::AnyHash
|
|
328
|
-
)
|
|
329
|
-
end
|
|
330
|
-
|
|
331
|
-
sig { returns(T.nilable(Float)) }
|
|
332
|
-
attr_reader :avg_delivery_time_ms
|
|
333
|
-
|
|
334
|
-
sig { params(avg_delivery_time_ms: Float).void }
|
|
335
|
-
attr_writer :avg_delivery_time_ms
|
|
336
|
-
|
|
337
|
-
sig { returns(T.nilable(Integer)) }
|
|
338
|
-
attr_reader :failure_count
|
|
339
|
-
|
|
340
|
-
sig { params(failure_count: Integer).void }
|
|
341
|
-
attr_writer :failure_count
|
|
342
|
-
|
|
343
|
-
sig { returns(T.nilable(Time)) }
|
|
344
|
-
attr_reader :last_success_at
|
|
345
|
-
|
|
346
|
-
sig { params(last_success_at: Time).void }
|
|
347
|
-
attr_writer :last_success_at
|
|
348
|
-
|
|
349
|
-
sig { returns(T.nilable(Integer)) }
|
|
350
|
-
attr_reader :success_count
|
|
351
|
-
|
|
352
|
-
sig { params(success_count: Integer).void }
|
|
353
|
-
attr_writer :success_count
|
|
354
|
-
|
|
355
|
-
sig { returns(T.nilable(Integer)) }
|
|
356
|
-
attr_reader :total_attempts
|
|
357
|
-
|
|
358
|
-
sig { params(total_attempts: Integer).void }
|
|
359
|
-
attr_writer :total_attempts
|
|
360
|
-
|
|
361
|
-
# Delivery metrics for this channel.
|
|
362
|
-
sig do
|
|
363
|
-
params(
|
|
364
|
-
avg_delivery_time_ms: Float,
|
|
365
|
-
failure_count: Integer,
|
|
366
|
-
last_success_at: Time,
|
|
367
|
-
success_count: Integer,
|
|
368
|
-
total_attempts: Integer
|
|
369
|
-
).returns(T.attached_class)
|
|
370
|
-
end
|
|
371
|
-
def self.new(
|
|
372
|
-
avg_delivery_time_ms: nil,
|
|
373
|
-
failure_count: nil,
|
|
374
|
-
last_success_at: nil,
|
|
375
|
-
success_count: nil,
|
|
376
|
-
total_attempts: nil
|
|
377
|
-
)
|
|
378
|
-
end
|
|
379
|
-
|
|
380
|
-
sig do
|
|
381
|
-
override.returns(
|
|
382
|
-
{
|
|
383
|
-
avg_delivery_time_ms: Float,
|
|
384
|
-
failure_count: Integer,
|
|
385
|
-
last_success_at: Time,
|
|
386
|
-
success_count: Integer,
|
|
387
|
-
total_attempts: Integer
|
|
388
|
-
}
|
|
389
|
-
)
|
|
390
|
-
end
|
|
391
|
-
def to_hash
|
|
392
|
-
end
|
|
393
|
-
end
|
|
394
|
-
end
|
|
395
|
-
|
|
396
165
|
# Preferred channel for this contact.
|
|
397
166
|
module DefaultChannel
|
|
398
167
|
extend Zavudev::Internal::Type::Enum
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module Zavudev
|
|
4
|
+
module Models
|
|
5
|
+
class ContactChannel < Zavudev::Internal::Type::BaseModel
|
|
6
|
+
OrHash =
|
|
7
|
+
T.type_alias do
|
|
8
|
+
T.any(Zavudev::ContactChannel, Zavudev::Internal::AnyHash)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
sig { returns(String) }
|
|
12
|
+
attr_accessor :id
|
|
13
|
+
|
|
14
|
+
# Channel type.
|
|
15
|
+
sig { returns(Zavudev::ContactChannel::Channel::TaggedSymbol) }
|
|
16
|
+
attr_accessor :channel
|
|
17
|
+
|
|
18
|
+
sig { returns(Time) }
|
|
19
|
+
attr_accessor :created_at
|
|
20
|
+
|
|
21
|
+
# Channel identifier (phone number or email address).
|
|
22
|
+
sig { returns(String) }
|
|
23
|
+
attr_accessor :identifier
|
|
24
|
+
|
|
25
|
+
# Whether this is the primary channel for its type.
|
|
26
|
+
sig { returns(T::Boolean) }
|
|
27
|
+
attr_accessor :is_primary
|
|
28
|
+
|
|
29
|
+
# Whether this channel has been verified.
|
|
30
|
+
sig { returns(T::Boolean) }
|
|
31
|
+
attr_accessor :verified
|
|
32
|
+
|
|
33
|
+
# ISO country code for phone numbers.
|
|
34
|
+
sig { returns(T.nilable(String)) }
|
|
35
|
+
attr_reader :country_code
|
|
36
|
+
|
|
37
|
+
sig { params(country_code: String).void }
|
|
38
|
+
attr_writer :country_code
|
|
39
|
+
|
|
40
|
+
# Optional label for the channel.
|
|
41
|
+
sig { returns(T.nilable(String)) }
|
|
42
|
+
attr_reader :label
|
|
43
|
+
|
|
44
|
+
sig { params(label: String).void }
|
|
45
|
+
attr_writer :label
|
|
46
|
+
|
|
47
|
+
# Last time a message was received on this channel.
|
|
48
|
+
sig { returns(T.nilable(Time)) }
|
|
49
|
+
attr_reader :last_inbound_at
|
|
50
|
+
|
|
51
|
+
sig { params(last_inbound_at: Time).void }
|
|
52
|
+
attr_writer :last_inbound_at
|
|
53
|
+
|
|
54
|
+
sig { returns(T.nilable(T::Hash[Symbol, String])) }
|
|
55
|
+
attr_reader :metadata
|
|
56
|
+
|
|
57
|
+
sig { params(metadata: T::Hash[Symbol, String]).void }
|
|
58
|
+
attr_writer :metadata
|
|
59
|
+
|
|
60
|
+
# Delivery metrics for this channel.
|
|
61
|
+
sig { returns(T.nilable(Zavudev::ContactChannel::Metrics)) }
|
|
62
|
+
attr_reader :metrics
|
|
63
|
+
|
|
64
|
+
sig { params(metrics: Zavudev::ContactChannel::Metrics::OrHash).void }
|
|
65
|
+
attr_writer :metrics
|
|
66
|
+
|
|
67
|
+
sig { returns(T.nilable(Time)) }
|
|
68
|
+
attr_reader :updated_at
|
|
69
|
+
|
|
70
|
+
sig { params(updated_at: Time).void }
|
|
71
|
+
attr_writer :updated_at
|
|
72
|
+
|
|
73
|
+
# A communication channel for a contact.
|
|
74
|
+
sig do
|
|
75
|
+
params(
|
|
76
|
+
id: String,
|
|
77
|
+
channel: Zavudev::ContactChannel::Channel::OrSymbol,
|
|
78
|
+
created_at: Time,
|
|
79
|
+
identifier: String,
|
|
80
|
+
is_primary: T::Boolean,
|
|
81
|
+
verified: T::Boolean,
|
|
82
|
+
country_code: String,
|
|
83
|
+
label: String,
|
|
84
|
+
last_inbound_at: Time,
|
|
85
|
+
metadata: T::Hash[Symbol, String],
|
|
86
|
+
metrics: Zavudev::ContactChannel::Metrics::OrHash,
|
|
87
|
+
updated_at: Time
|
|
88
|
+
).returns(T.attached_class)
|
|
89
|
+
end
|
|
90
|
+
def self.new(
|
|
91
|
+
id:,
|
|
92
|
+
# Channel type.
|
|
93
|
+
channel:,
|
|
94
|
+
created_at:,
|
|
95
|
+
# Channel identifier (phone number or email address).
|
|
96
|
+
identifier:,
|
|
97
|
+
# Whether this is the primary channel for its type.
|
|
98
|
+
is_primary:,
|
|
99
|
+
# Whether this channel has been verified.
|
|
100
|
+
verified:,
|
|
101
|
+
# ISO country code for phone numbers.
|
|
102
|
+
country_code: nil,
|
|
103
|
+
# Optional label for the channel.
|
|
104
|
+
label: nil,
|
|
105
|
+
# Last time a message was received on this channel.
|
|
106
|
+
last_inbound_at: nil,
|
|
107
|
+
metadata: nil,
|
|
108
|
+
# Delivery metrics for this channel.
|
|
109
|
+
metrics: nil,
|
|
110
|
+
updated_at: nil
|
|
111
|
+
)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
sig do
|
|
115
|
+
override.returns(
|
|
116
|
+
{
|
|
117
|
+
id: String,
|
|
118
|
+
channel: Zavudev::ContactChannel::Channel::TaggedSymbol,
|
|
119
|
+
created_at: Time,
|
|
120
|
+
identifier: String,
|
|
121
|
+
is_primary: T::Boolean,
|
|
122
|
+
verified: T::Boolean,
|
|
123
|
+
country_code: String,
|
|
124
|
+
label: String,
|
|
125
|
+
last_inbound_at: Time,
|
|
126
|
+
metadata: T::Hash[Symbol, String],
|
|
127
|
+
metrics: Zavudev::ContactChannel::Metrics,
|
|
128
|
+
updated_at: Time
|
|
129
|
+
}
|
|
130
|
+
)
|
|
131
|
+
end
|
|
132
|
+
def to_hash
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# Channel type.
|
|
136
|
+
module Channel
|
|
137
|
+
extend Zavudev::Internal::Type::Enum
|
|
138
|
+
|
|
139
|
+
TaggedSymbol =
|
|
140
|
+
T.type_alias { T.all(Symbol, Zavudev::ContactChannel::Channel) }
|
|
141
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
142
|
+
|
|
143
|
+
SMS = T.let(:sms, Zavudev::ContactChannel::Channel::TaggedSymbol)
|
|
144
|
+
WHATSAPP =
|
|
145
|
+
T.let(:whatsapp, Zavudev::ContactChannel::Channel::TaggedSymbol)
|
|
146
|
+
EMAIL = T.let(:email, Zavudev::ContactChannel::Channel::TaggedSymbol)
|
|
147
|
+
TELEGRAM =
|
|
148
|
+
T.let(:telegram, Zavudev::ContactChannel::Channel::TaggedSymbol)
|
|
149
|
+
VOICE = T.let(:voice, Zavudev::ContactChannel::Channel::TaggedSymbol)
|
|
150
|
+
|
|
151
|
+
sig do
|
|
152
|
+
override.returns(
|
|
153
|
+
T::Array[Zavudev::ContactChannel::Channel::TaggedSymbol]
|
|
154
|
+
)
|
|
155
|
+
end
|
|
156
|
+
def self.values
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
class Metrics < Zavudev::Internal::Type::BaseModel
|
|
161
|
+
OrHash =
|
|
162
|
+
T.type_alias do
|
|
163
|
+
T.any(Zavudev::ContactChannel::Metrics, Zavudev::Internal::AnyHash)
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
sig { returns(T.nilable(Float)) }
|
|
167
|
+
attr_reader :avg_delivery_time_ms
|
|
168
|
+
|
|
169
|
+
sig { params(avg_delivery_time_ms: Float).void }
|
|
170
|
+
attr_writer :avg_delivery_time_ms
|
|
171
|
+
|
|
172
|
+
sig { returns(T.nilable(Integer)) }
|
|
173
|
+
attr_reader :failure_count
|
|
174
|
+
|
|
175
|
+
sig { params(failure_count: Integer).void }
|
|
176
|
+
attr_writer :failure_count
|
|
177
|
+
|
|
178
|
+
sig { returns(T.nilable(Time)) }
|
|
179
|
+
attr_reader :last_success_at
|
|
180
|
+
|
|
181
|
+
sig { params(last_success_at: Time).void }
|
|
182
|
+
attr_writer :last_success_at
|
|
183
|
+
|
|
184
|
+
sig { returns(T.nilable(Integer)) }
|
|
185
|
+
attr_reader :success_count
|
|
186
|
+
|
|
187
|
+
sig { params(success_count: Integer).void }
|
|
188
|
+
attr_writer :success_count
|
|
189
|
+
|
|
190
|
+
sig { returns(T.nilable(Integer)) }
|
|
191
|
+
attr_reader :total_attempts
|
|
192
|
+
|
|
193
|
+
sig { params(total_attempts: Integer).void }
|
|
194
|
+
attr_writer :total_attempts
|
|
195
|
+
|
|
196
|
+
# Delivery metrics for this channel.
|
|
197
|
+
sig do
|
|
198
|
+
params(
|
|
199
|
+
avg_delivery_time_ms: Float,
|
|
200
|
+
failure_count: Integer,
|
|
201
|
+
last_success_at: Time,
|
|
202
|
+
success_count: Integer,
|
|
203
|
+
total_attempts: Integer
|
|
204
|
+
).returns(T.attached_class)
|
|
205
|
+
end
|
|
206
|
+
def self.new(
|
|
207
|
+
avg_delivery_time_ms: nil,
|
|
208
|
+
failure_count: nil,
|
|
209
|
+
last_success_at: nil,
|
|
210
|
+
success_count: nil,
|
|
211
|
+
total_attempts: nil
|
|
212
|
+
)
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
sig do
|
|
216
|
+
override.returns(
|
|
217
|
+
{
|
|
218
|
+
avg_delivery_time_ms: Float,
|
|
219
|
+
failure_count: Integer,
|
|
220
|
+
last_success_at: Time,
|
|
221
|
+
success_count: Integer,
|
|
222
|
+
total_attempts: Integer
|
|
223
|
+
}
|
|
224
|
+
)
|
|
225
|
+
end
|
|
226
|
+
def to_hash
|
|
227
|
+
end
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
end
|