rcs 2.0.8 → 2.0.13
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/.fern/metadata.json +3 -3
- data/.fernignore +1 -6
- data/.rubocop.yml +0 -3
- data/Rakefile +0 -8
- data/custom.gemspec.rb +6 -3
- data/lib/pinnacle/audiences/client.rb +2 -8
- data/lib/pinnacle/audiences/contacts/client.rb +2 -8
- data/lib/pinnacle/brands/client.rb +6 -13
- data/lib/pinnacle/campaigns/dlc/client.rb +1 -4
- data/lib/pinnacle/campaigns/rcs/client.rb +1 -4
- data/lib/pinnacle/campaigns/toll_free/client.rb +1 -4
- data/lib/pinnacle/client.rb +2 -2
- data/lib/pinnacle/contacts/client.rb +2 -8
- data/lib/pinnacle/conversations/client.rb +2 -8
- data/lib/pinnacle/conversations/types/conversations_list_messages_request_status.rb +1 -0
- data/lib/pinnacle/internal/http/base_request.rb +6 -0
- data/lib/pinnacle/internal/http/raw_client.rb +95 -15
- data/lib/pinnacle/internal/types/utils.rb +2 -2
- data/lib/pinnacle/messages/blast/client.rb +3 -12
- data/lib/pinnacle/messages/blast/types/blast_rcs.rb +1 -0
- data/lib/pinnacle/messages/client.rb +1 -4
- data/lib/pinnacle/messages/mms/client.rb +1 -4
- data/lib/pinnacle/messages/rcs/client.rb +1 -4
- data/lib/pinnacle/messages/sms/client.rb +1 -4
- data/lib/pinnacle/phone_numbers/campaign/client.rb +2 -8
- data/lib/pinnacle/phone_numbers/client.rb +3 -12
- data/lib/pinnacle/pinnacle_client.rb +2 -2
- data/lib/pinnacle/rcs/client.rb +3 -12
- data/lib/pinnacle/tools/contact_card/client.rb +2 -8
- data/lib/pinnacle/tools/file/client.rb +2 -8
- data/lib/pinnacle/tools/url/client.rb +5 -9
- data/lib/pinnacle/types/base_rich_message.rb +1 -0
- data/lib/pinnacle/types/fallback_message.rb +19 -0
- data/lib/pinnacle/types/message.rb +1 -0
- data/lib/pinnacle/types/message_event.rb +1 -0
- data/lib/pinnacle/types/message_event_content.rb +9 -7
- data/lib/pinnacle/types/message_event_fallback_message.rb +20 -0
- data/lib/pinnacle/types/message_event_fallback_message_type.rb +12 -0
- data/lib/pinnacle/types/message_event_mms_content.rb +0 -1
- data/lib/pinnacle/types/message_event_rcs_button_data.rb +2 -1
- data/lib/pinnacle/types/message_event_rcs_button_data_button.rb +14 -0
- data/lib/pinnacle/types/message_event_rcs_button_data_button_raw.rb +14 -0
- data/lib/pinnacle/types/message_event_rcs_button_data_button_type.rb +12 -0
- data/lib/pinnacle/types/message_event_rcs_cards_content.rb +0 -1
- data/lib/pinnacle/types/message_event_rcs_location_data.rb +2 -1
- data/lib/pinnacle/types/message_event_rcs_location_data_data.rb +13 -0
- data/lib/pinnacle/types/message_event_rcs_media_content.rb +0 -1
- data/lib/pinnacle/types/message_event_rcs_text_content.rb +0 -1
- data/lib/pinnacle/types/message_event_sms_content.rb +0 -1
- data/lib/pinnacle/types/message_status_enum.rb +1 -0
- data/lib/pinnacle/types/rich_cards_message.rb +1 -0
- data/lib/pinnacle/version.rb +1 -1
- data/lib/pinnacle/webhooks/client.rb +1 -4
- data/lib/pinnacle.rb +7 -4
- data/lib/rcs.rb +450 -0
- data/reference.md +12 -0
- metadata +12 -5
|
@@ -24,14 +24,11 @@ module Pinnacle
|
|
|
24
24
|
# @return [Pinnacle::Types::AttachedPhoneNumberResult]
|
|
25
25
|
def attach(request_options: {}, **params)
|
|
26
26
|
params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
|
|
27
|
-
body_prop_names = %i[phones campaign_type campaign_id]
|
|
28
|
-
body_bag = params.slice(*body_prop_names)
|
|
29
|
-
|
|
30
27
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
31
28
|
base_url: request_options[:base_url],
|
|
32
29
|
method: "POST",
|
|
33
30
|
path: "phone-numbers/attach-campaign",
|
|
34
|
-
body: Pinnacle::PhoneNumbers::Campaign::Types::AttachCampaignParams.new(
|
|
31
|
+
body: Pinnacle::PhoneNumbers::Campaign::Types::AttachCampaignParams.new(params).to_h,
|
|
35
32
|
request_options: request_options
|
|
36
33
|
)
|
|
37
34
|
begin
|
|
@@ -61,14 +58,11 @@ module Pinnacle
|
|
|
61
58
|
# @return [Pinnacle::Types::DetachedPhoneNumberResult]
|
|
62
59
|
def detach(request_options: {}, **params)
|
|
63
60
|
params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
|
|
64
|
-
body_prop_names = %i[phones]
|
|
65
|
-
body_bag = params.slice(*body_prop_names)
|
|
66
|
-
|
|
67
61
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
68
62
|
base_url: request_options[:base_url],
|
|
69
63
|
method: "DELETE",
|
|
70
64
|
path: "phone-numbers/detach-campaign",
|
|
71
|
-
body: Pinnacle::PhoneNumbers::Campaign::Types::DetachCampaignParams.new(
|
|
65
|
+
body: Pinnacle::PhoneNumbers::Campaign::Types::DetachCampaignParams.new(params).to_h,
|
|
72
66
|
request_options: request_options
|
|
73
67
|
)
|
|
74
68
|
begin
|
|
@@ -23,14 +23,11 @@ module Pinnacle
|
|
|
23
23
|
# @return [Array[Pinnacle::Types::PhoneNumberDetails]]
|
|
24
24
|
def search(request_options: {}, **params)
|
|
25
25
|
params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
|
|
26
|
-
body_prop_names = %i[features location number options type]
|
|
27
|
-
body_bag = params.slice(*body_prop_names)
|
|
28
|
-
|
|
29
26
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
30
27
|
base_url: request_options[:base_url],
|
|
31
28
|
method: "POST",
|
|
32
29
|
path: "phone-numbers/search",
|
|
33
|
-
body: Pinnacle::PhoneNumbers::Types::SearchPhoneNumberParams.new(
|
|
30
|
+
body: Pinnacle::PhoneNumbers::Types::SearchPhoneNumberParams.new(params).to_h,
|
|
34
31
|
request_options: request_options
|
|
35
32
|
)
|
|
36
33
|
begin
|
|
@@ -60,14 +57,11 @@ module Pinnacle
|
|
|
60
57
|
# @return [Array[Pinnacle::Types::PurchasedNumber]]
|
|
61
58
|
def buy(request_options: {}, **params)
|
|
62
59
|
params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
|
|
63
|
-
body_prop_names = %i[numbers]
|
|
64
|
-
body_bag = params.slice(*body_prop_names)
|
|
65
|
-
|
|
66
60
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
67
61
|
base_url: request_options[:base_url],
|
|
68
62
|
method: "POST",
|
|
69
63
|
path: "phone-numbers/buy",
|
|
70
|
-
body: Pinnacle::PhoneNumbers::Types::BuyPhoneNumberParams.new(
|
|
64
|
+
body: Pinnacle::PhoneNumbers::Types::BuyPhoneNumberParams.new(params).to_h,
|
|
71
65
|
request_options: request_options
|
|
72
66
|
)
|
|
73
67
|
begin
|
|
@@ -95,14 +89,11 @@ module Pinnacle
|
|
|
95
89
|
# @return [Pinnacle::PhoneNumbers::Types::PhoneNumbersGetResponse]
|
|
96
90
|
def get(request_options: {}, **params)
|
|
97
91
|
params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
|
|
98
|
-
body_prop_names = %i[phone level options]
|
|
99
|
-
body_bag = params.slice(*body_prop_names)
|
|
100
|
-
|
|
101
92
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
102
93
|
base_url: request_options[:base_url],
|
|
103
94
|
method: "POST",
|
|
104
95
|
path: "phone-numbers/details",
|
|
105
|
-
body: Pinnacle::PhoneNumbers::Types::RetrievePhoneNumberDetailsParams.new(
|
|
96
|
+
body: Pinnacle::PhoneNumbers::Types::RetrievePhoneNumberDetailsParams.new(params).to_h,
|
|
106
97
|
request_options: request_options
|
|
107
98
|
)
|
|
108
99
|
begin
|
|
@@ -5,8 +5,8 @@ require_relative "wrapper/tools/file_uploader"
|
|
|
5
5
|
require_relative "wrapper/tools/client"
|
|
6
6
|
|
|
7
7
|
module Pinnacle
|
|
8
|
-
#
|
|
9
|
-
class Client
|
|
8
|
+
# Client class that extends PinnacleBaseClient with custom methods for webhook processing and file uploads.
|
|
9
|
+
class Client < PinnacleBaseClient
|
|
10
10
|
# Returns an enhanced messages client with webhook processing support.
|
|
11
11
|
#
|
|
12
12
|
# @return [Pinnacle::Wrapper::Messages::Client]
|
data/lib/pinnacle/rcs/client.rb
CHANGED
|
@@ -26,14 +26,11 @@ module Pinnacle
|
|
|
26
26
|
# @return [Hash[String, Pinnacle::Types::RcsCapability, nil]]
|
|
27
27
|
def get_capabilities(request_options: {}, **params)
|
|
28
28
|
params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
|
|
29
|
-
body_prop_names = %i[phone_numbers]
|
|
30
|
-
body_bag = params.slice(*body_prop_names)
|
|
31
|
-
|
|
32
29
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
33
30
|
base_url: request_options[:base_url],
|
|
34
31
|
method: "POST",
|
|
35
32
|
path: "rcs/capabilities",
|
|
36
|
-
body: Pinnacle::Rcs::Types::RcsCapabilitiesQuery.new(
|
|
33
|
+
body: Pinnacle::Rcs::Types::RcsCapabilitiesQuery.new(params).to_h,
|
|
37
34
|
request_options: request_options
|
|
38
35
|
)
|
|
39
36
|
begin
|
|
@@ -91,14 +88,11 @@ module Pinnacle
|
|
|
91
88
|
# @return [Pinnacle::Types::RcsWhitelistResponse]
|
|
92
89
|
def whitelist(request_options: {}, **params)
|
|
93
90
|
params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
|
|
94
|
-
body_prop_names = %i[agent_id phone_number]
|
|
95
|
-
body_bag = params.slice(*body_prop_names)
|
|
96
|
-
|
|
97
91
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
98
92
|
base_url: request_options[:base_url],
|
|
99
93
|
method: "POST",
|
|
100
94
|
path: "rcs/whitelist",
|
|
101
|
-
body: Pinnacle::Rcs::Types::RcsWhitelistRequest.new(
|
|
95
|
+
body: Pinnacle::Rcs::Types::RcsWhitelistRequest.new(params).to_h,
|
|
102
96
|
request_options: request_options
|
|
103
97
|
)
|
|
104
98
|
begin
|
|
@@ -131,14 +125,11 @@ module Pinnacle
|
|
|
131
125
|
# @return [Pinnacle::Types::RcsLinkResult]
|
|
132
126
|
def get_link(request_options: {}, **params)
|
|
133
127
|
params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
|
|
134
|
-
body_prop_names = %i[agent_id test_mode phone_number body]
|
|
135
|
-
body_bag = params.slice(*body_prop_names)
|
|
136
|
-
|
|
137
128
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
138
129
|
base_url: request_options[:base_url],
|
|
139
130
|
method: "POST",
|
|
140
131
|
path: "rcs/link",
|
|
141
|
-
body: Pinnacle::Rcs::Types::RcsLinkRequest.new(
|
|
132
|
+
body: Pinnacle::Rcs::Types::RcsLinkRequest.new(params).to_h,
|
|
142
133
|
request_options: request_options
|
|
143
134
|
)
|
|
144
135
|
begin
|
|
@@ -25,14 +25,11 @@ module Pinnacle
|
|
|
25
25
|
# @return [Pinnacle::Types::VCardData]
|
|
26
26
|
def get(request_options: {}, **params)
|
|
27
27
|
params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
|
|
28
|
-
body_prop_names = %i[id options]
|
|
29
|
-
body_bag = params.slice(*body_prop_names)
|
|
30
|
-
|
|
31
28
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
32
29
|
base_url: request_options[:base_url],
|
|
33
30
|
method: "POST",
|
|
34
31
|
path: "tools/contact-card",
|
|
35
|
-
body: Pinnacle::Tools::ContactCard::Types::GetVcardParams.new(
|
|
32
|
+
body: Pinnacle::Tools::ContactCard::Types::GetVcardParams.new(params).to_h,
|
|
36
33
|
request_options: request_options
|
|
37
34
|
)
|
|
38
35
|
begin
|
|
@@ -63,14 +60,11 @@ module Pinnacle
|
|
|
63
60
|
# @return [Pinnacle::Types::VcardResource]
|
|
64
61
|
def upsert(request_options: {}, **params)
|
|
65
62
|
params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
|
|
66
|
-
body_prop_names = %i[photo id formatted_name name nickname birthday addresses url phones emails timezone geo title role organization categories note]
|
|
67
|
-
body_bag = params.slice(*body_prop_names)
|
|
68
|
-
|
|
69
63
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
70
64
|
base_url: request_options[:base_url],
|
|
71
65
|
method: "POST",
|
|
72
66
|
path: "tools/contact-card/upsert",
|
|
73
|
-
body: Pinnacle::Tools::ContactCard::Types::UpsertVcardParams.new(
|
|
67
|
+
body: Pinnacle::Tools::ContactCard::Types::UpsertVcardParams.new(params).to_h,
|
|
74
68
|
request_options: request_options
|
|
75
69
|
)
|
|
76
70
|
begin
|
|
@@ -25,14 +25,11 @@ module Pinnacle
|
|
|
25
25
|
# @return [Pinnacle::Types::UploadResults]
|
|
26
26
|
def upload(request_options: {}, **params)
|
|
27
27
|
params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
|
|
28
|
-
body_prop_names = %i[content_type size name options]
|
|
29
|
-
body_bag = params.slice(*body_prop_names)
|
|
30
|
-
|
|
31
28
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
32
29
|
base_url: request_options[:base_url],
|
|
33
30
|
method: "POST",
|
|
34
31
|
path: "tools/files/upload",
|
|
35
|
-
body: Pinnacle::Tools::File::Types::UploadFileParams.new(
|
|
32
|
+
body: Pinnacle::Tools::File::Types::UploadFileParams.new(params).to_h,
|
|
36
33
|
request_options: request_options
|
|
37
34
|
)
|
|
38
35
|
begin
|
|
@@ -67,14 +64,11 @@ module Pinnacle
|
|
|
67
64
|
# @return [Array[Pinnacle::Types::RefreshedFile]]
|
|
68
65
|
def refresh(request_options: {}, **params)
|
|
69
66
|
params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
|
|
70
|
-
body_prop_names = %i[urls]
|
|
71
|
-
body_bag = params.slice(*body_prop_names)
|
|
72
|
-
|
|
73
67
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
74
68
|
base_url: request_options[:base_url],
|
|
75
69
|
method: "POST",
|
|
76
70
|
path: "tools/files/refresh",
|
|
77
|
-
body: Pinnacle::Tools::File::Types::RefreshFileParams.new(
|
|
71
|
+
body: Pinnacle::Tools::File::Types::RefreshFileParams.new(params).to_h,
|
|
78
72
|
request_options: request_options
|
|
79
73
|
)
|
|
80
74
|
begin
|
|
@@ -24,14 +24,11 @@ module Pinnacle
|
|
|
24
24
|
# @return [Pinnacle::Types::ShortenedUrl]
|
|
25
25
|
def create(request_options: {}, **params)
|
|
26
26
|
params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
|
|
27
|
-
body_prop_names = %i[url options]
|
|
28
|
-
body_bag = params.slice(*body_prop_names)
|
|
29
|
-
|
|
30
27
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
31
28
|
base_url: request_options[:base_url],
|
|
32
29
|
method: "POST",
|
|
33
30
|
path: "tools/url",
|
|
34
|
-
body: Pinnacle::Tools::Url::Types::CreateUrlParams.new(
|
|
31
|
+
body: Pinnacle::Tools::Url::Types::CreateUrlParams.new(params).to_h,
|
|
35
32
|
request_options: request_options
|
|
36
33
|
)
|
|
37
34
|
begin
|
|
@@ -97,16 +94,15 @@ module Pinnacle
|
|
|
97
94
|
# @return [Pinnacle::Types::ShortenedUrl]
|
|
98
95
|
def update(request_options: {}, **params)
|
|
99
96
|
params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
body_bag = body_params.slice(*body_prop_names)
|
|
97
|
+
request_data = Pinnacle::Tools::Url::Types::UpdateUrlParams.new(params).to_h
|
|
98
|
+
non_body_param_names = ["linkId"]
|
|
99
|
+
body = request_data.except(*non_body_param_names)
|
|
104
100
|
|
|
105
101
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
106
102
|
base_url: request_options[:base_url],
|
|
107
103
|
method: "PUT",
|
|
108
104
|
path: "tools/url/#{params[:link_id]}",
|
|
109
|
-
body:
|
|
105
|
+
body: body,
|
|
110
106
|
request_options: request_options
|
|
111
107
|
)
|
|
112
108
|
begin
|
|
@@ -4,6 +4,7 @@ module Pinnacle
|
|
|
4
4
|
module Types
|
|
5
5
|
class BaseRichMessage < Internal::Types::Model
|
|
6
6
|
field :from, -> { String }, optional: false, nullable: false
|
|
7
|
+
field :fallback, -> { Pinnacle::Types::FallbackMessage }, optional: true, nullable: false
|
|
7
8
|
field :options, -> { Pinnacle::Types::SendRichMessageOptions }, optional: true, nullable: false
|
|
8
9
|
field :to, -> { String }, optional: false, nullable: false
|
|
9
10
|
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pinnacle
|
|
4
|
+
module Types
|
|
5
|
+
# SMS/MMS fallback message to send if the RCS message fails to deliver.
|
|
6
|
+
#
|
|
7
|
+
# When a recipient's device doesn't support RCS or the RCS message cannot be delivered, this fallback message will
|
|
8
|
+
# be sent as SMS or MMS instead. The fallback is sent from the specified phone number.
|
|
9
|
+
#
|
|
10
|
+
# > **Note:** At least one of `text` or `mediaUrls` must be provided. Fallback messages require a verified `from`
|
|
11
|
+
# phone number with SMS/MMS sending capabilities.
|
|
12
|
+
# > **Note:** You will not be charged for the fallback message, only the original RCS message will be charged.
|
|
13
|
+
class FallbackMessage < Internal::Types::Model
|
|
14
|
+
field :from, -> { String }, optional: false, nullable: false
|
|
15
|
+
field :text, -> { String }, optional: true, nullable: false
|
|
16
|
+
field :media_urls, -> { Internal::Types::Array[String] }, optional: true, nullable: false, api_name: "mediaUrls"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -7,6 +7,7 @@ module Pinnacle
|
|
|
7
7
|
field :cost, -> { Integer }, optional: false, nullable: true
|
|
8
8
|
field :delivered_at, -> { String }, optional: false, nullable: true, api_name: "deliveredAt"
|
|
9
9
|
field :error, -> { String }, optional: false, nullable: true
|
|
10
|
+
field :fallback, -> { Pinnacle::Types::FallbackMessage }, optional: true, nullable: false
|
|
10
11
|
field :id, -> { String }, optional: false, nullable: false
|
|
11
12
|
field :method_, -> { Pinnacle::Types::MessageMethodEnum }, optional: false, nullable: false, api_name: "method"
|
|
12
13
|
field :num_segments, -> { Integer }, optional: false, nullable: false, api_name: "numSegments"
|
|
@@ -12,6 +12,7 @@ module Pinnacle
|
|
|
12
12
|
field :sent_at, -> { String }, optional: false, nullable: false, api_name: "sentAt"
|
|
13
13
|
field :delivered_at, -> { String }, optional: true, nullable: false, api_name: "deliveredAt"
|
|
14
14
|
field :message, -> { Pinnacle::Types::MessageEventContent }, optional: false, nullable: false
|
|
15
|
+
field :fallback_message, -> { Pinnacle::Types::MessageEventFallbackMessage }, optional: true, nullable: false, api_name: "fallbackMessage"
|
|
15
16
|
end
|
|
16
17
|
end
|
|
17
18
|
end
|
|
@@ -6,13 +6,15 @@ module Pinnacle
|
|
|
6
6
|
class MessageEventContent < Internal::Types::Model
|
|
7
7
|
extend Pinnacle::Internal::Types::Union
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
member -> { Pinnacle::Types::
|
|
12
|
-
member -> { Pinnacle::Types::
|
|
13
|
-
member -> { Pinnacle::Types::
|
|
14
|
-
member -> { Pinnacle::Types::
|
|
15
|
-
member -> { Pinnacle::Types::
|
|
9
|
+
discriminant :type
|
|
10
|
+
|
|
11
|
+
member -> { Pinnacle::Types::MessageEventSmsContent }, key: "SMS"
|
|
12
|
+
member -> { Pinnacle::Types::MessageEventMmsContent }, key: "MMS"
|
|
13
|
+
member -> { Pinnacle::Types::MessageEventRcsTextContent }, key: "RCS_TEXT"
|
|
14
|
+
member -> { Pinnacle::Types::MessageEventRcsMediaContent }, key: "RCS_MEDIA"
|
|
15
|
+
member -> { Pinnacle::Types::MessageEventRcsCardsContent }, key: "RCS_CARDS"
|
|
16
|
+
member -> { Pinnacle::Types::MessageEventRcsButtonData }, key: "RCS_BUTTON_DATA"
|
|
17
|
+
member -> { Pinnacle::Types::MessageEventRcsLocationData }, key: "RCS_LOCATION_DATA"
|
|
16
18
|
end
|
|
17
19
|
end
|
|
18
20
|
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pinnacle
|
|
4
|
+
module Types
|
|
5
|
+
# Details of the fallback SMS/MMS message that was sent instead of the original RCS message.
|
|
6
|
+
#
|
|
7
|
+
# This field is only present when the message `status` is `FALLBACK_SENT`, indicating the original RCS message could
|
|
8
|
+
# not be delivered and a fallback message was sent instead.
|
|
9
|
+
#
|
|
10
|
+
# Use this information to track which fallback messages were sent and their content.
|
|
11
|
+
class MessageEventFallbackMessage < Internal::Types::Model
|
|
12
|
+
field :id, -> { String }, optional: false, nullable: false
|
|
13
|
+
field :type, -> { Pinnacle::Types::MessageEventFallbackMessageType }, optional: false, nullable: false
|
|
14
|
+
field :from, -> { String }, optional: false, nullable: false
|
|
15
|
+
field :to, -> { String }, optional: false, nullable: false
|
|
16
|
+
field :text, -> { String }, optional: true, nullable: false
|
|
17
|
+
field :media_urls, -> { Internal::Types::Array[String] }, optional: true, nullable: false, api_name: "mediaUrls"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -4,7 +4,6 @@ module Pinnacle
|
|
|
4
4
|
module Types
|
|
5
5
|
# MMS message with text and/or media files from a phone number.
|
|
6
6
|
class MessageEventMmsContent < Internal::Types::Model
|
|
7
|
-
field :type, -> { String }, optional: false, nullable: false
|
|
8
7
|
field :id, -> { String }, optional: false, nullable: false
|
|
9
8
|
field :media_urls, -> { Internal::Types::Array[String] }, optional: false, nullable: false, api_name: "mediaUrls"
|
|
10
9
|
field :text, -> { String }, optional: true, nullable: false
|
|
@@ -8,8 +8,9 @@ module Pinnacle
|
|
|
8
8
|
# This event contains information about which button was clicked, how many times it's been clicked, and any payload
|
|
9
9
|
# or metadata attached to the button. Use this data to handle user interactions with your RCS messages.
|
|
10
10
|
class MessageEventRcsButtonData < Internal::Types::Model
|
|
11
|
-
field :type, -> { String }, optional: false, nullable: false
|
|
12
11
|
field :id, -> { String }, optional: false, nullable: false
|
|
12
|
+
field :button, -> { Pinnacle::Types::MessageEventRcsButtonDataButton }, optional: false, nullable: false
|
|
13
|
+
field :message_id, -> { String }, optional: false, nullable: true, api_name: "messageId"
|
|
13
14
|
end
|
|
14
15
|
end
|
|
15
16
|
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pinnacle
|
|
4
|
+
module Types
|
|
5
|
+
# Information about the button that was clicked.
|
|
6
|
+
class MessageEventRcsButtonDataButton < Internal::Types::Model
|
|
7
|
+
field :type, -> { Pinnacle::Types::MessageEventRcsButtonDataButtonType }, optional: true, nullable: false
|
|
8
|
+
field :raw, -> { Pinnacle::Types::MessageEventRcsButtonDataButtonRaw }, optional: false, nullable: false
|
|
9
|
+
field :payload, -> { String }, optional: true, nullable: false
|
|
10
|
+
field :metadata, -> { String }, optional: true, nullable: false
|
|
11
|
+
field :clicks, -> { Integer }, optional: false, nullable: false
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pinnacle
|
|
4
|
+
module Types
|
|
5
|
+
# Raw button data. Contains the entire button that was clicked by the user. In rare cases where we cannot determine
|
|
6
|
+
# the exact button, this will return only the button title.
|
|
7
|
+
class MessageEventRcsButtonDataButtonRaw < Internal::Types::Model
|
|
8
|
+
extend Pinnacle::Internal::Types::Union
|
|
9
|
+
|
|
10
|
+
member -> { Pinnacle::Types::RichButton }
|
|
11
|
+
member -> { String }
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -7,7 +7,6 @@ module Pinnacle
|
|
|
7
7
|
#
|
|
8
8
|
# See [supported file types](https://app.pinnacle.sh/supported-file-types?type=RCS-CARD).
|
|
9
9
|
class MessageEventRcsCardsContent < Internal::Types::Model
|
|
10
|
-
field :type, -> { String }, optional: false, nullable: false
|
|
11
10
|
field :id, -> { String }, optional: false, nullable: false
|
|
12
11
|
field :cards, -> { Internal::Types::Array[Pinnacle::Types::MessageEventRcsCardsContentCardsItem] }, optional: false, nullable: false
|
|
13
12
|
field :quick_replies, -> { Internal::Types::Array[Pinnacle::Types::RichButton] }, optional: false, nullable: false, api_name: "quickReplies"
|
|
@@ -8,8 +8,9 @@ module Pinnacle
|
|
|
8
8
|
# This event contains the geographic coordinates (latitude/longitude) and human-readable address of the location the
|
|
9
9
|
# user chose to share. Use this data to process location-based requests or provide location-specific services.
|
|
10
10
|
class MessageEventRcsLocationData < Internal::Types::Model
|
|
11
|
-
field :type, -> { String }, optional: false, nullable: false
|
|
12
11
|
field :id, -> { String }, optional: false, nullable: false
|
|
12
|
+
field :data, -> { Pinnacle::Types::MessageEventRcsLocationDataData }, optional: false, nullable: false
|
|
13
|
+
field :message_id, -> { String }, optional: true, nullable: false, api_name: "messageId"
|
|
13
14
|
end
|
|
14
15
|
end
|
|
15
16
|
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pinnacle
|
|
4
|
+
module Types
|
|
5
|
+
# Location data shared by the user.
|
|
6
|
+
class MessageEventRcsLocationDataData < Internal::Types::Model
|
|
7
|
+
field :address, -> { String }, optional: false, nullable: false
|
|
8
|
+
field :latitude, -> { Integer }, optional: false, nullable: false
|
|
9
|
+
field :longitude, -> { Integer }, optional: false, nullable: false
|
|
10
|
+
field :text, -> { String }, optional: true, nullable: false
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -6,7 +6,6 @@ module Pinnacle
|
|
|
6
6
|
#
|
|
7
7
|
# See [supported file types](https://app.pinnacle.sh/supported-file-types?type=RCS-MEDIA).
|
|
8
8
|
class MessageEventRcsMediaContent < Internal::Types::Model
|
|
9
|
-
field :type, -> { String }, optional: false, nullable: false
|
|
10
9
|
field :id, -> { String }, optional: false, nullable: false
|
|
11
10
|
field :media, -> { String }, optional: false, nullable: false
|
|
12
11
|
field :quick_replies, -> { Internal::Types::Array[Pinnacle::Types::RichButton] }, optional: false, nullable: false, api_name: "quickReplies"
|
|
@@ -4,7 +4,6 @@ module Pinnacle
|
|
|
4
4
|
module Types
|
|
5
5
|
# RCS message containing longer text content with optional quick reply buttons.
|
|
6
6
|
class MessageEventRcsTextContent < Internal::Types::Model
|
|
7
|
-
field :type, -> { String }, optional: false, nullable: false
|
|
8
7
|
field :id, -> { String }, optional: false, nullable: false
|
|
9
8
|
field :quick_replies, -> { Internal::Types::Array[Pinnacle::Types::RichButton] }, optional: false, nullable: false, api_name: "quickReplies"
|
|
10
9
|
field :text, -> { String }, optional: false, nullable: false
|
|
@@ -4,7 +4,6 @@ module Pinnacle
|
|
|
4
4
|
module Types
|
|
5
5
|
# SMS message containing plain text only.
|
|
6
6
|
class MessageEventSmsContent < Internal::Types::Model
|
|
7
|
-
field :type, -> { String }, optional: false, nullable: false
|
|
8
7
|
field :id, -> { String }, optional: false, nullable: false
|
|
9
8
|
field :text, -> { String }, optional: false, nullable: false
|
|
10
9
|
end
|
|
@@ -5,6 +5,7 @@ module Pinnacle
|
|
|
5
5
|
class RichCardsMessage < Internal::Types::Model
|
|
6
6
|
field :options, -> { Pinnacle::Types::SendRichCardsOptions }, optional: true, nullable: false
|
|
7
7
|
field :from, -> { String }, optional: false, nullable: false
|
|
8
|
+
field :fallback, -> { Pinnacle::Types::FallbackMessage }, optional: true, nullable: false
|
|
8
9
|
field :to, -> { String }, optional: false, nullable: false
|
|
9
10
|
end
|
|
10
11
|
end
|
data/lib/pinnacle/version.rb
CHANGED
|
@@ -23,14 +23,11 @@ module Pinnacle
|
|
|
23
23
|
# @return [Pinnacle::Types::WebhookResult]
|
|
24
24
|
def get(request_options: {}, **params)
|
|
25
25
|
params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
|
|
26
|
-
body_prop_names = %i[identifiers]
|
|
27
|
-
body_bag = params.slice(*body_prop_names)
|
|
28
|
-
|
|
29
26
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
30
27
|
base_url: request_options[:base_url],
|
|
31
28
|
method: "POST",
|
|
32
29
|
path: "webhooks",
|
|
33
|
-
body: Pinnacle::Webhooks::Types::GetWebhookParams.new(
|
|
30
|
+
body: Pinnacle::Webhooks::Types::GetWebhookParams.new(params).to_h,
|
|
34
31
|
request_options: request_options
|
|
35
32
|
)
|
|
36
33
|
begin
|
data/lib/pinnacle.rb
CHANGED
|
@@ -4,7 +4,6 @@ require "json"
|
|
|
4
4
|
require "net/http"
|
|
5
5
|
require "securerandom"
|
|
6
6
|
|
|
7
|
-
require_relative "pinnacle/version"
|
|
8
7
|
require_relative "pinnacle/internal/json/serializable"
|
|
9
8
|
require_relative "pinnacle/internal/types/type"
|
|
10
9
|
require_relative "pinnacle/internal/types/utils"
|
|
@@ -265,6 +264,7 @@ require_relative "pinnacle/types/location_share_action_data"
|
|
|
265
264
|
require_relative "pinnacle/types/location_share_action"
|
|
266
265
|
require_relative "pinnacle/types/button_clicked"
|
|
267
266
|
require_relative "pinnacle/types/message_content"
|
|
267
|
+
require_relative "pinnacle/types/fallback_message"
|
|
268
268
|
require_relative "pinnacle/types/message_method_enum"
|
|
269
269
|
require_relative "pinnacle/types/message_status_enum"
|
|
270
270
|
require_relative "pinnacle/types/message_protocol_enum"
|
|
@@ -368,11 +368,17 @@ require_relative "pinnacle/types/message_event_rcs_text_content"
|
|
|
368
368
|
require_relative "pinnacle/types/message_event_rcs_media_content"
|
|
369
369
|
require_relative "pinnacle/types/message_event_rcs_cards_content_cards_item"
|
|
370
370
|
require_relative "pinnacle/types/message_event_rcs_cards_content"
|
|
371
|
+
require_relative "pinnacle/types/message_event_rcs_button_data_button_type"
|
|
372
|
+
require_relative "pinnacle/types/message_event_rcs_button_data_button_raw"
|
|
373
|
+
require_relative "pinnacle/types/message_event_rcs_button_data_button"
|
|
371
374
|
require_relative "pinnacle/types/message_event_rcs_button_data"
|
|
375
|
+
require_relative "pinnacle/types/message_event_rcs_location_data_data"
|
|
372
376
|
require_relative "pinnacle/types/message_event_rcs_location_data"
|
|
373
377
|
require_relative "pinnacle/types/message_event_content"
|
|
374
378
|
require_relative "pinnacle/types/message_event_conversation"
|
|
375
379
|
require_relative "pinnacle/types/message_event_direction"
|
|
380
|
+
require_relative "pinnacle/types/message_event_fallback_message_type"
|
|
381
|
+
require_relative "pinnacle/types/message_event_fallback_message"
|
|
376
382
|
require_relative "pinnacle/types/message_event"
|
|
377
383
|
require_relative "pinnacle/types/user_event_conversation"
|
|
378
384
|
require_relative "pinnacle/types/user_event"
|
|
@@ -445,6 +451,3 @@ require_relative "pinnacle/tools/contact_card/client"
|
|
|
445
451
|
require_relative "pinnacle/tools/contact_card/types/get_vcard_params"
|
|
446
452
|
require_relative "pinnacle/tools/contact_card/types/upsert_vcard_params"
|
|
447
453
|
require_relative "pinnacle/environment"
|
|
448
|
-
|
|
449
|
-
# Custom client with enhanced methods (reopens Client class to add process and upload_from_path)
|
|
450
|
-
require_relative "pinnacle/pinnacle_client"
|