telerivet 1.4.5 → 1.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.
@@ -21,6 +21,10 @@ module Telerivet
21
21
  # * Name of the service
22
22
  # * Updatable via API
23
23
  #
24
+ # - service_type
25
+ # * Type of the service.
26
+ # * Read-only
27
+ #
24
28
  # - active (bool)
25
29
  # * Whether the service is active or inactive. Inactive services are not automatically
26
30
  # triggered and cannot be invoked via the API.
@@ -48,31 +52,48 @@ module Telerivet
48
52
  # * ID of the project this service belongs to
49
53
  # * Read-only
50
54
  #
51
- # - label_id
52
- # * ID of the label containing messages sent or received by this service (currently only
53
- # used for polls)
54
- # * Read-only
55
- #
56
55
  # - response_table_id
57
- # * ID of the data table where responses to this service will be stored (currently only
58
- # used for polls)
59
- # * Read-only
56
+ # * ID of the data table where responses to this service will be stored
57
+ # * Updatable via API
60
58
  #
61
- # - sample_group_id
62
- # * ID of the group containing contacts that have been invited to interact with this
63
- # service (currently only used for polls)
64
- # * Read-only
59
+ # - phone_ids
60
+ # * IDs of phones (basic routes) associated with this service, or null if the service is
61
+ # associated with all routes. Only applies for service types that handle incoming
62
+ # messages, voice calls, or USSD sessions.
63
+ # * Updatable via API
65
64
  #
66
- # - respondent_group_id
67
- # * ID of the group containing contacts that have completed an interaction with this
68
- # service (currently only used for polls)
69
- # * Read-only
65
+ # - apply_mode
66
+ # * If apply_mode is `unhandled`, the service will not be triggered if another service
67
+ # has already handled the incoming message. If apply_mode is `always`, the service will
68
+ # always be triggered regardless of other services. Only applies to services that handle
69
+ # incoming messages.
70
+ # * Allowed values: always, unhandled
71
+ # * Updatable via API
72
+ #
73
+ # - contact_number_filter
74
+ # * If contact_number_filter is `long_number`, this service will only be triggered if
75
+ # the contact phone number has at least 7 digits (ignoring messages from shortcodes and
76
+ # alphanumeric senders). If contact_number_filter is `all`, the service will be
77
+ # triggered for all contact phone numbers. Only applies to services that handle
78
+ # incoming messages.
79
+ # * Allowed values: long_number, all
80
+ # * Updatable via API
81
+ #
82
+ # - show_action (bool)
83
+ # * Whether this service is shown in the 'Actions' menu within the Telerivet web app
84
+ # when the service is active. Only provided for service types that are manually
85
+ # triggered.
86
+ # * Updatable via API
87
+ #
88
+ # - direction
89
+ # * Determines whether the service handles incoming voice calls, outgoing voice calls,
90
+ # or both. Only applies to services that handle voice calls.
91
+ # * Allowed values: incoming, outgoing, both
92
+ # * Updatable via API
70
93
  #
71
- # - questions (array)
72
- # * Array of objects describing each question in a poll (only used for polls). Each
73
- # object has the properties `"id"` (the question ID), `"content"` (the text of the
74
- # question), and `"question_type"` (either `"multiple_choice"`, `"missed_call"`, or
75
- # `"open"`).
94
+ # - webhook_url
95
+ # * URL that a third-party can invoke to trigger this service. Only provided for
96
+ # services that are triggered by a webhook request.
76
97
  # * Read-only
77
98
  #
78
99
  class Service < Entity
@@ -97,7 +118,7 @@ class Service < Entity
97
118
  #
98
119
  # - context
99
120
  # * The name of the context in which this service is invoked
100
- # * Allowed values: message, call, contact, project
121
+ # * Allowed values: message, call, ussd_session, row, contact, project
101
122
  # * Required
102
123
  #
103
124
  # - event
@@ -109,11 +130,49 @@ class Service < Entity
109
130
  # * Required if context is 'message'
110
131
  #
111
132
  # - contact_id
112
- # * The ID of the contact this service is triggered for
113
- # * Required if context is 'contact'
133
+ # * The ID of the contact this service is triggered for (either `contact_id` or
134
+ # `phone_number` is required if `context` is 'contact')
135
+ #
136
+ # - phone_number
137
+ # * The phone number of the contact this service is triggered for (either `contact_id`
138
+ # or `phone_number` is required if `context` is 'contact'). If no contact exists with
139
+ # this phone number, a new contact will be created.
140
+ #
141
+ # - variables (Hash)
142
+ # * Object containing up to 25 temporary variable names and their corresponding values
143
+ # to set when invoking the service. Values may be strings, numbers, or boolean
144
+ # (true/false). String values may be up to 4096 bytes in length. Arrays and objects
145
+ # are not supported. Within Custom Actions, each variable can be used like `[[$name]]`
146
+ # (with a leading `$` character and surrounded by double square brackets). Within a
147
+ # Cloud Script API service or JavaScript action, each variable will be available as a
148
+ # global JavaScript variable like `$name` (with a leading `$` character).
149
+ #
150
+ # - route_id
151
+ # * The ID of the phone or route that the service will use for sending messages by
152
+ # default
153
+ #
154
+ # - async (bool)
155
+ # * If set to true, the service will be invoked asynchronously. By default, queued
156
+ # services will be invoked one at a time for each project.
114
157
  #
115
158
  # Returns:
116
- # object
159
+ # (associative array)
160
+ # - return_value (any)
161
+ # * Return value of the service. May be any JSON type (boolean, number, string,
162
+ # array, object, or null). (Undefined if async=true.)
163
+ #
164
+ # - log_entries (array)
165
+ # * Array of log entry strings generated by the service. (Undefined if async=true.)
166
+ #
167
+ # - errors (array)
168
+ # * Array of error message strings generated by the service. (Undefined if
169
+ # async=true.)
170
+ #
171
+ # - sent_messages (array of objects)
172
+ # * Array of messages sent by the service.
173
+ #
174
+ # - airtime_transactions (array of objects)
175
+ # * Array of airtime transactions sent by the service (Undefined if async=true.)
117
176
  #
118
177
  def invoke(options)
119
178
  invoke_result = @api.do_request('POST', get_base_api_path() + '/invoke', options)
@@ -210,9 +269,9 @@ class Service < Entity
210
269
  #
211
270
  # - vars (Hash)
212
271
  # * Filter states by value of a custom variable (e.g. vars[email], vars[foo], etc.)
213
- # * Allowed modifiers: vars[foo][exists], vars[foo][ne], vars[foo][prefix],
214
- # vars[foo][not_prefix], vars[foo][gte], vars[foo][gt], vars[foo][lt], vars[foo][lte],
215
- # vars[foo][min], vars[foo][max]
272
+ # * Allowed modifiers: vars[foo][ne], vars[foo][prefix], vars[foo][not_prefix],
273
+ # vars[foo][gte], vars[foo][gt], vars[foo][lt], vars[foo][lte], vars[foo][min],
274
+ # vars[foo][max], vars[foo][exists]
216
275
  #
217
276
  # - sort
218
277
  # * Sort the results based on a field
@@ -240,6 +299,41 @@ class Service < Entity
240
299
  @api.cursor(ContactServiceState, get_base_api_path() + "/states", options)
241
300
  end
242
301
 
302
+ #
303
+ # Gets configuration specific to the type of automated service.
304
+ #
305
+ # Only certain types of services provide their configuration via the
306
+ # API.
307
+ #
308
+ # Returns:
309
+ # object
310
+ #
311
+ def get_config()
312
+ return @api.do_request("GET", get_base_api_path() + "/config")
313
+ end
314
+
315
+ #
316
+ # Updates configuration specific to the type of automated service.
317
+ #
318
+ # Only certain types of services support updating their configuration
319
+ # via the API.
320
+ #
321
+ # Note: when updating a service of type custom_template_instance,
322
+ # the validation script will be invoked when calling this method.
323
+ #
324
+ # Arguments:
325
+ # - options (Hash)
326
+ # * Configuration for this service type. See
327
+ # [project.createService](#Project.createService) for available configuration options.
328
+ # * Required
329
+ #
330
+ # Returns:
331
+ # object
332
+ #
333
+ def set_config(options)
334
+ return @api.do_request("POST", get_base_api_path() + "/config", options)
335
+ end
336
+
243
337
  #
244
338
  # Saves any fields or custom variables that have changed for this service.
245
339
  #
@@ -247,6 +341,13 @@ class Service < Entity
247
341
  super
248
342
  end
249
343
 
344
+ #
345
+ # Deletes this service.
346
+ #
347
+ def delete()
348
+ @api.do_request("DELETE", get_base_api_path())
349
+ end
350
+
250
351
  def id
251
352
  get('id')
252
353
  end
@@ -259,6 +360,10 @@ class Service < Entity
259
360
  set('name', value)
260
361
  end
261
362
 
363
+ def service_type
364
+ get('service_type')
365
+ end
366
+
262
367
  def active
263
368
  get('active')
264
369
  end
@@ -283,24 +388,56 @@ class Service < Entity
283
388
  get('project_id')
284
389
  end
285
390
 
286
- def label_id
287
- get('label_id')
288
- end
289
-
290
391
  def response_table_id
291
392
  get('response_table_id')
292
393
  end
293
394
 
294
- def sample_group_id
295
- get('sample_group_id')
395
+ def response_table_id=(value)
396
+ set('response_table_id', value)
397
+ end
398
+
399
+ def phone_ids
400
+ get('phone_ids')
401
+ end
402
+
403
+ def phone_ids=(value)
404
+ set('phone_ids', value)
405
+ end
406
+
407
+ def apply_mode
408
+ get('apply_mode')
409
+ end
410
+
411
+ def apply_mode=(value)
412
+ set('apply_mode', value)
413
+ end
414
+
415
+ def contact_number_filter
416
+ get('contact_number_filter')
417
+ end
418
+
419
+ def contact_number_filter=(value)
420
+ set('contact_number_filter', value)
421
+ end
422
+
423
+ def show_action
424
+ get('show_action')
425
+ end
426
+
427
+ def show_action=(value)
428
+ set('show_action', value)
429
+ end
430
+
431
+ def direction
432
+ get('direction')
296
433
  end
297
434
 
298
- def respondent_group_id
299
- get('respondent_group_id')
435
+ def direction=(value)
436
+ set('direction', value)
300
437
  end
301
438
 
302
- def questions
303
- get('questions')
439
+ def webhook_url
440
+ get('webhook_url')
304
441
  end
305
442
 
306
443
  def get_base_api_path()
@@ -0,0 +1,151 @@
1
+
2
+ module Telerivet
3
+
4
+ #
5
+ # Represents an asynchronous task that is applied to all entities matching a filter.
6
+ #
7
+ # Tasks include services applied to contacts, messages, or data rows; adding
8
+ # or removing contacts from a group; blocking or unblocking sending messages to a contact;
9
+ # updating a custom variable; deleting contacts, messages, or data rows; or
10
+ # exporting data to CSV.
11
+ #
12
+ # Fields:
13
+ #
14
+ # - id (string, max 34 characters)
15
+ # * ID of the task
16
+ # * Read-only
17
+ #
18
+ # - task_type (string)
19
+ # * The task type
20
+ # * Read-only
21
+ #
22
+ # - task_params (Hash)
23
+ # * Parameters applied to all matching rows (specific to `task_type`). See
24
+ # [project.createTask](#Project.createTask).
25
+ # * Read-only
26
+ #
27
+ # - filter_type
28
+ # * Type of filter defining the rows that the task is applied to
29
+ # * Read-only
30
+ #
31
+ # - filter_params (Hash)
32
+ # * Parameters defining the rows that the task is applied to (specific to
33
+ # `filter_type`). See [project.createTask](#Project.createTask).
34
+ # * Read-only
35
+ #
36
+ # - time_created (UNIX timestamp)
37
+ # * Time the task was created in Telerivet
38
+ # * Read-only
39
+ #
40
+ # - time_active (UNIX timestamp)
41
+ # * Time Telerivet started executing the task
42
+ # * Read-only
43
+ #
44
+ # - time_complete (UNIX timestamp)
45
+ # * Time Telerivet finished executing the task
46
+ # * Read-only
47
+ #
48
+ # - total_rows (int)
49
+ # * The total number of rows matching the filter (null if not known)
50
+ # * Read-only
51
+ #
52
+ # - current_row (int)
53
+ # * The number of rows that have been processed so far
54
+ # * Read-only
55
+ #
56
+ # - status (string)
57
+ # * The current status of the task
58
+ # * Allowed values: created, queued, active, complete, failed, cancelled
59
+ # * Read-only
60
+ #
61
+ # - vars (Hash)
62
+ # * Custom variables stored for this task
63
+ # * Read-only
64
+ #
65
+ # - table_id (string, max 34 characters)
66
+ # * ID of the data table this task is applied to (if applicable)
67
+ # * Read-only
68
+ #
69
+ # - user_id (string, max 34 characters)
70
+ # * ID of the Telerivet user who created the task (if applicable)
71
+ # * Read-only
72
+ #
73
+ # - project_id
74
+ # * ID of the project this task belongs to
75
+ # * Read-only
76
+ #
77
+ class Task < Entity
78
+ #
79
+ # Cancels a task that is not yet complete.
80
+ #
81
+ # Returns:
82
+ # Telerivet::Task
83
+ #
84
+ def cancel()
85
+ require_relative 'task'
86
+ Task.new(@api, @api.do_request("POST", get_base_api_path() + "/cancel"))
87
+ end
88
+
89
+ def id
90
+ get('id')
91
+ end
92
+
93
+ def task_type
94
+ get('task_type')
95
+ end
96
+
97
+ def task_params
98
+ get('task_params')
99
+ end
100
+
101
+ def filter_type
102
+ get('filter_type')
103
+ end
104
+
105
+ def filter_params
106
+ get('filter_params')
107
+ end
108
+
109
+ def time_created
110
+ get('time_created')
111
+ end
112
+
113
+ def time_active
114
+ get('time_active')
115
+ end
116
+
117
+ def time_complete
118
+ get('time_complete')
119
+ end
120
+
121
+ def total_rows
122
+ get('total_rows')
123
+ end
124
+
125
+ def current_row
126
+ get('current_row')
127
+ end
128
+
129
+ def status
130
+ get('status')
131
+ end
132
+
133
+ def table_id
134
+ get('table_id')
135
+ end
136
+
137
+ def user_id
138
+ get('user_id')
139
+ end
140
+
141
+ def project_id
142
+ get('project_id')
143
+ end
144
+
145
+ def get_base_api_path()
146
+ "/projects/#{get('project_id')}/tasks/#{get('id')}"
147
+ end
148
+
149
+ end
150
+
151
+ end
data/lib/telerivet.rb CHANGED
@@ -9,7 +9,7 @@ module Telerivet
9
9
  class API
10
10
  attr_reader :num_requests
11
11
 
12
- @@client_version = '1.4.5'
12
+ @@client_version = '1.7.0'
13
13
 
14
14
  #
15
15
  # Initializes a client handle to the Telerivet REST API.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: telerivet
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.5
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jesse Young
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-15 00:00:00.000000000 Z
11
+ date: 2023-06-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Ruby client library for Telerivet REST API
14
14
  email: support@telerivet.com
@@ -18,6 +18,7 @@ extra_rdoc_files: []
18
18
  files:
19
19
  - lib/cacert.pem
20
20
  - lib/telerivet.rb
21
+ - lib/telerivet/airtimetransaction.rb
21
22
  - lib/telerivet/apicursor.rb
22
23
  - lib/telerivet/broadcast.rb
23
24
  - lib/telerivet/contact.rb
@@ -31,9 +32,11 @@ files:
31
32
  - lib/telerivet/organization.rb
32
33
  - lib/telerivet/phone.rb
33
34
  - lib/telerivet/project.rb
35
+ - lib/telerivet/relativescheduledmessage.rb
34
36
  - lib/telerivet/route.rb
35
37
  - lib/telerivet/scheduledmessage.rb
36
38
  - lib/telerivet/service.rb
39
+ - lib/telerivet/task.rb
37
40
  homepage: http://telerivet.com
38
41
  licenses:
39
42
  - MIT