telerivet 1.6.1 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -19,13 +19,27 @@ module Telerivet
19
19
  # * Updatable via API
20
20
  #
21
21
  # - timezone_id
22
- # * Default TZ database timezone ID; see
23
- # <http://en.wikipedia.org/wiki/List_of_tz_database_time_zones>
24
- # * Read-only
22
+ # * Default TZ database timezone ID; see [List of tz database time zones Wikipedia
23
+ # article](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
24
+ # * Updatable via API
25
25
  #
26
26
  # - url_slug
27
27
  # * Unique string used as a component of the project's URL in the Telerivet web app
28
- # * Read-only
28
+ # * Updatable via API
29
+ #
30
+ # - default_route_id
31
+ # * The ID of a basic route or custom route that will be used to send messages by
32
+ # default (via both the API and web app), unless a particular route ID is specified when
33
+ # sending the message.
34
+ # * Updatable via API
35
+ #
36
+ # - auto_create_contacts (bool)
37
+ # * If true, a contact will be automatically created for each unique phone number that a
38
+ # message is sent to or received from. If false, contacts will not automatically be
39
+ # created (unless contact information is modified by an automated service). The
40
+ # Conversations tab in the web app will only show messages that are associated with a
41
+ # contact.
42
+ # * Updatable via API
29
43
  #
30
44
  # - vars (Hash)
31
45
  # * Custom variables stored for this project
@@ -37,7 +51,7 @@ module Telerivet
37
51
  #
38
52
  class Project < Entity
39
53
  #
40
- # Sends one message (SMS, MMS, voice call, or USSD request).
54
+ # Sends one message (SMS, MMS, chat app message, voice call, or USSD request).
41
55
  #
42
56
  # Arguments:
43
57
  # - options (Hash)
@@ -46,7 +60,7 @@ class Project < Entity
46
60
  # - message_type
47
61
  # * Type of message to send. If `text`, will use the default text message type for the
48
62
  # selected route.
49
- # * Allowed values: sms, mms, ussd, call, text
63
+ # * Allowed values: text, sms, mms, ussd, call, chat, service
50
64
  # * Default: text
51
65
  #
52
66
  # - content
@@ -72,9 +86,9 @@ class Project < Entity
72
86
  # - status_secret
73
87
  # * POST parameter 'secret' passed to status_url
74
88
  #
75
- # - is_template (bool)
89
+ # - replace_variables (bool)
76
90
  # * Set to true to evaluate variables like [[contact.name]] in message content. [(See
77
- # available variables)](#variables)
91
+ # available variables)](#variables) (`is_template` parameter also accepted)
78
92
  # * Default: false
79
93
  #
80
94
  # - track_clicks (boolean)
@@ -174,7 +188,7 @@ class Project < Entity
174
188
  # - message_type
175
189
  # * Type of message to send. If `text`, will use the default text message type for the
176
190
  # selected route.
177
- # * Allowed values: sms, mms, call, service, text
191
+ # * Allowed values: text, sms, mms, call, chat, service
178
192
  # * Default: text
179
193
  #
180
194
  # - content
@@ -212,9 +226,9 @@ class Project < Entity
212
226
  # * Optionally excludes one contact from receiving the message (only when group_id is
213
227
  # set)
214
228
  #
215
- # - is_template (bool)
229
+ # - replace_variables (bool)
216
230
  # * Set to true to evaluate variables like [[contact.name]] in message content [(See
217
- # available variables)](#variables)
231
+ # available variables)](#variables) (`is_template` parameter also accepted)
218
232
  # * Default: false
219
233
  #
220
234
  # - track_clicks (boolean)
@@ -302,7 +316,7 @@ class Project < Entity
302
316
  # - message_type
303
317
  # * Type of message to send. If `text`, will use the default text message type for the
304
318
  # selected route.
305
- # * Allowed values: sms, mms, chat, text
319
+ # * Allowed values: text, sms, mms, call, chat, service
306
320
  # * Default: text
307
321
  #
308
322
  # - route_id
@@ -330,9 +344,9 @@ class Project < Entity
330
344
  # - label_ids (array)
331
345
  # * Array of IDs of labels to add to each message (maximum 5)
332
346
  #
333
- # - is_template (bool)
347
+ # - replace_variables (bool)
334
348
  # * Set to true to evaluate variables like [[contact.name]] in message content [(See
335
- # available variables)](#variables)
349
+ # available variables)](#variables) (`is_template` parameter also accepted)
336
350
  # * Default: false
337
351
  #
338
352
  # - track_clicks (boolean)
@@ -441,6 +455,9 @@ class Project < Entity
441
455
  # messages approximately once every 15 seconds, so it is not possible to control the exact
442
456
  # second at which a scheduled message is sent.
443
457
  #
458
+ # Only one of the parameters group_id, to_number, and contact_id
459
+ # should be provided.
460
+ #
444
461
  # With `message_type`=`service`, schedules an automated service (such
445
462
  # as a poll) to be invoked for a group or list of phone numbers. Any service that can be
446
463
  # triggered for a contact can be scheduled via this method, whether or not the service
@@ -452,20 +469,21 @@ class Project < Entity
452
469
  #
453
470
  # - message_type
454
471
  # * Type of message to send
455
- # * Allowed values: sms, ussd, call, service
456
- # * Default: sms
472
+ # * Allowed values: text, sms, mms, ussd, call, chat, service
473
+ # * Default: text
457
474
  #
458
475
  # - content
459
476
  # * Content of the message to schedule
460
- # * Required if sending SMS message
477
+ # * Required if sending text message
461
478
  #
462
479
  # - group_id
463
480
  # * ID of the group to send the message to
464
- # * Required if to_number not set
465
481
  #
466
482
  # - to_number (string)
467
483
  # * Phone number to send the message to
468
- # * Required if group_id not set
484
+ #
485
+ # - contact_id (string)
486
+ # * ID of the contact to send the message to
469
487
  #
470
488
  # - start_time (UNIX timestamp)
471
489
  # * The time that the message will be sent (or first sent for recurring messages)
@@ -530,8 +548,9 @@ class Project < Entity
530
548
  # destination URL.
531
549
  # If null, the short links will not expire.
532
550
  #
533
- # - is_template (bool)
551
+ # - replace_variables (bool)
534
552
  # * Set to true to evaluate variables like [[contact.name]] in message content
553
+ # (`is_template` parameter also accepted)
535
554
  # * Default: false
536
555
  #
537
556
  # - media_urls (array)
@@ -551,8 +570,8 @@ class Project < Entity
551
570
  # itself.
552
571
  #
553
572
  # - timezone_id
554
- # * TZ database timezone ID; see
555
- # <http://en.wikipedia.org/wiki/List_of_tz_database_time_zones>
573
+ # * TZ database timezone ID; see [List of tz database time zones Wikipedia
574
+ # article](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
556
575
  # * Default: project default timezone
557
576
  #
558
577
  # - end_time (UNIX timestamp)
@@ -574,6 +593,166 @@ class Project < Entity
574
593
  ScheduledMessage.new(@api, @api.do_request("POST", get_base_api_path() + "/scheduled", options))
575
594
  end
576
595
 
596
+ #
597
+ # Creates a relative scheduled message. This allows scheduling messages on a different date
598
+ # for each contact, for example on their birthday, a certain number of days before an
599
+ # appointment, or a certain number of days after enrolling in a campaign.
600
+ #
601
+ # Telerivet will automatically create a
602
+ # [ScheduledMessage](#ScheduledMessage) for each contact matching a RelativeScheduledMessage.
603
+ #
604
+ # Relative scheduled messages can be created for a group or an
605
+ # individual contact, although dynamic groups are not supported. Only one of the parameters
606
+ # group_id, to_number, and contact_id should be provided.
607
+ #
608
+ # With message_type=service, schedules an automated service (such as a
609
+ # poll). Any service that can be triggered for a contact can be scheduled via this method,
610
+ # whether or not the service actually sends a message.
611
+ #
612
+ # Arguments:
613
+ # - options (Hash)
614
+ # * Required
615
+ #
616
+ # - message_type
617
+ # * Type of message to send
618
+ # * Allowed values: text, sms, mms, call, chat, service
619
+ # * Default: text
620
+ #
621
+ # - content
622
+ # * Content of the message to schedule
623
+ # * Required if sending text message
624
+ #
625
+ # - group_id
626
+ # * ID of the group to send the message to. Dynamic groups are not supported.
627
+ #
628
+ # - to_number (string)
629
+ # * Phone number to send the message to
630
+ #
631
+ # - contact_id (string)
632
+ # * ID of the contact to send the message to
633
+ #
634
+ # - time_of_day
635
+ # * Time of day when scheduled messages will be sent in HH:MM format (with hours from
636
+ # 00 to 23)
637
+ # * Required
638
+ #
639
+ # - timezone_id
640
+ # * TZ database timezone ID; see [List of tz database time zones Wikipedia
641
+ # article](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
642
+ # * Default: project default timezone
643
+ #
644
+ # - date_variable
645
+ # * Custom contact variable storing date or date/time values relative to which
646
+ # messages will be scheduled.
647
+ # * Required
648
+ #
649
+ # - offset_scale
650
+ # * The type of interval (day/week/month/year) that will be used to adjust the
651
+ # scheduled date relative to the date stored in the contact's date_variable, when
652
+ # offset_count is non-zero (D=day, W=week, M=month, Y=year)
653
+ # * Allowed values: D, W, M, Y
654
+ # * Default: D
655
+ #
656
+ # - offset_count (int)
657
+ # * The number of days/weeks/months/years to adjust the date of the scheduled message
658
+ # relative relative to the date stored in the custom contact variable identified by
659
+ # the date_variable parameter. May be positive, negative, or zero.
660
+ # * Default: 0
661
+ #
662
+ # - rrule
663
+ # * A recurrence rule describing the how the schedule repeats, e.g. 'FREQ=MONTHLY' or
664
+ # 'FREQ=WEEKLY;INTERVAL=2'; see <https://tools.ietf.org/html/rfc2445#section-4.3.10>.
665
+ # (UNTIL is ignored; use end_time parameter instead).
666
+ # * Default: COUNT=1 (one-time scheduled message, does not repeat)
667
+ #
668
+ # - route_id
669
+ # * ID of the phone or route to send the message from
670
+ # * Default: default sender route ID
671
+ #
672
+ # - service_id
673
+ # * Service to invoke for each recipient (when `message_type` is `call` or `service`)
674
+ # * Required if message_type is service
675
+ #
676
+ # - audio_url
677
+ # * The URL of an MP3 file to play when the contact answers the call (when
678
+ # `message_type` is `call`).
679
+ #
680
+ # If `audio_url` is provided, the text-to-speech voice is not used to say
681
+ # `content`, although you can optionally use `content` to indicate the script for the
682
+ # audio.
683
+ #
684
+ # For best results, use an MP3 file containing only speech. Music is not
685
+ # recommended because the audio quality will be low when played over a phone line.
686
+ #
687
+ # - tts_lang
688
+ # * The language of the text-to-speech voice (when `message_type` is `call`)
689
+ # * Allowed values: en-US, en-GB, en-GB-WLS, en-AU, en-IN, da-DK, nl-NL, fr-FR, fr-CA,
690
+ # de-DE, is-IS, it-IT, pl-PL, pt-BR, pt-PT, ru-RU, es-ES, es-US, sv-SE
691
+ # * Default: en-US
692
+ #
693
+ # - tts_voice
694
+ # * The name of the text-to-speech voice (when message_type=call)
695
+ # * Allowed values: female, male
696
+ # * Default: female
697
+ #
698
+ # - track_clicks (boolean)
699
+ # * If true, URLs in the message content will automatically be replaced with unique
700
+ # short URLs.
701
+ # * Default: false
702
+ #
703
+ # - short_link_params (Hash)
704
+ # *
705
+ # If `track_clicks` is true, `short_link_params` may be used to specify
706
+ # custom parameters for each short link in the message. The following parameters are
707
+ # supported:
708
+ #
709
+ # `domain` (string): A custom short domain name to use for the short
710
+ # links. The domain name must already be registered for your project or organization.
711
+ #
712
+ # `expiration_sec` (integer): The number of seconds after the message is
713
+ # created (queued to send) when the short links will stop forwarding to the
714
+ # destination URL.
715
+ # If null, the short links will not expire.
716
+ #
717
+ # - replace_variables (bool)
718
+ # * Set to true to evaluate variables like [[contact.name]] in message content
719
+ # * Default: false
720
+ #
721
+ # - media_urls (array)
722
+ # * URLs of media files to attach to the text message. If `message_type` is `sms`,
723
+ # short links to each media URL will be appended to the end of the content (separated
724
+ # by a new line).
725
+ #
726
+ # - route_params (Hash)
727
+ # * Route-specific parameters to use when sending the message. The parameters object
728
+ # may have keys matching the `phone_type` field of a phone (basic route) that may be
729
+ # used to send the message. The corresponding value is an object with route-specific
730
+ # parameters to use when sending a message with that type of route.
731
+ #
732
+ # - label_ids (array)
733
+ # * Array of IDs of labels to add to the sent messages (maximum 5). Does not apply
734
+ # when `message_type`=`service`, since the labels are determined by the service
735
+ # itself.
736
+ #
737
+ # - end_time (UNIX timestamp)
738
+ # * Time after which a recurring message will stop (not applicable to non-recurring
739
+ # scheduled messages)
740
+ #
741
+ # - end_time_offset (int)
742
+ # * Number of seconds from now until the recurring message will stop
743
+ #
744
+ # - vars (Hash)
745
+ # * Custom variables to set for this relative scheduled message, which will be copied
746
+ # to each message sent from this scheduled message
747
+ #
748
+ # Returns:
749
+ # Telerivet::RelativeScheduledMessage
750
+ #
751
+ def create_relative_scheduled_message(options)
752
+ require_relative 'relativescheduledmessage'
753
+ RelativeScheduledMessage.new(@api, @api.do_request("POST", get_base_api_path() + "/relative_scheduled", options))
754
+ end
755
+
577
756
  #
578
757
  # Add an incoming message to Telerivet. Acts the same as if the message was received by a
579
758
  # phone. Also triggers any automated services that apply to the message.
@@ -848,7 +1027,7 @@ class Project < Entity
848
1027
  end
849
1028
 
850
1029
  #
851
- # Queries phones within the given project.
1030
+ # Queries basic routes within the given project.
852
1031
  #
853
1032
  # Arguments:
854
1033
  # - options (Hash)
@@ -896,7 +1075,7 @@ class Project < Entity
896
1075
  end
897
1076
 
898
1077
  #
899
- # Retrieves the phone with the given ID.
1078
+ # Retrieves the basic route with the given ID.
900
1079
  #
901
1080
  # Arguments:
902
1081
  # - id
@@ -912,7 +1091,7 @@ class Project < Entity
912
1091
  end
913
1092
 
914
1093
  #
915
- # Initializes the phone with the given ID without making an API request.
1094
+ # Initializes the basic route with the given ID without making an API request.
916
1095
  #
917
1096
  # Arguments:
918
1097
  # - id
@@ -942,7 +1121,7 @@ class Project < Entity
942
1121
  #
943
1122
  # - message_type
944
1123
  # * Filter messages by message_type
945
- # * Allowed values: sms, mms, ussd, call, service
1124
+ # * Allowed values: sms, mms, ussd, ussd_session, call, chat, service
946
1125
  #
947
1126
  # - source
948
1127
  # * Filter messages by source
@@ -1152,50 +1331,44 @@ class Project < Entity
1152
1331
  #
1153
1332
  # Tasks for contacts:
1154
1333
  #
1155
- # - `update_contact_var`
1156
- # - `add_group_members`
1157
- # - `remove_group_members`
1158
- # - `set_conversation_status`
1159
- # - `set_send_blocked`
1160
- # - `apply_service_to_contacts`
1161
- # - `delete_contacts`
1162
- # - `export_contacts`
1334
+ # - update_contact_var
1335
+ # - add_group_members
1336
+ # - remove_group_members
1337
+ # - set_conversation_status
1338
+ # - set_send_blocked
1339
+ # - apply_service_to_contacts
1340
+ # - delete_contacts
1341
+ # - export_contacts
1163
1342
  #
1164
1343
  # Tasks for data rows:
1165
1344
  #
1166
- # - `update_row_var`
1167
- # - `apply_service_to_rows`
1168
- # - `delete_rows`
1169
- # - `export_rows`
1345
+ # - update_row_var
1346
+ # - apply_service_to_rows
1347
+ # - delete_rows
1348
+ # - export_rows
1170
1349
  #
1171
1350
  # Tasks for messages:
1172
1351
  #
1173
- # - `cancel_messages`
1174
- # - `resend_messages`
1175
- # - `retry_message_services`
1176
- # - `apply_service_to_messages`
1177
- # - `add_label`
1178
- # - `remove_label`
1179
- # - `update_message_var`
1180
- # - `delete_messages`
1181
- # - `export_messages`
1182
- # * Allowed values: update_contact_var, delete_contacts, add_group_members,
1183
- # remove_group_members, set_conversation_status, set_send_blocked,
1184
- # apply_service_to_contacts, update_row_var, delete_rows, apply_service_to_rows,
1185
- # delete_messages, cancel_messages, resend_messages, retry_message_services,
1186
- # apply_service_to_messages, add_label, remove_label, update_message_var,
1187
- # export_messages, export_contacts, export_rows
1352
+ # - cancel_messages
1353
+ # - resend_messages
1354
+ # - retry_message_services
1355
+ # - apply_service_to_messages
1356
+ # - add_label
1357
+ # - remove_label
1358
+ # - update_message_var
1359
+ # - delete_messages
1360
+ # - export_messages
1188
1361
  # * Required
1189
1362
  #
1190
1363
  # - task_params (Hash)
1191
1364
  # * Parameters applied to all matching rows (specific to `task_type`).
1192
1365
  #
1193
- # **`apply_service_to_contacts`**,
1194
- # **`apply_service_to_messages`**, **`apply_service_to_rows`**:
1366
+ # **apply_service_to_contacts**,
1367
+ # **apply_service_to_messages**, **apply_service_to_rows**:
1195
1368
  # <table>
1196
- # <tr><td> `service_id` </td> <td> The ID of the
1197
- # service to apply (string) </td></tr>
1198
- # <tr><td> `variables` </td> <td> Optional object
1369
+ # <tr><td> service_id </td> <td> The ID of the service
1370
+ # to apply (string) </td></tr>
1371
+ # <tr><td> variables </td> <td> Optional object
1199
1372
  # containing up to 25 temporary variable names and their corresponding values to set
1200
1373
  # when invoking the service. Values may be strings, numbers, or boolean (true/false).
1201
1374
  # String values may be up to 4096 bytes in length. Arrays and objects are not
@@ -1205,49 +1378,49 @@ class Project < Entity
1205
1378
  # JavaScript variable like $name (with a leading $ character). (object) </td></tr>
1206
1379
  # </table>
1207
1380
  # <br />
1208
- # **`update_contact_var`**, **`update_message_var`**,
1209
- # **`update_row_var`**:
1381
+ # **update_contact_var**, **update_message_var**,
1382
+ # **update_row_var**:
1210
1383
  # <table>
1211
- # <tr><td> `variable` </td> <td> The custom variable
1384
+ # <tr><td> variable </td> <td> The custom variable
1212
1385
  # name (string) </td></tr>
1213
- # <tr><td> `value` </td> <td> The value to set
1214
- # (string, boolean, float, null) </td></tr>
1386
+ # <tr><td> value </td> <td> The value to set (string,
1387
+ # boolean, float, null) </td></tr>
1215
1388
  # </table>
1216
1389
  # <br />
1217
- # **`add_group_members`**, **`remove_group_members`**:
1390
+ # **add_group_members**, **remove_group_members**:
1218
1391
  # <table>
1219
- # <tr><td> `group_id` </td> <td> The ID of the group
1392
+ # <tr><td> group_id </td> <td> The ID of the group
1220
1393
  # (string) </td></tr>
1221
1394
  # </table>
1222
1395
  # <br />
1223
- # **`add_label`**, **`remove_label`**:
1396
+ # **add_label**, **remove_label**:
1224
1397
  # <table>
1225
- # <tr><td> `label_id` </td> <td> The ID of the label
1398
+ # <tr><td> label_id </td> <td> The ID of the label
1226
1399
  # (string) </td></tr>
1227
1400
  # </table>
1228
1401
  # <br />
1229
- # **`resend_messages`**:
1402
+ # **resend_messages**:
1230
1403
  # <table>
1231
- # <tr><td> `route_id` </td> <td> ID of the new route
1232
- # to use, or null to use the original route (string) </td></tr>
1404
+ # <tr><td> route_id </td> <td> ID of the new route to
1405
+ # use, or null to use the original route (string) </td></tr>
1233
1406
  # </table>
1234
1407
  # <br />
1235
- # **`set_send_blocked`**:
1408
+ # **set_send_blocked**:
1236
1409
  # <table>
1237
- # <tr><td> `send_blocked` </td> <td> `true` to block
1238
- # sending messages, `false` to unblock sending messages (boolean) </td></tr>
1410
+ # <tr><td> send_blocked </td> <td> true to block
1411
+ # sending messages, false to unblock sending messages (boolean) </td></tr>
1239
1412
  # </table>
1240
1413
  # <br />
1241
- # **`set_conversation_status`**:
1414
+ # **set_conversation_status**:
1242
1415
  # <table>
1243
- # <tr><td> `conversation_status` </td> <td> "active",
1416
+ # <tr><td> conversation_status </td> <td> "active",
1244
1417
  # "handled", or "closed" (string) </td></tr>
1245
1418
  # </table>
1246
1419
  # <br />
1247
- # **`export_contacts`**, **`export_messages`**,
1248
- # **`export_rows`**:
1420
+ # **export_contacts**, **export_messages**,
1421
+ # **export_rows**:
1249
1422
  # <table>
1250
- # <tr><td>`storage_id` </td> <td> ID of a storage
1423
+ # <tr><td>storage_id </td> <td> ID of a storage
1251
1424
  # provider where the CSV file will be saved. (string)
1252
1425
  #
1253
1426
  # Currently only AWS S3 is supported as a storage
@@ -1261,15 +1434,15 @@ class Project < Entity
1261
1434
  # Direct downloads are not supported when
1262
1435
  # exporting data via the API.
1263
1436
  # (string) </td></tr>
1264
- # <tr><td>`filename` </td> <td> Path within the
1265
- # storage backend where the CSV file will be saved </td></tr>
1266
- # <tr><td>`column_ids` </td> <td> IDs of columns to
1267
- # save in the CSV file. If not provided, all default columns will be saved. (array of
1437
+ # <tr><td>filename </td> <td> Path within the storage
1438
+ # backend where the CSV file will be saved </td></tr>
1439
+ # <tr><td>column_ids </td> <td> IDs of columns to save
1440
+ # in the CSV file. If not provided, all default columns will be saved. (array of
1268
1441
  # strings, optional) </td></tr>
1269
1442
  # </table>
1270
1443
  # <br />
1271
- # **`delete_contacts`**, **`delete_messages`**,
1272
- # **`delete_rows`**, **`cancel_messages`**, **`retry_message_services`**: <br />
1444
+ # **delete_contacts**, **delete_messages**,
1445
+ # **delete_rows**, **cancel_messages**, **retry_message_services**: <br />
1273
1446
  # No parameters.
1274
1447
  #
1275
1448
  # - filter_type
@@ -1678,7 +1851,7 @@ class Project < Entity
1678
1851
  #
1679
1852
  # - message_type
1680
1853
  # * Filter scheduled messages by message_type
1681
- # * Allowed values: sms, mms, ussd, call, service
1854
+ # * Allowed values: sms, mms, ussd, ussd_session, call, chat, service
1682
1855
  #
1683
1856
  # - time_created (UNIX timestamp)
1684
1857
  # * Filter scheduled messages by time_created
@@ -1688,6 +1861,9 @@ class Project < Entity
1688
1861
  # * Filter scheduled messages by next_time
1689
1862
  # * Allowed modifiers: next_time[min], next_time[max], next_time[exists]
1690
1863
  #
1864
+ # - relative_scheduled_id
1865
+ # * Filter scheduled messages created for a relative scheduled message
1866
+ #
1691
1867
  # - sort
1692
1868
  # * Sort the results based on a field
1693
1869
  # * Allowed values: default, next_time
@@ -1714,6 +1890,52 @@ class Project < Entity
1714
1890
  @api.cursor(ScheduledMessage, get_base_api_path() + "/scheduled", options)
1715
1891
  end
1716
1892
 
1893
+ #
1894
+ # Queries relative scheduled messages within the given project.
1895
+ #
1896
+ # Arguments:
1897
+ # - options (Hash)
1898
+ #
1899
+ # - message_type
1900
+ # * Filter relative scheduled messages by message_type
1901
+ # * Allowed values: sms, mms, ussd, ussd_session, call, chat, service
1902
+ #
1903
+ # - time_created (UNIX timestamp)
1904
+ # * Filter relative scheduled messages by time_created
1905
+ # * Allowed modifiers: time_created[min], time_created[max]
1906
+ #
1907
+ # - group_id
1908
+ # * Filter relative scheduled messages sent to a group
1909
+ #
1910
+ # - contact_id
1911
+ # * Filter relative scheduled messages sent to an individual contact
1912
+ #
1913
+ # - sort
1914
+ # * Sort the results based on a field
1915
+ # * Allowed values: default
1916
+ # * Default: default
1917
+ #
1918
+ # - sort_dir
1919
+ # * Sort the results in ascending or descending order
1920
+ # * Allowed values: asc, desc
1921
+ # * Default: asc
1922
+ #
1923
+ # - page_size (int)
1924
+ # * Number of results returned per page (max 500)
1925
+ # * Default: 50
1926
+ #
1927
+ # - offset (int)
1928
+ # * Number of items to skip from beginning of result set
1929
+ # * Default: 0
1930
+ #
1931
+ # Returns:
1932
+ # Telerivet::APICursor (of Telerivet::RelativeScheduledMessage)
1933
+ #
1934
+ def query_relative_scheduled_messages(options = nil)
1935
+ require_relative 'relativescheduledmessage'
1936
+ @api.cursor(RelativeScheduledMessage, get_base_api_path() + "/relative_scheduled", options)
1937
+ end
1938
+
1717
1939
  #
1718
1940
  # Retrieves the scheduled message with the given ID.
1719
1941
  #
@@ -1746,6 +1968,179 @@ class Project < Entity
1746
1968
  return ScheduledMessage.new(@api, {'project_id' => self.id, 'id' => id}, false)
1747
1969
  end
1748
1970
 
1971
+ #
1972
+ # Retrieves the scheduled message with the given ID.
1973
+ #
1974
+ # Arguments:
1975
+ # - id
1976
+ # * ID of the relative scheduled message
1977
+ # * Required
1978
+ #
1979
+ # Returns:
1980
+ # Telerivet::RelativeScheduledMessage
1981
+ #
1982
+ def get_relative_scheduled_message_by_id(id)
1983
+ require_relative 'relativescheduledmessage'
1984
+ RelativeScheduledMessage.new(@api, @api.do_request("GET", get_base_api_path() + "/relative_scheduled/#{id}"))
1985
+ end
1986
+
1987
+ #
1988
+ # Initializes the relative scheduled message with the given ID without making an API request.
1989
+ #
1990
+ # Arguments:
1991
+ # - id
1992
+ # * ID of the relative scheduled message
1993
+ # * Required
1994
+ #
1995
+ # Returns:
1996
+ # Telerivet::RelativeScheduledMessage
1997
+ #
1998
+ def init_relative_scheduled_message_by_id(id)
1999
+ require_relative 'relativescheduledmessage'
2000
+ return RelativeScheduledMessage.new(@api, {'project_id' => self.id, 'id' => id}, false)
2001
+ end
2002
+
2003
+ #
2004
+ # Creates a new automated service.
2005
+ #
2006
+ # Only certain types of automated services can be created via the API.
2007
+ # Other types of services can only be created via the web app.
2008
+ #
2009
+ # Although Custom Actions services cannot be created directly via the
2010
+ # API, they may be converted to a template,
2011
+ # and then instances of the template can be created via this method
2012
+ # with `service_type`=`custom_template_instance`. Converting a service
2013
+ # to a template requires the Service Templates feature to be enabled
2014
+ # for the organization.
2015
+ #
2016
+ # Arguments:
2017
+ # - options (Hash)
2018
+ # * Required
2019
+ #
2020
+ # - name (string)
2021
+ # * Name of the service to create, which must be unique in the project. If a name is
2022
+ # not provided, a unique default name will be generated.
2023
+ #
2024
+ # - service_type (string)
2025
+ # * Type of service to create. The following service types can be created via the
2026
+ # API:
2027
+ #
2028
+ # - incoming_message_webhook
2029
+ # - incoming_message_script
2030
+ # - contact_script
2031
+ # - message_script
2032
+ # - data_row_script
2033
+ # - webhook_script
2034
+ # - voice_script
2035
+ # - ussd_script
2036
+ # - project_script
2037
+ # - custom_template_instance
2038
+ #
2039
+ # Other types of services can only be created via the web app.
2040
+ # * Required
2041
+ #
2042
+ # - config (Hash)
2043
+ # * Configuration specific to the service `type`.
2044
+ #
2045
+ # **incoming_message_webhook**:
2046
+ # <table>
2047
+ # <tr><td> url </td> <td> The webhook URL that will be
2048
+ # triggered when an incoming message is received (string) </td></tr>
2049
+ # <tr><td> secret </td> <td> Optional string that will
2050
+ # be passed as the `secret` POST parameter to the webhook URL. (object) </td></tr>
2051
+ # </table>
2052
+ # <br />
2053
+ #
2054
+ # **incoming_message_script, contact_script,
2055
+ # message_script, data_row_script, webhook_script, voice_script, ussd_script,
2056
+ # project_script**:
2057
+ # <table>
2058
+ # <tr><td> code </td> <td> The JavaScript code to run
2059
+ # when the service is triggered (max 100 KB). To run code longer than 100 KB, use a
2060
+ # Cloud Script Module. (string) </td></tr>
2061
+ # </table>
2062
+ # <br />
2063
+ #
2064
+ # **custom_template_instance**:
2065
+ # <table>
2066
+ # <tr><td> template_service_id </td> <td> ID of the
2067
+ # service template (string). The service template must be available to the current
2068
+ # project or organization.</td></tr>
2069
+ # <tr><td> params </td> <td> Key/value pairs for all
2070
+ # service template parameters (object). If the values satisfy the validation rules
2071
+ # specified in the service template, they will also be copied to the `vars` property
2072
+ # of the service. Any values not associated with service template parameters will be
2073
+ # ignored.
2074
+ # </td></tr>
2075
+ # </table>
2076
+ # <br />
2077
+ # * Required
2078
+ #
2079
+ # - vars
2080
+ # * Custom variables and values to set for this service
2081
+ #
2082
+ # - active (bool)
2083
+ # * Whether the service is initially active or inactive. Inactive services are not
2084
+ # automatically triggered and cannot be invoked via the API.
2085
+ # * Default: 1
2086
+ #
2087
+ # - response_table_id
2088
+ # * ID of a data table where responses will be stored, or null to disable
2089
+ # automatically storing responses. If the response_table_id parameter is not provided,
2090
+ # a data table may automatically be created with the same name as the service if the
2091
+ # service collects responses.
2092
+ #
2093
+ # - phone_ids (array)
2094
+ # * IDs of phones (basic routes) to associate with this service, or null to associate
2095
+ # this service with all routes. Only applies for service types that handle incoming
2096
+ # messages, voice calls, or USSD sessions.
2097
+ #
2098
+ # - message_types (array)
2099
+ # * Types of messages that this service should handle. Only applies to services that
2100
+ # handle incoming messages.
2101
+ # * Allowed values: text, call, sms, mms, ussd_session, chat
2102
+ #
2103
+ # - show_action (bool)
2104
+ # * Whether to show this service in the Actions menu within the Telerivet web app when
2105
+ # the service is active. Only applies for service types that are manually triggered.
2106
+ # * Default: 1
2107
+ #
2108
+ # - contact_number_filter
2109
+ # * If contact_number_filter is `long_number`, this service will only be triggered if
2110
+ # the contact phone number has at least 7 digits (ignoring messages from shortcodes
2111
+ # and alphanumeric senders). If contact_number_filter is `all`, the service will be
2112
+ # triggered for all contact phone numbers. Only applies to services that handle
2113
+ # incoming messages.
2114
+ # * Allowed values: long_number, all
2115
+ # * Default: long_number
2116
+ #
2117
+ # - direction
2118
+ # * Determines whether the service handles incoming voice calls, outgoing voice calls,
2119
+ # or both. Only applies to services that handle voice calls.
2120
+ # * Allowed values: incoming, outgoing, both
2121
+ # * Default: both
2122
+ #
2123
+ # - priority (int)
2124
+ # * A number that determines the order that services are triggered when an event
2125
+ # occurs (e.g. when an incoming message is received). Smaller numbers are triggered
2126
+ # first. The priority is ignored for services that are triggered directly.
2127
+ #
2128
+ # - apply_mode
2129
+ # * If apply_mode is `unhandled`, the service will not be triggered if another service
2130
+ # has already handled the incoming message. If apply_mode is `always`, the service
2131
+ # will always be triggered regardless of other services. Only applies to services that
2132
+ # handle incoming messages.
2133
+ # * Allowed values: always, unhandled
2134
+ # * Default: unhandled
2135
+ #
2136
+ # Returns:
2137
+ # Telerivet::Service
2138
+ #
2139
+ def create_service(options)
2140
+ require_relative 'service'
2141
+ Service.new(@api, @api.do_request("POST", get_base_api_path() + "/services", options))
2142
+ end
2143
+
1749
2144
  #
1750
2145
  # Queries services within the given project.
1751
2146
  #
@@ -1822,6 +2217,114 @@ class Project < Entity
1822
2217
  return Service.new(@api, {'project_id' => self.id, 'id' => id}, false)
1823
2218
  end
1824
2219
 
2220
+ #
2221
+ # Queries service log entries associated with this project.
2222
+ #
2223
+ # Note: Service logs are automatically deleted and no longer available
2224
+ # via the API after approximately one month.
2225
+ #
2226
+ # Arguments:
2227
+ # - options (Hash)
2228
+ #
2229
+ # - service_id
2230
+ # * Filter logs generated by a particular service
2231
+ #
2232
+ # - message_id
2233
+ # * Filter service logs related to a particular message
2234
+ #
2235
+ # - contact_id
2236
+ # * Filter service logs related to a particular contact. Ignored if using the
2237
+ # message_id parameter.
2238
+ #
2239
+ # - time_created (UNIX timestamp)
2240
+ # * Filter service logs by the time they were created
2241
+ # * Allowed modifiers: time_created[min], time_created[max]
2242
+ #
2243
+ # - execution_stats (bool)
2244
+ # * Show detailed execution stats for each log entry, if available.
2245
+ #
2246
+ # - sort_dir
2247
+ # * Sort the results in ascending or descending order
2248
+ # * Allowed values: asc, desc
2249
+ # * Default: asc
2250
+ #
2251
+ # - page_size (int)
2252
+ # * Number of results returned per page (max 500)
2253
+ # * Default: 50
2254
+ #
2255
+ # - offset (int)
2256
+ # * Number of items to skip from beginning of result set
2257
+ # * Default: 0
2258
+ #
2259
+ # Returns:
2260
+ # Telerivet::APICursor (of Hash)
2261
+ #
2262
+ # Returned Item Properties:
2263
+ # - time_created (UNIX timestamp)
2264
+ # * The time when the log entry was created
2265
+ #
2266
+ # - content
2267
+ # * The text logged
2268
+ #
2269
+ # - elapsed_ms (int)
2270
+ # * Elapsed time in milliseconds, if available.
2271
+ #
2272
+ # - service_id
2273
+ # * ID of the service associated with this log entry. Not returned when querying log
2274
+ # entries for a particular service.
2275
+ #
2276
+ # - message_id
2277
+ # * ID of the message associated with this log entry. Not returned when querying log
2278
+ # entries for a particular message.
2279
+ #
2280
+ # - contact_id
2281
+ # * ID of the contact associated with this log entry. Not returned when querying log
2282
+ # entries for a particular message or contact.
2283
+ #
2284
+ # - api_request_count (int)
2285
+ # * The total number of API requests triggered via the Cloud Script API. (Only
2286
+ # provided if execution_stats=true.)
2287
+ #
2288
+ # - api_request_ms (int)
2289
+ # * The total execution time of all API requests triggered via the Cloud Script API.
2290
+ # (Only provided if execution_stats=true.)
2291
+ #
2292
+ # - http_request_count (int)
2293
+ # * The total number of external HTTP requests triggered via the Cloud Script API.
2294
+ # (Only provided if execution_stats=true.)
2295
+ #
2296
+ # - http_request_ms (int)
2297
+ # * The total execution time of all external HTTP requests triggered via the Cloud
2298
+ # Script API. (Only provided if execution_stats=true.)
2299
+ #
2300
+ # - webhook_count (int)
2301
+ # * The total number of Webhook API requests triggered. (Only provided if
2302
+ # execution_stats=true.)
2303
+ #
2304
+ # - requests (array)
2305
+ # * Details about each API request, external HTTP request, and Cloud Script Module
2306
+ # loaded via the Cloud Script API. (Only provided if execution_stats=true.)
2307
+ #
2308
+ # Each item in the array has the following properties:
2309
+ #
2310
+ # - type (string): `api_request`, `http_request`, or
2311
+ # `module_load`
2312
+ # - resource (string): A string specific to the type of
2313
+ # request.
2314
+ # For module_load, this is the module path. For
2315
+ # api_request, it contains the HTTP
2316
+ # method, path, and query string. For http_request, it
2317
+ # contains the HTTP method and
2318
+ # URL.
2319
+ # - elapsed_ms (int): Number of milliseconds elapsed in
2320
+ # fetching
2321
+ # this resource
2322
+ # - status_code (int): Response status code, if available
2323
+ #
2324
+ def query_service_logs(options = nil)
2325
+ @api.cursor(nil, get_base_api_path() + "/service_logs", options)
2326
+ end
2327
+
1825
2328
  #
1826
2329
  # Queries custom routes that can be used to send messages (not including Phones).
1827
2330
  #
@@ -2011,8 +2514,8 @@ class Project < Entity
2011
2514
  #
2012
2515
  # - type (int)
2013
2516
  # * Field type
2014
- # * Allowed values: text, long_text, phone_number, email, url, audio, date, date_time,
2015
- # number, boolean, select
2517
+ # * Allowed values: text, long_text, secret, phone_number, email, url, audio, date,
2518
+ # date_time, number, boolean, checkbox, select, radio
2016
2519
  #
2017
2520
  # - order (int)
2018
2521
  # * Order in which to display the field
@@ -2069,8 +2572,8 @@ class Project < Entity
2069
2572
  #
2070
2573
  # - type (string)
2071
2574
  # * Field type
2072
- # * Allowed values: text, long_text, phone_number, email, url, audio, date, date_time,
2073
- # number, boolean, select
2575
+ # * Allowed values: text, long_text, secret, phone_number, email, url, audio, date,
2576
+ # date_time, number, boolean, checkbox, select, radio
2074
2577
  #
2075
2578
  # - order (int)
2076
2579
  # * Order in which to display the field
@@ -2194,10 +2697,34 @@ class Project < Entity
2194
2697
  get('timezone_id')
2195
2698
  end
2196
2699
 
2700
+ def timezone_id=(value)
2701
+ set('timezone_id', value)
2702
+ end
2703
+
2197
2704
  def url_slug
2198
2705
  get('url_slug')
2199
2706
  end
2200
2707
 
2708
+ def url_slug=(value)
2709
+ set('url_slug', value)
2710
+ end
2711
+
2712
+ def default_route_id
2713
+ get('default_route_id')
2714
+ end
2715
+
2716
+ def default_route_id=(value)
2717
+ set('default_route_id', value)
2718
+ end
2719
+
2720
+ def auto_create_contacts
2721
+ get('auto_create_contacts')
2722
+ end
2723
+
2724
+ def auto_create_contacts=(value)
2725
+ set('auto_create_contacts', value)
2726
+ end
2727
+
2201
2728
  def organization_id
2202
2729
  get('organization_id')
2203
2730
  end