telerivet 1.6.1 → 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.
- checksums.yaml +4 -4
- data/lib/telerivet/airtimetransaction.rb +16 -0
- data/lib/telerivet/apicursor.rb +26 -22
- data/lib/telerivet/broadcast.rb +4 -4
- data/lib/telerivet/contact.rb +7 -4
- data/lib/telerivet/datatable.rb +2 -2
- data/lib/telerivet/group.rb +4 -1
- data/lib/telerivet/label.rb +1 -1
- data/lib/telerivet/message.rb +25 -3
- data/lib/telerivet/organization.rb +44 -2
- data/lib/telerivet/phone.rb +10 -8
- data/lib/telerivet/project.rb +616 -89
- data/lib/telerivet/relativescheduledmessage.rb +361 -0
- data/lib/telerivet/route.rb +1 -1
- data/lib/telerivet/scheduledmessage.rb +102 -23
- data/lib/telerivet/service.rb +131 -32
- data/lib/telerivet.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2276ff47e23f0670121a7295c0cf3d860740ebb0c1980de13e15ae2f25c2659d
|
4
|
+
data.tar.gz: 55db2507c8bcfa9f8ed0c3102f830dea689fd57ef57d0a00f1b488eebf46f4b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cdd68937b393e61a1ec76e536b0abfcf30e3bb16127b2ea6a37f221013c8ee9d43aa99f5bf758eeb70d04c0366ffcfe1a2e4af576d0620507412b92ac8ceeab7
|
7
|
+
data.tar.gz: 50cf5362c2926a104d8e1d6cd15ee5473589cdf31e78e516f9e6ad1af335baec040de5b5cf8598dc8e95008e08fe9775a448da465fffc708030b8e217d86e52a
|
@@ -28,6 +28,14 @@ module Telerivet
|
|
28
28
|
# * Country code
|
29
29
|
# * Read-only
|
30
30
|
#
|
31
|
+
# - time_created (UNIX timestamp)
|
32
|
+
# * The time that the airtime transaction was created on Telerivet's servers
|
33
|
+
# * Read-only
|
34
|
+
#
|
35
|
+
# - transaction_time (UNIX timestamp)
|
36
|
+
# * The time that the airtime transaction was sent, or null if it has not been sent
|
37
|
+
# * Read-only
|
38
|
+
#
|
31
39
|
# - status
|
32
40
|
# * Current status of airtime transaction (`successful`, `failed`, `cancelled`,
|
33
41
|
# `queued`, `pending_approval`, or `pending_payment`)
|
@@ -90,6 +98,14 @@ class AirtimeTransaction < Entity
|
|
90
98
|
get('country')
|
91
99
|
end
|
92
100
|
|
101
|
+
def time_created
|
102
|
+
get('time_created')
|
103
|
+
end
|
104
|
+
|
105
|
+
def transaction_time
|
106
|
+
get('transaction_time')
|
107
|
+
end
|
108
|
+
|
93
109
|
def status
|
94
110
|
get('status')
|
95
111
|
end
|
data/lib/telerivet/apicursor.rb
CHANGED
@@ -13,16 +13,16 @@ class APICursor
|
|
13
13
|
|
14
14
|
def initialize(api, item_cls, path, params = nil)
|
15
15
|
params ||= {}
|
16
|
-
|
16
|
+
|
17
17
|
if params.has_key?('count')
|
18
18
|
raise Exception, "Cannot construct APICursor with 'count' parameter. Call the count() method instead."
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
@api = api
|
22
22
|
@item_cls = item_cls
|
23
23
|
@path = path
|
24
24
|
@params = params
|
25
|
-
|
25
|
+
|
26
26
|
@count = -1
|
27
27
|
@pos = nil
|
28
28
|
@data = nil
|
@@ -31,15 +31,15 @@ class APICursor
|
|
31
31
|
@limit = nil
|
32
32
|
@offset = 0
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
def each()
|
36
36
|
loop do
|
37
37
|
item = self.next()
|
38
|
-
return if item == nil
|
38
|
+
return if item == nil
|
39
39
|
yield item
|
40
40
|
end
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
#
|
44
44
|
# Limits the maximum number of entities fetched by this query.
|
45
45
|
#
|
@@ -60,7 +60,7 @@ class APICursor
|
|
60
60
|
@limit = _limit
|
61
61
|
self
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
#
|
65
65
|
# Returns the total count of entities matching the current query, without actually fetching
|
66
66
|
# the entities themselves.
|
@@ -76,13 +76,13 @@ class APICursor
|
|
76
76
|
if @count == -1
|
77
77
|
params = @params.clone
|
78
78
|
params['count'] = 1
|
79
|
-
|
79
|
+
|
80
80
|
res = @api.do_request("GET", @path, params)
|
81
81
|
@count = res['count'].to_i
|
82
82
|
end
|
83
83
|
@count
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
def all()
|
87
87
|
to_a
|
88
88
|
end
|
@@ -97,37 +97,41 @@ class APICursor
|
|
97
97
|
return false if @limit != nil && @offset >= @limit
|
98
98
|
|
99
99
|
load_next_page() if @data == nil
|
100
|
-
|
100
|
+
|
101
101
|
return true if @pos < @data.length
|
102
|
-
|
102
|
+
|
103
103
|
return false if !@truncated
|
104
|
-
|
104
|
+
|
105
105
|
load_next_page()
|
106
|
-
|
106
|
+
|
107
107
|
@pos < @data.length
|
108
108
|
end
|
109
|
-
|
109
|
+
|
110
110
|
#
|
111
111
|
# Returns the next entity in the result set.
|
112
112
|
#
|
113
113
|
# Returns:
|
114
114
|
# Telerivet::Entity
|
115
115
|
#
|
116
|
-
def next()
|
116
|
+
def next()
|
117
117
|
if @limit != nil && @offset >= @limit
|
118
118
|
return nil
|
119
119
|
end
|
120
|
-
|
120
|
+
|
121
121
|
if @data == nil || (@pos >= @data.length && @truncated)
|
122
122
|
load_next_page()
|
123
123
|
end
|
124
|
-
|
124
|
+
|
125
125
|
if @pos < @data.length
|
126
126
|
item_data = @data[@pos]
|
127
127
|
@pos += 1
|
128
128
|
@offset += 1
|
129
129
|
cls = @item_cls
|
130
|
-
|
130
|
+
if cls
|
131
|
+
return cls.new(@api, item_data, true)
|
132
|
+
else
|
133
|
+
return item_data
|
134
|
+
end
|
131
135
|
else
|
132
136
|
return nil
|
133
137
|
end
|
@@ -135,17 +139,17 @@ class APICursor
|
|
135
139
|
|
136
140
|
def load_next_page()
|
137
141
|
request_params = @params.clone
|
138
|
-
|
142
|
+
|
139
143
|
if @next_marker != nil
|
140
144
|
request_params['marker'] = @next_marker
|
141
145
|
end
|
142
|
-
|
146
|
+
|
143
147
|
if @limit != nil && !request_params.has_key?("page_size")
|
144
148
|
request_params['page_size'] = [@limit, 200].min
|
145
149
|
end
|
146
|
-
|
150
|
+
|
147
151
|
response = @api.do_request("GET", @path, request_params)
|
148
|
-
|
152
|
+
|
149
153
|
@data = response['data']
|
150
154
|
@truncated = response['truncated']
|
151
155
|
@next_marker = response['next_marker']
|
data/lib/telerivet/broadcast.rb
CHANGED
@@ -75,7 +75,7 @@ module Telerivet
|
|
75
75
|
#
|
76
76
|
# - message_type
|
77
77
|
# * Type of message sent from this broadcast
|
78
|
-
# * Allowed values: sms, mms, ussd, call, service
|
78
|
+
# * Allowed values: sms, mms, ussd, ussd_session, call, chat, service
|
79
79
|
# * Read-only
|
80
80
|
#
|
81
81
|
# - content (string)
|
@@ -97,7 +97,7 @@ module Telerivet
|
|
97
97
|
# * Allowed values: female, male
|
98
98
|
# * Read-only
|
99
99
|
#
|
100
|
-
# -
|
100
|
+
# - replace_variables (bool)
|
101
101
|
# * Set to true if Telerivet will render variables like [[contact.name]] in the message
|
102
102
|
# content, false otherwise
|
103
103
|
# * Read-only
|
@@ -257,8 +257,8 @@ class Broadcast < Entity
|
|
257
257
|
get('tts_voice')
|
258
258
|
end
|
259
259
|
|
260
|
-
def
|
261
|
-
get('
|
260
|
+
def replace_variables
|
261
|
+
get('replace_variables')
|
262
262
|
end
|
263
263
|
|
264
264
|
def status
|
data/lib/telerivet/contact.rb
CHANGED
@@ -63,8 +63,8 @@ module Telerivet
|
|
63
63
|
# * Read-only
|
64
64
|
#
|
65
65
|
# - default_route_id
|
66
|
-
# * ID of the phone or route that Telerivet will use by default to
|
67
|
-
# contact (null if using project default route)
|
66
|
+
# * ID of the basic route (phone) or custom route that Telerivet will use by default to
|
67
|
+
# send messages to this contact (null if using project default route)
|
68
68
|
# * Updatable via API
|
69
69
|
#
|
70
70
|
# - group_ids (array of strings)
|
@@ -134,7 +134,7 @@ class Contact < Entity
|
|
134
134
|
#
|
135
135
|
# - message_type
|
136
136
|
# * Filter messages by message_type
|
137
|
-
# * Allowed values: sms, mms, ussd, call, service
|
137
|
+
# * Allowed values: sms, mms, ussd, ussd_session, call, chat, service
|
138
138
|
#
|
139
139
|
# - source
|
140
140
|
# * Filter messages by source
|
@@ -253,7 +253,7 @@ class Contact < Entity
|
|
253
253
|
#
|
254
254
|
# - message_type
|
255
255
|
# * Filter scheduled messages by message_type
|
256
|
-
# * Allowed values: sms, mms, ussd, call, service
|
256
|
+
# * Allowed values: sms, mms, ussd, ussd_session, call, chat, service
|
257
257
|
#
|
258
258
|
# - time_created (UNIX timestamp)
|
259
259
|
# * Filter scheduled messages by time_created
|
@@ -263,6 +263,9 @@ class Contact < Entity
|
|
263
263
|
# * Filter scheduled messages by next_time
|
264
264
|
# * Allowed modifiers: next_time[min], next_time[max], next_time[exists]
|
265
265
|
#
|
266
|
+
# - relative_scheduled_id
|
267
|
+
# * Filter scheduled messages created for a relative scheduled message
|
268
|
+
#
|
266
269
|
# - sort
|
267
270
|
# * Sort the results based on a field
|
268
271
|
# * Allowed values: default, next_time
|
data/lib/telerivet/datatable.rb
CHANGED
@@ -176,8 +176,8 @@ class DataTable < Entity
|
|
176
176
|
#
|
177
177
|
# - type (string)
|
178
178
|
# * Field type
|
179
|
-
# * Allowed values: text, long_text, phone_number, email, url, audio, date,
|
180
|
-
# number, boolean, select
|
179
|
+
# * Allowed values: text, long_text, secret, phone_number, email, url, audio, date,
|
180
|
+
# date_time, number, boolean, checkbox, select, radio
|
181
181
|
#
|
182
182
|
# - order (int)
|
183
183
|
# * Order in which to display the field
|
data/lib/telerivet/group.rb
CHANGED
@@ -124,7 +124,7 @@ class Group < Entity
|
|
124
124
|
#
|
125
125
|
# - message_type
|
126
126
|
# * Filter scheduled messages by message_type
|
127
|
-
# * Allowed values: sms, mms, ussd, call, service
|
127
|
+
# * Allowed values: sms, mms, ussd, ussd_session, call, chat, service
|
128
128
|
#
|
129
129
|
# - time_created (UNIX timestamp)
|
130
130
|
# * Filter scheduled messages by time_created
|
@@ -134,6 +134,9 @@ class Group < Entity
|
|
134
134
|
# * Filter scheduled messages by next_time
|
135
135
|
# * Allowed modifiers: next_time[min], next_time[max], next_time[exists]
|
136
136
|
#
|
137
|
+
# - relative_scheduled_id
|
138
|
+
# * Filter scheduled messages created for a relative scheduled message
|
139
|
+
#
|
137
140
|
# - sort
|
138
141
|
# * Sort the results based on a field
|
139
142
|
# * Allowed values: default, next_time
|
data/lib/telerivet/label.rb
CHANGED
@@ -39,7 +39,7 @@ class Label < Entity
|
|
39
39
|
#
|
40
40
|
# - message_type
|
41
41
|
# * Filter messages by message_type
|
42
|
-
# * Allowed values: sms, mms, ussd, call, service
|
42
|
+
# * Allowed values: sms, mms, ussd, ussd_session, call, chat, service
|
43
43
|
#
|
44
44
|
# - source
|
45
45
|
# * Filter messages by source
|
data/lib/telerivet/message.rb
CHANGED
@@ -23,7 +23,7 @@ module Telerivet
|
|
23
23
|
#
|
24
24
|
# - message_type
|
25
25
|
# * Type of the message
|
26
|
-
# * Allowed values: sms, mms, ussd, call, service
|
26
|
+
# * Allowed values: sms, mms, ussd, ussd_session, call, chat, service
|
27
27
|
# * Read-only
|
28
28
|
#
|
29
29
|
# - source
|
@@ -93,8 +93,12 @@ module Telerivet
|
|
93
93
|
# * Updatable via API
|
94
94
|
#
|
95
95
|
# - external_id
|
96
|
-
# * The ID of this message from an external SMS gateway provider (e.g. Twilio or
|
97
|
-
# if available.
|
96
|
+
# * The ID of this message from an external SMS gateway provider (e.g. Twilio or
|
97
|
+
# Vonage), if available.
|
98
|
+
# * Read-only
|
99
|
+
#
|
100
|
+
# - num_parts (number)
|
101
|
+
# * The number of SMS parts associated with the message, if applicable and if known.
|
98
102
|
# * Read-only
|
99
103
|
#
|
100
104
|
# - price (number)
|
@@ -144,6 +148,16 @@ module Telerivet
|
|
144
148
|
# undefined for messages that do not contain short URLs.
|
145
149
|
# * Read-only
|
146
150
|
#
|
151
|
+
# - network_code (string)
|
152
|
+
# * A string identifying the network that sent or received the message, if known. For
|
153
|
+
# mobile networks, this string contains the 3-digit mobile country code (MCC) followed
|
154
|
+
# by the 2- or 3-digit mobile network code (MNC), which results in a 5- or 6-digit
|
155
|
+
# number. For lists of mobile network operators and their corresponding MCC/MNC values,
|
156
|
+
# see [Mobile country code Wikipedia
|
157
|
+
# article](https://en.wikipedia.org/wiki/Mobile_country_code). The network_code property
|
158
|
+
# may be non-numeric for messages not sent via mobile networks.
|
159
|
+
# * Read-only
|
160
|
+
#
|
147
161
|
# - media (array)
|
148
162
|
# * For text messages containing media files, this is an array of objects with the
|
149
163
|
# properties `url`, `type` (MIME type), `filename`, and `size` (file size in bytes).
|
@@ -400,6 +414,10 @@ class Message < Entity
|
|
400
414
|
get('external_id')
|
401
415
|
end
|
402
416
|
|
417
|
+
def num_parts
|
418
|
+
get('num_parts')
|
419
|
+
end
|
420
|
+
|
403
421
|
def price
|
404
422
|
get('price')
|
405
423
|
end
|
@@ -436,6 +454,10 @@ class Message < Entity
|
|
436
454
|
get('short_urls')
|
437
455
|
end
|
438
456
|
|
457
|
+
def network_code
|
458
|
+
get('network_code')
|
459
|
+
end
|
460
|
+
|
439
461
|
def media
|
440
462
|
get('media')
|
441
463
|
end
|
@@ -15,11 +15,53 @@ module Telerivet
|
|
15
15
|
# * Updatable via API
|
16
16
|
#
|
17
17
|
# - timezone_id
|
18
|
-
# * Billing quota time zone ID; see
|
19
|
-
#
|
18
|
+
# * Billing quota time zone ID; see [List of tz database time zones Wikipedia
|
19
|
+
# article](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
|
20
20
|
# * Updatable via API
|
21
21
|
#
|
22
22
|
class Organization < Entity
|
23
|
+
#
|
24
|
+
# Creates a new project.
|
25
|
+
#
|
26
|
+
# Some project settings are not currently possible to configure via
|
27
|
+
# the API, and can only be edited via the web app after the project is created.
|
28
|
+
#
|
29
|
+
# Arguments:
|
30
|
+
# - options (Hash)
|
31
|
+
# * Required
|
32
|
+
#
|
33
|
+
# - name (string)
|
34
|
+
# * Name of the project to create, which must be unique in the organization.
|
35
|
+
# * Required
|
36
|
+
#
|
37
|
+
# - timezone_id
|
38
|
+
# * Default TZ database timezone ID; see [List of tz database time zones Wikipedia
|
39
|
+
# article](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones). This timezone
|
40
|
+
# is used when computing statistics by date.
|
41
|
+
#
|
42
|
+
# - url_slug
|
43
|
+
# * Unique string used as a component of the project's URL in the Telerivet web app.
|
44
|
+
# If not provided, a URL slug will be generated automatically.
|
45
|
+
#
|
46
|
+
# - auto_create_contacts (bool)
|
47
|
+
# * If true, a contact will be automatically created for each unique phone number that
|
48
|
+
# a message is sent to or received from. If false, contacts will not automatically be
|
49
|
+
# created (unless contact information is modified by an automated service). The
|
50
|
+
# Conversations tab in the web app will only show messages that are associated with a
|
51
|
+
# contact.
|
52
|
+
# * Default: 1
|
53
|
+
#
|
54
|
+
# - vars
|
55
|
+
# * Custom variables and values to set for this project
|
56
|
+
#
|
57
|
+
# Returns:
|
58
|
+
# Telerivet::Project
|
59
|
+
#
|
60
|
+
def create_project(options)
|
61
|
+
require_relative 'project'
|
62
|
+
Project.new(@api, @api.do_request("POST", get_base_api_path() + "/projects", options))
|
63
|
+
end
|
64
|
+
|
23
65
|
#
|
24
66
|
# Saves any fields that have changed for this organization.
|
25
67
|
#
|
data/lib/telerivet/phone.rb
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
module Telerivet
|
3
3
|
|
4
4
|
#
|
5
|
-
# Represents a phone or gateway that you use to send/receive messages via
|
5
|
+
# Represents a basic route (i.e. a phone or gateway) that you use to send/receive messages via
|
6
|
+
# Telerivet.
|
6
7
|
#
|
7
8
|
# Basic Routes were formerly referred to as "Phones" within Telerivet. API
|
8
9
|
# methods, parameters, and properties related to Basic Routes continue to use the term "Phone"
|
@@ -73,15 +74,16 @@ module Telerivet
|
|
73
74
|
#
|
74
75
|
# - android_sdk (int)
|
75
76
|
# * Android SDK level, indicating the approximate version of the Android OS installed on
|
76
|
-
# this phone; see
|
77
|
-
#
|
77
|
+
# this phone; see [list of Android SDK
|
78
|
+
# levels](http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)
|
78
79
|
# (only present for Android phones)
|
79
80
|
# * Read-only
|
80
81
|
#
|
81
82
|
# - mccmnc
|
82
83
|
# * Code indicating the Android phone's current country (MCC) and mobile network
|
83
|
-
# operator (MNC); see
|
84
|
-
#
|
84
|
+
# operator (MNC); see [Mobile country code Wikipedia
|
85
|
+
# article](https://en.wikipedia.org/wiki/Mobile_country_code) (only present for Android
|
86
|
+
# phones). Note this is a string containing numeric digits, not an integer.
|
85
87
|
# * Read-only
|
86
88
|
#
|
87
89
|
# - manufacturer
|
@@ -100,7 +102,7 @@ module Telerivet
|
|
100
102
|
#
|
101
103
|
class Phone < Entity
|
102
104
|
#
|
103
|
-
# Queries messages sent or received by this
|
105
|
+
# Queries messages sent or received by this basic route.
|
104
106
|
#
|
105
107
|
# Arguments:
|
106
108
|
# - options (Hash)
|
@@ -111,7 +113,7 @@ class Phone < Entity
|
|
111
113
|
#
|
112
114
|
# - message_type
|
113
115
|
# * Filter messages by message_type
|
114
|
-
# * Allowed values: sms, mms, ussd, call, service
|
116
|
+
# * Allowed values: sms, mms, ussd, ussd_session, call, chat, service
|
115
117
|
#
|
116
118
|
# - source
|
117
119
|
# * Filter messages by source
|
@@ -182,7 +184,7 @@ class Phone < Entity
|
|
182
184
|
end
|
183
185
|
|
184
186
|
#
|
185
|
-
# Saves any fields or custom variables that have changed for this
|
187
|
+
# Saves any fields or custom variables that have changed for this basic route.
|
186
188
|
#
|
187
189
|
def save()
|
188
190
|
super
|