rcs 2.0.0.pre.rc.2 → 2.0.0.pre.rc.3
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/rcs/brands/client.rb +6 -6
- data/lib/rcs/brands/types/{autofill_brand_schema_options.rb → autofill_brand_options.rb} +5 -5
- data/lib/rcs/campaigns/dlc/client.rb +12 -12
- data/lib/rcs/campaigns/dlc/types/{upsert_dlc_schema_keywords_help.rb → upsert_dlc_campaign_help_keywords.rb} +5 -5
- data/lib/rcs/campaigns/dlc/types/{upsert_dlc_schema_keywords.rb → upsert_dlc_campaign_keywords.rb} +20 -20
- data/lib/rcs/campaigns/dlc/types/{upsert_dlc_schema_links.rb → upsert_dlc_campaign_links.rb} +5 -5
- data/lib/rcs/campaigns/dlc/types/{upsert_dlc_schema_keywords_opt_in.rb → upsert_dlc_campaign_opt_in_keywords.rb} +5 -5
- data/lib/rcs/campaigns/dlc/types/{upsert_dlc_schema_keywords_opt_out.rb → upsert_dlc_campaign_opt_out_keywords.rb} +5 -5
- data/lib/rcs/campaigns/dlc/types/{upsert_dlc_schema_options.rb → upsert_dlc_campaign_options.rb} +5 -5
- data/lib/rcs/campaigns/dlc/types/{upsert_dlc_schema_use_case.rb → upsert_dlc_campaign_use_case.rb} +5 -5
- data/lib/rcs/campaigns/rcs/client.rb +25 -25
- data/lib/rcs/campaigns/rcs/types/{upsert_rcs_schema_agent_emails_item.rb → rcs_agent_email.rb} +5 -5
- data/lib/rcs/campaigns/rcs/types/{upsert_rcs_schema_agent_phones_item.rb → rcs_agent_phone.rb} +5 -5
- data/lib/rcs/campaigns/rcs/types/{upsert_rcs_schema_agent_websites_item.rb → rcs_agent_website.rb} +5 -5
- data/lib/rcs/campaigns/rcs/types/{upsert_rcs_schema_agent.rb → upsert_rcs_agent.rb} +17 -17
- data/lib/rcs/campaigns/rcs/types/{upsert_rcs_schema_links.rb → upsert_rcs_links.rb} +5 -5
- data/lib/rcs/campaigns/rcs/types/{upsert_rcs_schema_opt_in.rb → upsert_rcs_opt_in.rb} +13 -13
- data/lib/rcs/campaigns/rcs/types/{upsert_rcs_schema_opt_out.rb → upsert_rcs_opt_out.rb} +5 -5
- data/lib/rcs/campaigns/rcs/types/{upsert_rcs_schema_use_case.rb → upsert_rcs_use_case.rb} +5 -5
- data/lib/rcs/campaigns/toll_free/client.rb +4 -4
- data/lib/rcs/campaigns/toll_free/types/toll_free_autofill_response.rb +10 -10
- data/lib/rcs/campaigns/toll_free/types/upsert_toll_free_schema_opt_in.rb +8 -8
- data/lib/rcs/conversations/client.rb +2 -2
- data/lib/rcs/messages/client.rb +24 -10
- data/lib/rcs/messages/mms/client.rb +118 -0
- data/lib/rcs/messages/{send/types/send_mms_response.rb → mms/types/mms_send_response.rb} +4 -4
- data/lib/rcs/messages/{send/types/send_mms_schema_options.rb → mms/types/send_mms_options.rb} +6 -6
- data/lib/rcs/messages/rcs/client.rb +68 -0
- data/lib/rcs/messages/{send/types/send_rcs_response.rb → rcs/types/rcs_send_response.rb} +4 -4
- data/lib/rcs/messages/sms/client.rb +198 -0
- data/lib/rcs/messages/{send/types/send_sms_schema_options.rb → sms/types/send_sms_options.rb} +6 -6
- data/lib/rcs/messages/{send/types/send_sms_response.rb → sms/types/sms_send_response.rb} +4 -4
- data/lib/rcs/messages/types/{message_reaction_schema_options.rb → react_message_options.rb} +5 -5
- data/lib/rcs/phone_numbers/client.rb +18 -18
- data/lib/rcs/phone_numbers/types/{phone_details_schema_options_enhanced_contact_info.rb → enhanced_contact_info.rb} +5 -7
- data/lib/rcs/phone_numbers/types/{phone_details_schema_options.rb → retrieve_phone_number_details_options.rb} +10 -10
- data/lib/rcs/phone_numbers/types/{search_schema_number.rb → search_phone_number_by_digits.rb} +5 -5
- data/lib/rcs/phone_numbers/types/{search_schema_location.rb → search_phone_number_by_location.rb} +5 -5
- data/lib/rcs/phone_numbers/types/{search_schema_options.rb → search_phone_number_options.rb} +5 -5
- data/lib/rcs/phone_numbers/webhook/client.rb +2 -2
- data/lib/rcs/tools/file/client.rb +3 -3
- data/lib/rcs/tools/file/types/{file_upload_schema_options_download.rb → download_options.rb} +5 -5
- data/lib/rcs/tools/file/types/{file_upload_schema_options.rb → upload_file_options.rb} +10 -10
- data/lib/rcs/types/{attach_webhook_schema_webhook_id.rb → attach_webhook_by_id_params.rb} +5 -5
- data/lib/rcs/types/attach_webhook_params.rb +8 -8
- data/lib/rcs/types/{get_conversation_request_id.rb → conversation_by_id_params.rb} +5 -5
- data/lib/rcs/types/{get_conversation_request_recipient.rb → conversation_by_participants_params.rb} +5 -5
- data/lib/rcs/types/{attach_webhook_schema_name.rb → create_and_attach_webhook_by_url_params.rb} +5 -5
- data/lib/rcs/types/get_conversation_params.rb +8 -8
- data/lib/rcs/types/link_click_event.rb +8 -8
- data/lib/rcs/types/message.rb +8 -8
- data/lib/rcs/types/rcs.rb +12 -12
- data/lib/rcs/types/rcs_campaign_schema_extra_opt_in.rb +8 -8
- data/lib/rcs/types/rcs_campaign_schema_opt_in.rb +8 -8
- data/lib/rcs/types/rcs_cards.rb +4 -4
- data/lib/rcs/types/rcs_cards_cards_item.rb +4 -4
- data/lib/rcs/types/rcs_cards_content.rb +4 -4
- data/lib/rcs/types/rcs_cards_content_cards_item.rb +4 -4
- data/lib/rcs/types/rcs_media_content.rb +4 -4
- data/lib/rcs/types/rcs_text_content.rb +4 -4
- data/lib/rcs/types/{rcs_button_content.rb → rich_button.rb} +10 -10
- data/lib/rcs/types/{rcs_card.rb → rich_cards_message.rb} +9 -9
- data/lib/rcs/types/{rcs_media.rb → rich_media_message.rb} +9 -9
- data/lib/rcs/types/{rcs_text.rb → rich_text_message.rb} +9 -9
- data/lib/rcs/types/toll_free_campaign.rb +10 -10
- data/lib/rcs/types/toll_free_campaign_with_extended_brand_and_status.rb +10 -10
- data/lib/rcs/types/{nullable_contact.rb → upsert_contact.rb} +5 -5
- data/lib/rcs/types/{toll_free_campaign_schema_opt_in.rb → upsert_toll_free_campaign_opt_in.rb} +13 -13
- data/lib/rcs/types/{toll_free_campaign_schema_use_case.rb → upsert_toll_free_campaign_use_case.rb} +5 -5
- data/lib/rcs.rb +0 -7
- data/lib/requests.rb +2 -2
- data/lib/types_export.rb +40 -40
- metadata +43 -45
- data/lib/rcs/message/client.rb +0 -30
- data/lib/rcs/message/sms/client.rb +0 -96
- data/lib/rcs/messages/send/client.rb +0 -318
data/lib/rcs/messages/client.rb
CHANGED
@@ -2,23 +2,31 @@
|
|
2
2
|
|
3
3
|
require_relative "../../requests"
|
4
4
|
require_relative "../types/message"
|
5
|
-
require_relative "types/
|
5
|
+
require_relative "types/react_message_options"
|
6
6
|
require_relative "../types/reaction_result"
|
7
|
-
require_relative "
|
7
|
+
require_relative "sms/client"
|
8
|
+
require_relative "mms/client"
|
9
|
+
require_relative "rcs/client"
|
8
10
|
require "async"
|
9
11
|
|
10
12
|
module Pinnacle
|
11
13
|
class MessagesClient
|
12
14
|
# @return [Pinnacle::RequestClient]
|
13
15
|
attr_reader :request_client
|
14
|
-
# @return [Pinnacle::Messages::
|
15
|
-
attr_reader :
|
16
|
+
# @return [Pinnacle::Messages::SmsClient]
|
17
|
+
attr_reader :sms
|
18
|
+
# @return [Pinnacle::Messages::MmsClient]
|
19
|
+
attr_reader :mms
|
20
|
+
# @return [Pinnacle::Messages::RcsClient]
|
21
|
+
attr_reader :rcs
|
16
22
|
|
17
23
|
# @param request_client [Pinnacle::RequestClient]
|
18
24
|
# @return [Pinnacle::MessagesClient]
|
19
25
|
def initialize(request_client:)
|
20
26
|
@request_client = request_client
|
21
|
-
@
|
27
|
+
@sms = Pinnacle::Messages::SmsClient.new(request_client: request_client)
|
28
|
+
@mms = Pinnacle::Messages::MmsClient.new(request_client: request_client)
|
29
|
+
@rcs = Pinnacle::Messages::RcsClient.new(request_client: request_client)
|
22
30
|
end
|
23
31
|
|
24
32
|
# Retrieve a previously sent message.
|
@@ -56,7 +64,7 @@ module Pinnacle
|
|
56
64
|
# Add or remove an emoji reaction to a previously sent message.
|
57
65
|
#
|
58
66
|
# @param message_id [Integer] Unique identifier of the message.
|
59
|
-
# @param options [Hash] Request of type Pinnacle::Messages::Types::
|
67
|
+
# @param options [Hash] Request of type Pinnacle::Messages::Types::ReactMessageOptions, as a Hash
|
60
68
|
# * :force (Boolean)
|
61
69
|
# @param reaction [String] Unicode emoji to add. <br>
|
62
70
|
# Use `null` to remove existing reaction.
|
@@ -100,14 +108,20 @@ module Pinnacle
|
|
100
108
|
class AsyncMessagesClient
|
101
109
|
# @return [Pinnacle::AsyncRequestClient]
|
102
110
|
attr_reader :request_client
|
103
|
-
# @return [Pinnacle::Messages::
|
104
|
-
attr_reader :
|
111
|
+
# @return [Pinnacle::Messages::AsyncSmsClient]
|
112
|
+
attr_reader :sms
|
113
|
+
# @return [Pinnacle::Messages::AsyncMmsClient]
|
114
|
+
attr_reader :mms
|
115
|
+
# @return [Pinnacle::Messages::AsyncRcsClient]
|
116
|
+
attr_reader :rcs
|
105
117
|
|
106
118
|
# @param request_client [Pinnacle::AsyncRequestClient]
|
107
119
|
# @return [Pinnacle::AsyncMessagesClient]
|
108
120
|
def initialize(request_client:)
|
109
121
|
@request_client = request_client
|
110
|
-
@
|
122
|
+
@sms = Pinnacle::Messages::AsyncSmsClient.new(request_client: request_client)
|
123
|
+
@mms = Pinnacle::Messages::AsyncMmsClient.new(request_client: request_client)
|
124
|
+
@rcs = Pinnacle::Messages::AsyncRcsClient.new(request_client: request_client)
|
111
125
|
end
|
112
126
|
|
113
127
|
# Retrieve a previously sent message.
|
@@ -147,7 +161,7 @@ module Pinnacle
|
|
147
161
|
# Add or remove an emoji reaction to a previously sent message.
|
148
162
|
#
|
149
163
|
# @param message_id [Integer] Unique identifier of the message.
|
150
|
-
# @param options [Hash] Request of type Pinnacle::Messages::Types::
|
164
|
+
# @param options [Hash] Request of type Pinnacle::Messages::Types::ReactMessageOptions, as a Hash
|
151
165
|
# * :force (Boolean)
|
152
166
|
# @param reaction [String] Unicode emoji to add. <br>
|
153
167
|
# Use `null` to remove existing reaction.
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative "../../../requests"
|
4
|
+
require_relative "types/send_mms_options"
|
5
|
+
require_relative "types/mms_send_response"
|
4
6
|
require_relative "../../types/mms_content"
|
5
7
|
require_relative "../../types/mms_validation_result"
|
6
8
|
require "async"
|
@@ -17,6 +19,63 @@ module Pinnacle
|
|
17
19
|
@request_client = request_client
|
18
20
|
end
|
19
21
|
|
22
|
+
# Send a MMS immediately or schedule it for future delivery.
|
23
|
+
#
|
24
|
+
# @param from [String] Phone number you want to send the message from in E.164 format.
|
25
|
+
# @param media_urls [Array<String>] Media file URLs to send.<br>
|
26
|
+
# See [supported media
|
27
|
+
# types](https://app.pinnacle.sh/supported-file-types?type=MMS).
|
28
|
+
# @param options [Hash] Control how your MMS is processed and delivered.Request of type Pinnacle::Messages::Mms::Types::SendMmsOptions, as a Hash
|
29
|
+
# * :multiple_messages (Boolean)
|
30
|
+
# * :schedule (Hash)
|
31
|
+
# * :end_date (DateTime)
|
32
|
+
# * :recurrence (String)
|
33
|
+
# * :send_at (String)
|
34
|
+
# * :timezone (String)
|
35
|
+
# * :tracking (Pinnacle::Types::Tracking)
|
36
|
+
# * :validate (Boolean)
|
37
|
+
# @param text [String] Message text to accompany the media.
|
38
|
+
# @param to [String] Recipient's phone number in E.164 format.
|
39
|
+
# @param request_options [Pinnacle::RequestOptions]
|
40
|
+
# @return [Pinnacle::Types::SentMmsDetails, Pinnacle::Types::ScheduledMessaage]
|
41
|
+
# @example
|
42
|
+
# api = Pinnacle::Client.new(
|
43
|
+
# base_url: "https://api.example.com",
|
44
|
+
# environment: Pinnacle::Environment::DEFAULT,
|
45
|
+
# api_key: "YOUR_API_KEY"
|
46
|
+
# )
|
47
|
+
# api.messages.mms.send_(
|
48
|
+
# from: "+14155164736",
|
49
|
+
# media_urls: ["https://fastly.picsum.photos/id/941/300/300.jpg?hmac=mDxM9PWSqRDjecwSCEpzU4bj35gqnG7yA25OL29uNv0"],
|
50
|
+
# options: { multiple_messages: true, validate: true },
|
51
|
+
# text: "Check out this image!",
|
52
|
+
# to: "+14154746461"
|
53
|
+
# )
|
54
|
+
def send_(from:, media_urls:, text:, to:, options: nil, request_options: nil)
|
55
|
+
response = @request_client.conn.post do |req|
|
56
|
+
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
|
57
|
+
req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
|
58
|
+
req.headers = {
|
59
|
+
**(req.headers || {}),
|
60
|
+
**@request_client.get_headers,
|
61
|
+
**(request_options&.additional_headers || {})
|
62
|
+
}.compact
|
63
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
64
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
65
|
+
end
|
66
|
+
req.body = {
|
67
|
+
**(request_options&.additional_body_parameters || {}),
|
68
|
+
from: from,
|
69
|
+
mediaUrls: media_urls,
|
70
|
+
options: options,
|
71
|
+
text: text,
|
72
|
+
to: to
|
73
|
+
}.compact
|
74
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/messages/send/mms"
|
75
|
+
end
|
76
|
+
Pinnacle::Messages::Mms::Types::MmsSendResponse.from_json(json_object: response.body)
|
77
|
+
end
|
78
|
+
|
20
79
|
# Validate MMS message content without sending it.
|
21
80
|
#
|
22
81
|
# @param request [Hash] Request of type Pinnacle::Types::MmsContent, as a Hash
|
@@ -60,6 +119,65 @@ module Pinnacle
|
|
60
119
|
@request_client = request_client
|
61
120
|
end
|
62
121
|
|
122
|
+
# Send a MMS immediately or schedule it for future delivery.
|
123
|
+
#
|
124
|
+
# @param from [String] Phone number you want to send the message from in E.164 format.
|
125
|
+
# @param media_urls [Array<String>] Media file URLs to send.<br>
|
126
|
+
# See [supported media
|
127
|
+
# types](https://app.pinnacle.sh/supported-file-types?type=MMS).
|
128
|
+
# @param options [Hash] Control how your MMS is processed and delivered.Request of type Pinnacle::Messages::Mms::Types::SendMmsOptions, as a Hash
|
129
|
+
# * :multiple_messages (Boolean)
|
130
|
+
# * :schedule (Hash)
|
131
|
+
# * :end_date (DateTime)
|
132
|
+
# * :recurrence (String)
|
133
|
+
# * :send_at (String)
|
134
|
+
# * :timezone (String)
|
135
|
+
# * :tracking (Pinnacle::Types::Tracking)
|
136
|
+
# * :validate (Boolean)
|
137
|
+
# @param text [String] Message text to accompany the media.
|
138
|
+
# @param to [String] Recipient's phone number in E.164 format.
|
139
|
+
# @param request_options [Pinnacle::RequestOptions]
|
140
|
+
# @return [Pinnacle::Types::SentMmsDetails, Pinnacle::Types::ScheduledMessaage]
|
141
|
+
# @example
|
142
|
+
# api = Pinnacle::Client.new(
|
143
|
+
# base_url: "https://api.example.com",
|
144
|
+
# environment: Pinnacle::Environment::DEFAULT,
|
145
|
+
# api_key: "YOUR_API_KEY"
|
146
|
+
# )
|
147
|
+
# api.messages.mms.send_(
|
148
|
+
# from: "+14155164736",
|
149
|
+
# media_urls: ["https://fastly.picsum.photos/id/941/300/300.jpg?hmac=mDxM9PWSqRDjecwSCEpzU4bj35gqnG7yA25OL29uNv0"],
|
150
|
+
# options: { multiple_messages: true, validate: true },
|
151
|
+
# text: "Check out this image!",
|
152
|
+
# to: "+14154746461"
|
153
|
+
# )
|
154
|
+
def send_(from:, media_urls:, text:, to:, options: nil, request_options: nil)
|
155
|
+
Async do
|
156
|
+
response = @request_client.conn.post do |req|
|
157
|
+
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
|
158
|
+
req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
|
159
|
+
req.headers = {
|
160
|
+
**(req.headers || {}),
|
161
|
+
**@request_client.get_headers,
|
162
|
+
**(request_options&.additional_headers || {})
|
163
|
+
}.compact
|
164
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
165
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
166
|
+
end
|
167
|
+
req.body = {
|
168
|
+
**(request_options&.additional_body_parameters || {}),
|
169
|
+
from: from,
|
170
|
+
mediaUrls: media_urls,
|
171
|
+
options: options,
|
172
|
+
text: text,
|
173
|
+
to: to
|
174
|
+
}.compact
|
175
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/messages/send/mms"
|
176
|
+
end
|
177
|
+
Pinnacle::Messages::Mms::Types::MmsSendResponse.from_json(json_object: response.body)
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
63
181
|
# Validate MMS message content without sending it.
|
64
182
|
#
|
65
183
|
# @param request [Hash] Request of type Pinnacle::Types::MmsContent, as a Hash
|
@@ -6,13 +6,13 @@ require_relative "../../../types/scheduled_messaage"
|
|
6
6
|
|
7
7
|
module Pinnacle
|
8
8
|
module Messages
|
9
|
-
module
|
9
|
+
module Mms
|
10
10
|
module Types
|
11
|
-
class
|
12
|
-
# Deserialize a JSON object to an instance of
|
11
|
+
class MmsSendResponse
|
12
|
+
# Deserialize a JSON object to an instance of MmsSendResponse
|
13
13
|
#
|
14
14
|
# @param json_object [String]
|
15
|
-
# @return [Pinnacle::Messages::
|
15
|
+
# @return [Pinnacle::Messages::Mms::Types::MmsSendResponse]
|
16
16
|
def self.from_json(json_object:)
|
17
17
|
struct = JSON.parse(json_object, object_class: OpenStruct)
|
18
18
|
begin
|
data/lib/rcs/messages/{send/types/send_mms_schema_options.rb → mms/types/send_mms_options.rb}
RENAMED
@@ -7,10 +7,10 @@ require "json"
|
|
7
7
|
|
8
8
|
module Pinnacle
|
9
9
|
module Messages
|
10
|
-
module
|
10
|
+
module Mms
|
11
11
|
module Types
|
12
12
|
# Control how your MMS is processed and delivered.
|
13
|
-
class
|
13
|
+
class SendMmsOptions
|
14
14
|
# @return [Boolean] Allow splitting large content into multiple MMS messages if size limits are
|
15
15
|
# exceeded. <br>
|
16
16
|
# If `false`, MMS over the limit will throw an error and won't be sent.
|
@@ -40,7 +40,7 @@ module Pinnacle
|
|
40
40
|
# If errors occur, the message is not sent. Otherwise message is sent after
|
41
41
|
# validation.
|
42
42
|
# @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
|
43
|
-
# @return [Pinnacle::Messages::
|
43
|
+
# @return [Pinnacle::Messages::Mms::Types::SendMmsOptions]
|
44
44
|
def initialize(multiple_messages:, validate:, schedule: OMIT, tracking: OMIT, additional_properties: nil)
|
45
45
|
@multiple_messages = multiple_messages
|
46
46
|
@schedule = schedule if schedule != OMIT
|
@@ -57,10 +57,10 @@ module Pinnacle
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
# Deserialize a JSON object to an instance of
|
60
|
+
# Deserialize a JSON object to an instance of SendMmsOptions
|
61
61
|
#
|
62
62
|
# @param json_object [String]
|
63
|
-
# @return [Pinnacle::Messages::
|
63
|
+
# @return [Pinnacle::Messages::Mms::Types::SendMmsOptions]
|
64
64
|
def self.from_json(json_object:)
|
65
65
|
struct = JSON.parse(json_object, object_class: OpenStruct)
|
66
66
|
parsed_json = JSON.parse(json_object)
|
@@ -82,7 +82,7 @@ module Pinnacle
|
|
82
82
|
)
|
83
83
|
end
|
84
84
|
|
85
|
-
# Serialize an instance of
|
85
|
+
# Serialize an instance of SendMmsOptions to a JSON object
|
86
86
|
#
|
87
87
|
# @return [String]
|
88
88
|
def to_json(*_args)
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative "../../../requests"
|
4
|
+
require_relative "../../types/rcs"
|
5
|
+
require_relative "types/rcs_send_response"
|
4
6
|
require_relative "../../types/rcs_validate_content"
|
5
7
|
require_relative "../../types/rcs_validation_result"
|
6
8
|
require "async"
|
@@ -17,6 +19,38 @@ module Pinnacle
|
|
17
19
|
@request_client = request_client
|
18
20
|
end
|
19
21
|
|
22
|
+
# Send a RCS message immediately or schedule it for future delivery. <br>
|
23
|
+
# Requires an active RCS agent and recipient devices that support RCS Business
|
24
|
+
# Messaging.
|
25
|
+
#
|
26
|
+
# @param request [Pinnacle::Types::RichTextMessage, Pinnacle::Types::RichMediaMessage, Pinnacle::Types::RichCardsMessage]
|
27
|
+
# @param request_options [Pinnacle::RequestOptions]
|
28
|
+
# @return [Pinnacle::Types::SentRcsDetails, Pinnacle::Types::ScheduledMessaage]
|
29
|
+
# @example
|
30
|
+
# api = Pinnacle::Client.new(
|
31
|
+
# base_url: "https://api.example.com",
|
32
|
+
# environment: Pinnacle::Environment::DEFAULT,
|
33
|
+
# api_key: "YOUR_API_KEY"
|
34
|
+
# )
|
35
|
+
# api.messages.rcs.send_(request: { quick_replies: , text: "text", from: "from", to: "to" })
|
36
|
+
def send_(request:, request_options: nil)
|
37
|
+
response = @request_client.conn.post do |req|
|
38
|
+
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
|
39
|
+
req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
|
40
|
+
req.headers = {
|
41
|
+
**(req.headers || {}),
|
42
|
+
**@request_client.get_headers,
|
43
|
+
**(request_options&.additional_headers || {})
|
44
|
+
}.compact
|
45
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
46
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
47
|
+
end
|
48
|
+
req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
|
49
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/messages/send/rcs"
|
50
|
+
end
|
51
|
+
Pinnacle::Messages::Rcs::Types::RcsSendResponse.from_json(json_object: response.body)
|
52
|
+
end
|
53
|
+
|
20
54
|
# Validate RCS message content without sending it.
|
21
55
|
#
|
22
56
|
# @param request [Pinnacle::Types::RcsTextContent, Pinnacle::Types::RcsValidateContentMedia, Pinnacle::Types::RcsCards]
|
@@ -58,6 +92,40 @@ module Pinnacle
|
|
58
92
|
@request_client = request_client
|
59
93
|
end
|
60
94
|
|
95
|
+
# Send a RCS message immediately or schedule it for future delivery. <br>
|
96
|
+
# Requires an active RCS agent and recipient devices that support RCS Business
|
97
|
+
# Messaging.
|
98
|
+
#
|
99
|
+
# @param request [Pinnacle::Types::RichTextMessage, Pinnacle::Types::RichMediaMessage, Pinnacle::Types::RichCardsMessage]
|
100
|
+
# @param request_options [Pinnacle::RequestOptions]
|
101
|
+
# @return [Pinnacle::Types::SentRcsDetails, Pinnacle::Types::ScheduledMessaage]
|
102
|
+
# @example
|
103
|
+
# api = Pinnacle::Client.new(
|
104
|
+
# base_url: "https://api.example.com",
|
105
|
+
# environment: Pinnacle::Environment::DEFAULT,
|
106
|
+
# api_key: "YOUR_API_KEY"
|
107
|
+
# )
|
108
|
+
# api.messages.rcs.send_(request: { quick_replies: , text: "text", from: "from", to: "to" })
|
109
|
+
def send_(request:, request_options: nil)
|
110
|
+
Async do
|
111
|
+
response = @request_client.conn.post do |req|
|
112
|
+
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
|
113
|
+
req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
|
114
|
+
req.headers = {
|
115
|
+
**(req.headers || {}),
|
116
|
+
**@request_client.get_headers,
|
117
|
+
**(request_options&.additional_headers || {})
|
118
|
+
}.compact
|
119
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
120
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
121
|
+
end
|
122
|
+
req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
|
123
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/messages/send/rcs"
|
124
|
+
end
|
125
|
+
Pinnacle::Messages::Rcs::Types::RcsSendResponse.from_json(json_object: response.body)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
61
129
|
# Validate RCS message content without sending it.
|
62
130
|
#
|
63
131
|
# @param request [Pinnacle::Types::RcsTextContent, Pinnacle::Types::RcsValidateContentMedia, Pinnacle::Types::RcsCards]
|
@@ -6,13 +6,13 @@ require_relative "../../../types/scheduled_messaage"
|
|
6
6
|
|
7
7
|
module Pinnacle
|
8
8
|
module Messages
|
9
|
-
module
|
9
|
+
module Rcs
|
10
10
|
module Types
|
11
|
-
class
|
12
|
-
# Deserialize a JSON object to an instance of
|
11
|
+
class RcsSendResponse
|
12
|
+
# Deserialize a JSON object to an instance of RcsSendResponse
|
13
13
|
#
|
14
14
|
# @param json_object [String]
|
15
|
-
# @return [Pinnacle::Messages::
|
15
|
+
# @return [Pinnacle::Messages::Rcs::Types::RcsSendResponse]
|
16
16
|
def self.from_json(json_object:)
|
17
17
|
struct = JSON.parse(json_object, object_class: OpenStruct)
|
18
18
|
begin
|
@@ -0,0 +1,198 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../../../requests"
|
4
|
+
require_relative "types/send_sms_options"
|
5
|
+
require_relative "types/sms_send_response"
|
6
|
+
require_relative "../../types/sms_content"
|
7
|
+
require_relative "../../types/sms_validation_result"
|
8
|
+
require "async"
|
9
|
+
|
10
|
+
module Pinnacle
|
11
|
+
module Messages
|
12
|
+
class SmsClient
|
13
|
+
# @return [Pinnacle::RequestClient]
|
14
|
+
attr_reader :request_client
|
15
|
+
|
16
|
+
# @param request_client [Pinnacle::RequestClient]
|
17
|
+
# @return [Pinnacle::Messages::SmsClient]
|
18
|
+
def initialize(request_client:)
|
19
|
+
@request_client = request_client
|
20
|
+
end
|
21
|
+
|
22
|
+
# Send a SMS message immediately or schedule it for future delivery.
|
23
|
+
#
|
24
|
+
# @param from [String] Phone number that sends the message in E.164 format.
|
25
|
+
# @param options [Hash] Additional settings to customize SMS delivery.Request of type Pinnacle::Messages::Sms::Types::SendSmsOptions, as a Hash
|
26
|
+
# * :schedule (Hash)
|
27
|
+
# * :end_date (DateTime)
|
28
|
+
# * :recurrence (String)
|
29
|
+
# * :send_at (String)
|
30
|
+
# * :timezone (String)
|
31
|
+
# * :tracking (Pinnacle::Types::Tracking)
|
32
|
+
# @param text [String] Message content.
|
33
|
+
# @param to [String] Recipient's phone number in E.164 format.
|
34
|
+
# @param request_options [Pinnacle::RequestOptions]
|
35
|
+
# @return [Pinnacle::Types::SentSmsDetails, Pinnacle::Types::ScheduledMessaage]
|
36
|
+
# @example
|
37
|
+
# api = Pinnacle::Client.new(
|
38
|
+
# base_url: "https://api.example.com",
|
39
|
+
# environment: Pinnacle::Environment::DEFAULT,
|
40
|
+
# api_key: "YOUR_API_KEY"
|
41
|
+
# )
|
42
|
+
# api.messages.sms.send_(
|
43
|
+
# from: "+14155164736",
|
44
|
+
# text: "Hey!",
|
45
|
+
# to: "+14154746461"
|
46
|
+
# )
|
47
|
+
def send_(from:, text:, to:, options: nil, request_options: nil)
|
48
|
+
response = @request_client.conn.post do |req|
|
49
|
+
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
|
50
|
+
req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
|
51
|
+
req.headers = {
|
52
|
+
**(req.headers || {}),
|
53
|
+
**@request_client.get_headers,
|
54
|
+
**(request_options&.additional_headers || {})
|
55
|
+
}.compact
|
56
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
57
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
58
|
+
end
|
59
|
+
req.body = {
|
60
|
+
**(request_options&.additional_body_parameters || {}),
|
61
|
+
from: from,
|
62
|
+
options: options,
|
63
|
+
text: text,
|
64
|
+
to: to
|
65
|
+
}.compact
|
66
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/messages/send/sms"
|
67
|
+
end
|
68
|
+
Pinnacle::Messages::Sms::Types::SmsSendResponse.from_json(json_object: response.body)
|
69
|
+
end
|
70
|
+
|
71
|
+
# Validate SMS message content without sending it.
|
72
|
+
#
|
73
|
+
# @param request [Hash] Request of type Pinnacle::Types::SmsContent, as a Hash
|
74
|
+
# * :text (String)
|
75
|
+
# @param request_options [Pinnacle::RequestOptions]
|
76
|
+
# @return [Pinnacle::Types::SmsValidationResult]
|
77
|
+
# @example
|
78
|
+
# api = Pinnacle::Client.new(
|
79
|
+
# base_url: "https://api.example.com",
|
80
|
+
# environment: Pinnacle::Environment::DEFAULT,
|
81
|
+
# api_key: "YOUR_API_KEY"
|
82
|
+
# )
|
83
|
+
# api.messages.sms.validate(request: { text: "Hello from Pinnacle" })
|
84
|
+
def validate(request:, request_options: nil)
|
85
|
+
response = @request_client.conn.post do |req|
|
86
|
+
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
|
87
|
+
req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
|
88
|
+
req.headers = {
|
89
|
+
**(req.headers || {}),
|
90
|
+
**@request_client.get_headers,
|
91
|
+
**(request_options&.additional_headers || {})
|
92
|
+
}.compact
|
93
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
94
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
95
|
+
end
|
96
|
+
req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
|
97
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/messages/validate/sms"
|
98
|
+
end
|
99
|
+
Pinnacle::Types::SmsValidationResult.from_json(json_object: response.body)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
class AsyncSmsClient
|
104
|
+
# @return [Pinnacle::AsyncRequestClient]
|
105
|
+
attr_reader :request_client
|
106
|
+
|
107
|
+
# @param request_client [Pinnacle::AsyncRequestClient]
|
108
|
+
# @return [Pinnacle::Messages::AsyncSmsClient]
|
109
|
+
def initialize(request_client:)
|
110
|
+
@request_client = request_client
|
111
|
+
end
|
112
|
+
|
113
|
+
# Send a SMS message immediately or schedule it for future delivery.
|
114
|
+
#
|
115
|
+
# @param from [String] Phone number that sends the message in E.164 format.
|
116
|
+
# @param options [Hash] Additional settings to customize SMS delivery.Request of type Pinnacle::Messages::Sms::Types::SendSmsOptions, as a Hash
|
117
|
+
# * :schedule (Hash)
|
118
|
+
# * :end_date (DateTime)
|
119
|
+
# * :recurrence (String)
|
120
|
+
# * :send_at (String)
|
121
|
+
# * :timezone (String)
|
122
|
+
# * :tracking (Pinnacle::Types::Tracking)
|
123
|
+
# @param text [String] Message content.
|
124
|
+
# @param to [String] Recipient's phone number in E.164 format.
|
125
|
+
# @param request_options [Pinnacle::RequestOptions]
|
126
|
+
# @return [Pinnacle::Types::SentSmsDetails, Pinnacle::Types::ScheduledMessaage]
|
127
|
+
# @example
|
128
|
+
# api = Pinnacle::Client.new(
|
129
|
+
# base_url: "https://api.example.com",
|
130
|
+
# environment: Pinnacle::Environment::DEFAULT,
|
131
|
+
# api_key: "YOUR_API_KEY"
|
132
|
+
# )
|
133
|
+
# api.messages.sms.send_(
|
134
|
+
# from: "+14155164736",
|
135
|
+
# text: "Hey!",
|
136
|
+
# to: "+14154746461"
|
137
|
+
# )
|
138
|
+
def send_(from:, text:, to:, options: nil, request_options: nil)
|
139
|
+
Async do
|
140
|
+
response = @request_client.conn.post do |req|
|
141
|
+
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
|
142
|
+
req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
|
143
|
+
req.headers = {
|
144
|
+
**(req.headers || {}),
|
145
|
+
**@request_client.get_headers,
|
146
|
+
**(request_options&.additional_headers || {})
|
147
|
+
}.compact
|
148
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
149
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
150
|
+
end
|
151
|
+
req.body = {
|
152
|
+
**(request_options&.additional_body_parameters || {}),
|
153
|
+
from: from,
|
154
|
+
options: options,
|
155
|
+
text: text,
|
156
|
+
to: to
|
157
|
+
}.compact
|
158
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/messages/send/sms"
|
159
|
+
end
|
160
|
+
Pinnacle::Messages::Sms::Types::SmsSendResponse.from_json(json_object: response.body)
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
# Validate SMS message content without sending it.
|
165
|
+
#
|
166
|
+
# @param request [Hash] Request of type Pinnacle::Types::SmsContent, as a Hash
|
167
|
+
# * :text (String)
|
168
|
+
# @param request_options [Pinnacle::RequestOptions]
|
169
|
+
# @return [Pinnacle::Types::SmsValidationResult]
|
170
|
+
# @example
|
171
|
+
# api = Pinnacle::Client.new(
|
172
|
+
# base_url: "https://api.example.com",
|
173
|
+
# environment: Pinnacle::Environment::DEFAULT,
|
174
|
+
# api_key: "YOUR_API_KEY"
|
175
|
+
# )
|
176
|
+
# api.messages.sms.validate(request: { text: "Hello from Pinnacle" })
|
177
|
+
def validate(request:, request_options: nil)
|
178
|
+
Async do
|
179
|
+
response = @request_client.conn.post do |req|
|
180
|
+
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
|
181
|
+
req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
|
182
|
+
req.headers = {
|
183
|
+
**(req.headers || {}),
|
184
|
+
**@request_client.get_headers,
|
185
|
+
**(request_options&.additional_headers || {})
|
186
|
+
}.compact
|
187
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
188
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
189
|
+
end
|
190
|
+
req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
|
191
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/messages/validate/sms"
|
192
|
+
end
|
193
|
+
Pinnacle::Types::SmsValidationResult.from_json(json_object: response.body)
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
data/lib/rcs/messages/{send/types/send_sms_schema_options.rb → sms/types/send_sms_options.rb}
RENAMED
@@ -7,10 +7,10 @@ require "json"
|
|
7
7
|
|
8
8
|
module Pinnacle
|
9
9
|
module Messages
|
10
|
-
module
|
10
|
+
module Sms
|
11
11
|
module Types
|
12
12
|
# Additional settings to customize SMS delivery.
|
13
|
-
class
|
13
|
+
class SendSmsOptions
|
14
14
|
# @return [Pinnacle::Types::MessageSchedule]
|
15
15
|
attr_reader :schedule
|
16
16
|
# @return [Pinnacle::Types::Tracking]
|
@@ -26,7 +26,7 @@ module Pinnacle
|
|
26
26
|
# @param schedule [Pinnacle::Types::MessageSchedule]
|
27
27
|
# @param tracking [Pinnacle::Types::Tracking]
|
28
28
|
# @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
|
29
|
-
# @return [Pinnacle::Messages::
|
29
|
+
# @return [Pinnacle::Messages::Sms::Types::SendSmsOptions]
|
30
30
|
def initialize(schedule: OMIT, tracking: OMIT, additional_properties: nil)
|
31
31
|
@schedule = schedule if schedule != OMIT
|
32
32
|
@tracking = tracking if tracking != OMIT
|
@@ -36,10 +36,10 @@ module Pinnacle
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
# Deserialize a JSON object to an instance of
|
39
|
+
# Deserialize a JSON object to an instance of SendSmsOptions
|
40
40
|
#
|
41
41
|
# @param json_object [String]
|
42
|
-
# @return [Pinnacle::Messages::
|
42
|
+
# @return [Pinnacle::Messages::Sms::Types::SendSmsOptions]
|
43
43
|
def self.from_json(json_object:)
|
44
44
|
struct = JSON.parse(json_object, object_class: OpenStruct)
|
45
45
|
parsed_json = JSON.parse(json_object)
|
@@ -57,7 +57,7 @@ module Pinnacle
|
|
57
57
|
)
|
58
58
|
end
|
59
59
|
|
60
|
-
# Serialize an instance of
|
60
|
+
# Serialize an instance of SendSmsOptions to a JSON object
|
61
61
|
#
|
62
62
|
# @return [String]
|
63
63
|
def to_json(*_args)
|
@@ -6,13 +6,13 @@ require_relative "../../../types/scheduled_messaage"
|
|
6
6
|
|
7
7
|
module Pinnacle
|
8
8
|
module Messages
|
9
|
-
module
|
9
|
+
module Sms
|
10
10
|
module Types
|
11
|
-
class
|
12
|
-
# Deserialize a JSON object to an instance of
|
11
|
+
class SmsSendResponse
|
12
|
+
# Deserialize a JSON object to an instance of SmsSendResponse
|
13
13
|
#
|
14
14
|
# @param json_object [String]
|
15
|
-
# @return [Pinnacle::Messages::
|
15
|
+
# @return [Pinnacle::Messages::Sms::Types::SmsSendResponse]
|
16
16
|
def self.from_json(json_object:)
|
17
17
|
struct = JSON.parse(json_object, object_class: OpenStruct)
|
18
18
|
begin
|