whatsapp_sdk 0.7.2 → 0.7.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/.github/workflows/ruby.yml +233 -38
- data/CHANGELOG.md +3 -0
- data/Gemfile.lock +1 -1
- data/README.md +8 -1
- data/example.rb +5 -0
- data/lib/whatsapp_sdk/api/messages.rb +59 -18
- data/lib/whatsapp_sdk/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d38079d66c6380bef5439626decde3a7051629f303308bbdb9d504b7608444c6
|
4
|
+
data.tar.gz: c7eaa83b9edc41a6044f5ddd119e381936edcd1f6c6c5430dd7de29624bb2048
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f545dfd51217c6339a4b9ea423a529a95079b04be5d67e9e27f5b7d26faf0318a321af9391d82f0d10a72a0a3cd666f117d0a6fac3b25393f9cf25b8e0b51de
|
7
|
+
data.tar.gz: 711d449f1358ba11e24e82390d12804771b4402ebf392ff2a4c065682a7222e7e97c139f6ab723d6c8b1102064e86ee4960f40b88575245c01c021911b622502
|
data/.github/workflows/ruby.yml
CHANGED
@@ -1,38 +1,233 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# 1) Copy this code into a file and save it `example.rb`
|
4
|
+
# 2) Replace the `ACCESS_TOKEN` constant with a valid `access_token`.
|
5
|
+
# 3) Run the file with the command `ruby example.rb`
|
6
|
+
|
7
|
+
require 'bundler/inline'
|
8
|
+
|
9
|
+
gemfile(true) do
|
10
|
+
source 'https://rubygems.org'
|
11
|
+
|
12
|
+
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
13
|
+
|
14
|
+
gem "whatsapp_sdk", path: "../"
|
15
|
+
gem "pry"
|
16
|
+
gem "pry-nav"
|
17
|
+
end
|
18
|
+
|
19
|
+
require 'whatsapp_sdk'
|
20
|
+
require "pry"
|
21
|
+
require "pry-nav"
|
22
|
+
|
23
|
+
################# UPDATE CONSTANTS #################
|
24
|
+
|
25
|
+
ACCESS_TOKEN = "EAAZAvvr0DZBs0BAF7pwQ7UEDXxNi0fn471RhslKIc2OCfsHolo2bTjISXbISUzGrUDt4NrgLWmnhiCCXSLUxIPfsBXPJYyXiz5aOpsjyj6GuZBKhM0Sf40NGxVLtgrgZAI0EIpypwwF7W5hQa54WiaZCwoQWZBnfubhvMtF9C67A00CVcI66zGVZAC95CDjfO3hiLSUx87ZCM83DRCOltbFz"
|
26
|
+
SENDER_ID = 111591145018464
|
27
|
+
RECIPIENT_NUMBER = 13437772910
|
28
|
+
BUSINESS_ID = 102261539298487
|
29
|
+
IMAGE_LINK = "<TODO replace>"
|
30
|
+
|
31
|
+
if ACCESS_TOKEN == "<TODO replace>"
|
32
|
+
puts "\n\n**** Please update the ACCESS_TOKEN constant in this file. ****\n\n"
|
33
|
+
exit
|
34
|
+
end
|
35
|
+
|
36
|
+
################# Initialize Client #################
|
37
|
+
WhatsappSdk.configure do |config|
|
38
|
+
config.access_token = ACCESS_TOKEN
|
39
|
+
end
|
40
|
+
|
41
|
+
################# HELPERS ########################
|
42
|
+
def print_message_sent(message_response)
|
43
|
+
if message_response.ok?
|
44
|
+
puts "Message sent to: #{message_response.data.contacts.first.input}"
|
45
|
+
else
|
46
|
+
puts "Error: #{message_response.error&.to_s}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
##################################################
|
50
|
+
|
51
|
+
medias_api = WhatsappSdk::Api::Medias.new
|
52
|
+
messages_api = WhatsappSdk::Api::Messages.new
|
53
|
+
phone_numbers_api = WhatsappSdk::Api::PhoneNumbers.new
|
54
|
+
business_profile_api = WhatsappSdk::Api::BusinessProfile.new
|
55
|
+
binding.pry
|
56
|
+
|
57
|
+
############################## Business API ##############################
|
58
|
+
business_profile = business_profile_api.details(SENDER_ID)
|
59
|
+
business_profile_api.update(phone_number_id: SENDER_ID, params: { about: "A very cool business" } )
|
60
|
+
|
61
|
+
############################## Phone Numbers API ##############################
|
62
|
+
registered_number = phone_numbers_api.registered_number(SENDER_ID)
|
63
|
+
registered_numbers = phone_numbers_api.registered_numbers(BUSINESS_ID)
|
64
|
+
|
65
|
+
############################## Media API ##############################
|
66
|
+
|
67
|
+
# upload a media
|
68
|
+
uploaded_media = medias_api.upload(sender_id: SENDER_ID, file_path: "tmp/whatsapp.png", type: "image/png")
|
69
|
+
media_id = uploaded_media.data&.id
|
70
|
+
puts "Uploaded media id: #{media_id}"
|
71
|
+
|
72
|
+
# get a media
|
73
|
+
media = medias_api.media(media_id: media_id).data
|
74
|
+
puts "Media info: #{media.raw_data_response}"
|
75
|
+
|
76
|
+
# download media
|
77
|
+
download_image = medias_api.download(url: media&.url, file_path: 'tmp/downloaded_whatsapp.png')
|
78
|
+
puts "Downloaded: #{download_image.data.success?}"
|
79
|
+
|
80
|
+
# delete a media
|
81
|
+
deleted_media = medias_api.delete(media_id: media&.id)
|
82
|
+
puts "Deleted: #{deleted_media.data.success?}"
|
83
|
+
|
84
|
+
############################## Messages API ##############################
|
85
|
+
|
86
|
+
######### SEND A TEXT MESSAGE
|
87
|
+
message_sent = messages_api.send_text(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER,
|
88
|
+
message: "Hey there! it's Whatsapp Ruby SDK")
|
89
|
+
print_message_sent(message_sent)
|
90
|
+
|
91
|
+
######### Reply to a message
|
92
|
+
message_to_reply_id = message_sent.data.messages.first.id
|
93
|
+
reply = messages_api.send_text(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, message: "GREAT WORK!!!! I'm a reply", message_id: "wamid.HBgLMTM0Mzc3NzI5MTAVAgARGBI3NzE5MjY4RTA0RDg1MDZFQTEA")
|
94
|
+
print_message_sent(reply)
|
95
|
+
|
96
|
+
######### React to a message
|
97
|
+
message_id = message_sent.data.messages.first.id
|
98
|
+
messages_api.send_reaction(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, message_id: message_id, emoji: "\u{1f550}")
|
99
|
+
messages_api.send_reaction(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, message_id: message_id, emoji: "⛄️")
|
100
|
+
|
101
|
+
######### Send location
|
102
|
+
location_sent = messages_api.send_location(
|
103
|
+
sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER,
|
104
|
+
longitude: -75.6898604, latitude: 45.4192206, name: "Ignacio", address: "My house"
|
105
|
+
)
|
106
|
+
print_message_sent(location_sent)
|
107
|
+
|
108
|
+
######### READ A MESSAGE
|
109
|
+
# messages_api.read_message(sender_id: SENDER_ID, message_id: msg_id)
|
110
|
+
|
111
|
+
######### SEND AN IMAGE
|
112
|
+
# Send an image with a link
|
113
|
+
image_sent = messages_api.send_image(
|
114
|
+
sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, link: media.url, caption: "Ignacio Chiazzo Profile"
|
115
|
+
)
|
116
|
+
print_message_sent(image_sent)
|
117
|
+
|
118
|
+
# Send an image with an id
|
119
|
+
messages_api.send_image(
|
120
|
+
sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, image_id: media.id, caption: "Ignacio Chiazzo Profile"
|
121
|
+
)
|
122
|
+
|
123
|
+
######### SEND AUDIOS
|
124
|
+
## with a link
|
125
|
+
messages_api.send_audio(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, link: "audio_link")
|
126
|
+
|
127
|
+
## with an audio id
|
128
|
+
messages_api.send_audio(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, audio_id: "1234")
|
129
|
+
|
130
|
+
######### SEND DOCUMENTS
|
131
|
+
## with a link
|
132
|
+
messages_api.send_document(
|
133
|
+
sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, link: "document_link", caption: "Ignacio Chiazzo"
|
134
|
+
)
|
135
|
+
|
136
|
+
## with a document id
|
137
|
+
messages_api.send_document(
|
138
|
+
sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, document_id: "1234", caption: "Ignacio Chiazzo"
|
139
|
+
)
|
140
|
+
|
141
|
+
######### SEND STICKERS
|
142
|
+
## with a link
|
143
|
+
messages_api.send_sticker(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, link: "link")
|
144
|
+
|
145
|
+
## with a sticker_id
|
146
|
+
messages_api.send_sticker(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, sticker_id: "1234")
|
147
|
+
|
148
|
+
######### SEND A TEMPLATE
|
149
|
+
# Note: The template must have been created previously.
|
150
|
+
|
151
|
+
# Send a template with no component
|
152
|
+
response_with_object = messages_api.send_template(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER,
|
153
|
+
name: "hello_world", language: "en_US", components: [])
|
154
|
+
puts response_with_object
|
155
|
+
|
156
|
+
# Send a template with components.Remember to create the template first.
|
157
|
+
header_component = WhatsappSdk::Resource::Component.new(
|
158
|
+
type: WhatsappSdk::Resource::Component::Type::Header
|
159
|
+
)
|
160
|
+
|
161
|
+
image = WhatsappSdk::Resource::Media.new(type: "image", link: "http(s)://URL", caption: "caption")
|
162
|
+
document = WhatsappSdk::Resource::Media.new(type: "document", link: "http(s)://URL", filename: "txt.rb")
|
163
|
+
video = WhatsappSdk::Resource::Media.new(type: "video", id: "123")
|
164
|
+
|
165
|
+
parameter_image = WhatsappSdk::Resource::ParameterObject.new(
|
166
|
+
type: "image",
|
167
|
+
image: image
|
168
|
+
)
|
169
|
+
|
170
|
+
parameter_document = WhatsappSdk::Resource::ParameterObject.new(
|
171
|
+
type: "document",
|
172
|
+
document: document
|
173
|
+
)
|
174
|
+
|
175
|
+
parameter_video = WhatsappSdk::Resource::ParameterObject.new(
|
176
|
+
type: "video",
|
177
|
+
video: video
|
178
|
+
)
|
179
|
+
|
180
|
+
parameter_text = WhatsappSdk::Resource::ParameterObject.new(
|
181
|
+
type: "text",
|
182
|
+
text: "I am a text"
|
183
|
+
)
|
184
|
+
|
185
|
+
header_component.add_parameter(parameter_text)
|
186
|
+
header_component.add_parameter(parameter_image)
|
187
|
+
header_component.add_parameter(parameter_video)
|
188
|
+
header_component.add_parameter(parameter_document)
|
189
|
+
header_component.to_json
|
190
|
+
|
191
|
+
body_component = WhatsappSdk::Resource::Component.new(
|
192
|
+
type: WhatsappSdk::Resource::Component::Type::Body
|
193
|
+
)
|
194
|
+
body_component.add_parameter(parameter_text)
|
195
|
+
body_component.add_parameter(parameter_image)
|
196
|
+
body_component.add_parameter(parameter_video)
|
197
|
+
body_component.add_parameter(parameter_document)
|
198
|
+
body_component.to_json
|
199
|
+
|
200
|
+
button_component_1 = WhatsappSdk::Resource::Component.new(
|
201
|
+
type: WhatsappSdk::Resource::Component::Type::Button,
|
202
|
+
index: 0,
|
203
|
+
sub_type: WhatsappSdk::Resource::Component::Subtype::QuickReply,
|
204
|
+
parameters: [WhatsappSdk::Resource::ButtonParameter.new(type: WhatsappSdk::Resource::ButtonParameter::Type::Payload,
|
205
|
+
payload: "payload")]
|
206
|
+
)
|
207
|
+
|
208
|
+
button_component_2 = WhatsappSdk::Resource::Component.new(
|
209
|
+
type: WhatsappSdk::Resource::Component::Type::Button,
|
210
|
+
index: 1,
|
211
|
+
sub_type: WhatsappSdk::Resource::Component::Subtype::QuickReply,
|
212
|
+
parameters: [WhatsappSdk::Resource::ButtonParameter.new(type: WhatsappSdk::Resource::ButtonParameter::Type::Payload,
|
213
|
+
payload: "payload")]
|
214
|
+
)
|
215
|
+
|
216
|
+
# Send a template with component_json
|
217
|
+
response_with_json = messages_api.send_template(
|
218
|
+
sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, name: "hello_world", language: "en_US",
|
219
|
+
components_json: [
|
220
|
+
{
|
221
|
+
"type" => "header",
|
222
|
+
"parameters" => [
|
223
|
+
{
|
224
|
+
"type" => "image",
|
225
|
+
"image" => {
|
226
|
+
"link" => "https://www.google.com/imgres?imgurl=https%3A%2F%2Fqph.cf2.quoracdn.net%2Fmain-qimg-6d977408fdd90a09a1fee7ba9e2f777c-lq&imgrefurl=https%3A%2F%2Fwww.quora.com%2FHow-can-I-find-my-WhatsApp-ID&tbnid=lDAx1vzXwqCakM&vet=12ahUKEwjKupLviJX4AhVrrHIEHQpGD9MQMygAegUIARC9AQ..i&docid=s-DNQVCrZmhJYM&w=602&h=339&q=example%20whatsapp%20image%20id&ved=2ahUKEwjKupLviJX4AhVrrHIEHQpGD9MQMygAegUIARC9AQ"
|
227
|
+
}
|
228
|
+
}
|
229
|
+
]
|
230
|
+
}
|
231
|
+
]
|
232
|
+
)
|
233
|
+
puts response_with_json
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Unreleased
|
2
2
|
|
3
|
+
# v 0.7.3
|
4
|
+
- Added the ability to reply messages. @alienware [#77](https://github.com/ignacio-chiazzo/ruby_whatsapp_sdk/pull/77)
|
5
|
+
|
3
6
|
# v 0.7.2
|
4
7
|
- Added new fields to phone numbers API. @ignacio-chiazzo [#73](https://github.com/ignacio-chiazzo/ruby_whatsapp_sdk/pull/73)
|
5
8
|
- Upgraded API version to v16. @ignacio-chiazzo [#73](https://github.com/ignacio-chiazzo/ruby_whatsapp_sdk/pull/73)
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
<a href="https://codeclimate.com/github/ignacio-chiazzo/ruby_whatsapp_sdk/maintainability"><img src="https://api.codeclimate.com/v1/badges/169cce95450272e4ad7d/maintainability" /></a>
|
5
5
|
|
6
6
|
The SDK provides a set of operations and classes to use the Whatsapp API.
|
7
|
-
Send stickers, messages, audio, videos, locations, react to messages or just ask for the phone numbers through this library in a few steps!
|
7
|
+
Send stickers, messages, audio, videos, locations, react and reply to messages or just ask for the phone numbers through this library in a few steps!
|
8
8
|
|
9
9
|
|
10
10
|
## Demo
|
@@ -218,6 +218,13 @@ messages_api.send_reaction(sender_id: 123_123, recipient_number: 56_789, message
|
|
218
218
|
messages_api.send_reaction(sender_id: 123_123, recipient_number: 56_789, message_id: "12345", emoji: "⛄️")
|
219
219
|
```
|
220
220
|
|
221
|
+
**Reply to a message**
|
222
|
+
To reply to a message, just include the id of the message in the `messages_api` methods. For example, to reply to a text message include the following:
|
223
|
+
|
224
|
+
```ruby
|
225
|
+
messages_api.send_text(sender_id: 123_123, recipient_number: 56_789, message: "I'm a reply", message_id: "wamid.1234")
|
226
|
+
```
|
227
|
+
|
221
228
|
**Send a location message**
|
222
229
|
|
223
230
|
```ruby
|
data/example.rb
CHANGED
@@ -92,6 +92,11 @@ message_id = message_sent.data.messages.first.id
|
|
92
92
|
messages_api.send_reaction(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, message_id: message_id, emoji: "\u{1f550}")
|
93
93
|
messages_api.send_reaction(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, message_id: message_id, emoji: "⛄️")
|
94
94
|
|
95
|
+
######### Reply to a message
|
96
|
+
message_to_reply_id = message_sent.data.messages.first.id
|
97
|
+
reply = messages_api.send_text(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, message: "GREAT WORK!!!! I'm a reply", message_id: message_to_reply_id)
|
98
|
+
print_message_sent(reply)
|
99
|
+
|
95
100
|
######### Send location
|
96
101
|
location_sent = messages_api.send_location(
|
97
102
|
sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER,
|
@@ -29,9 +29,15 @@ module WhatsappSdk
|
|
29
29
|
# @param sender_id [Integer] Sender' phone number.
|
30
30
|
# @param recipient_number [Integer] Recipient' Phone number.
|
31
31
|
# @param message [String] Text to send.
|
32
|
+
# @param message_id [String] The id of the message to reply to.
|
32
33
|
# @return [WhatsappSdk::Api::Response] Response object.
|
33
|
-
sig
|
34
|
-
|
34
|
+
sig do
|
35
|
+
params(
|
36
|
+
sender_id: Integer, recipient_number: Integer, message: String,
|
37
|
+
message_id: T.nilable(String)
|
38
|
+
).returns(WhatsappSdk::Api::Response)
|
39
|
+
end
|
40
|
+
def send_text(sender_id:, recipient_number:, message:, message_id: nil)
|
35
41
|
params = {
|
36
42
|
messaging_product: "whatsapp",
|
37
43
|
to: recipient_number,
|
@@ -39,6 +45,7 @@ module WhatsappSdk
|
|
39
45
|
type: "text",
|
40
46
|
text: { body: message }
|
41
47
|
}
|
48
|
+
params[:context] = { message_id: message_id } if message_id
|
42
49
|
|
43
50
|
response = send_request(
|
44
51
|
endpoint: endpoint(sender_id),
|
@@ -60,14 +67,18 @@ module WhatsappSdk
|
|
60
67
|
# @param latitude [Float] Location latitude.
|
61
68
|
# @param name [String] Location name.
|
62
69
|
# @param address [String] Location address.
|
70
|
+
# @param message_id [String] The id of the message to reply to.
|
63
71
|
# @return [WhatsappSdk::Api::Response] Response object.
|
64
72
|
sig do
|
65
73
|
params(
|
66
74
|
sender_id: Integer, recipient_number: Integer,
|
67
|
-
longitude: Float, latitude: Float, name: String, address: String
|
75
|
+
longitude: Float, latitude: Float, name: String, address: String,
|
76
|
+
message_id: T.nilable(String)
|
68
77
|
).returns(WhatsappSdk::Api::Response)
|
69
78
|
end
|
70
|
-
def send_location(
|
79
|
+
def send_location(
|
80
|
+
sender_id:, recipient_number:, longitude:, latitude:, name:, address:, message_id: nil
|
81
|
+
)
|
71
82
|
params = {
|
72
83
|
messaging_product: "whatsapp",
|
73
84
|
to: recipient_number,
|
@@ -80,6 +91,7 @@ module WhatsappSdk
|
|
80
91
|
address: address
|
81
92
|
}
|
82
93
|
}
|
94
|
+
params[:context] = { message_id: message_id } if message_id
|
83
95
|
|
84
96
|
response = send_request(
|
85
97
|
endpoint: endpoint(sender_id),
|
@@ -100,14 +112,18 @@ module WhatsappSdk
|
|
100
112
|
# @param image_id [String] Image ID.
|
101
113
|
# @param link [String] Image link.
|
102
114
|
# @param caption [String] Image caption.
|
115
|
+
# @param message_id [String] The id of the message to reply to.
|
103
116
|
# @return [WhatsappSdk::Api::Response] Response object.
|
104
117
|
sig do
|
105
118
|
params(
|
106
119
|
sender_id: Integer, recipient_number: Integer, image_id: T.nilable(String),
|
107
|
-
link: T.nilable(String), caption: T.nilable(String)
|
120
|
+
link: T.nilable(String), caption: T.nilable(String),
|
121
|
+
message_id: T.nilable(String)
|
108
122
|
).returns(WhatsappSdk::Api::Response)
|
109
123
|
end
|
110
|
-
def send_image(
|
124
|
+
def send_image(
|
125
|
+
sender_id:, recipient_number:, image_id: nil, link: nil, caption: "", message_id: nil
|
126
|
+
)
|
111
127
|
raise MissingArgumentError, "image_id or link is required" if !image_id && !link
|
112
128
|
|
113
129
|
params = {
|
@@ -121,6 +137,7 @@ module WhatsappSdk
|
|
121
137
|
else
|
122
138
|
{ id: image_id, caption: caption }
|
123
139
|
end
|
140
|
+
params[:context] = { message_id: message_id } if message_id
|
124
141
|
|
125
142
|
response = send_request(
|
126
143
|
endpoint: endpoint(sender_id),
|
@@ -140,13 +157,15 @@ module WhatsappSdk
|
|
140
157
|
# @param recipient_number [Integer] Recipient' Phone number.
|
141
158
|
# @param audio_id [String] Audio ID.
|
142
159
|
# @param link [String] Audio link.
|
160
|
+
# @param message_id [String] The id of the message to reply to.
|
143
161
|
# @return [WhatsappSdk::Api::Response] Response object.
|
144
162
|
sig do
|
145
163
|
params(
|
146
|
-
sender_id: Integer, recipient_number: Integer, audio_id: T.nilable(String),
|
164
|
+
sender_id: Integer, recipient_number: Integer, audio_id: T.nilable(String),
|
165
|
+
link: T.nilable(String), message_id: T.nilable(String)
|
147
166
|
).returns(WhatsappSdk::Api::Response)
|
148
167
|
end
|
149
|
-
def send_audio(sender_id:, recipient_number:, audio_id: nil, link: nil)
|
168
|
+
def send_audio(sender_id:, recipient_number:, audio_id: nil, link: nil, message_id: nil)
|
150
169
|
raise MissingArgumentError, "audio_id or link is required" if !audio_id && !link
|
151
170
|
|
152
171
|
params = {
|
@@ -156,6 +175,7 @@ module WhatsappSdk
|
|
156
175
|
type: "audio"
|
157
176
|
}
|
158
177
|
params[:audio] = link ? { link: link } : { id: audio_id }
|
178
|
+
params[:context] = { message_id: message_id } if message_id
|
159
179
|
|
160
180
|
response = send_request(
|
161
181
|
endpoint: endpoint(sender_id),
|
@@ -176,14 +196,18 @@ module WhatsappSdk
|
|
176
196
|
# @param video_id [String] Video ID.
|
177
197
|
# @param link [String] Image link.
|
178
198
|
# @param caption [String] Image caption.
|
199
|
+
# @param message_id [String] The id of the message to reply to.
|
179
200
|
# @return [WhatsappSdk::Api::Response] Response object.
|
180
201
|
sig do
|
181
202
|
params(
|
182
203
|
sender_id: Integer, recipient_number: Integer,
|
183
|
-
video_id: T.nilable(String), link: T.nilable(String), caption: String
|
204
|
+
video_id: T.nilable(String), link: T.nilable(String), caption: String,
|
205
|
+
message_id: T.nilable(String)
|
184
206
|
).returns(WhatsappSdk::Api::Response)
|
185
207
|
end
|
186
|
-
def send_video(
|
208
|
+
def send_video(
|
209
|
+
sender_id:, recipient_number:, video_id: nil, link: nil, caption: "", message_id: nil
|
210
|
+
)
|
187
211
|
raise MissingArgumentError, "video_id or link is required" if !video_id && !link
|
188
212
|
|
189
213
|
params = {
|
@@ -197,6 +221,7 @@ module WhatsappSdk
|
|
197
221
|
else
|
198
222
|
{ id: video_id, caption: caption }
|
199
223
|
end
|
224
|
+
params[:context] = { message_id: message_id } if message_id
|
200
225
|
|
201
226
|
response = send_request(
|
202
227
|
endpoint: endpoint(sender_id),
|
@@ -217,14 +242,18 @@ module WhatsappSdk
|
|
217
242
|
# @param document_id [String] document ID.
|
218
243
|
# @param link [String] Image link.
|
219
244
|
# @param caption [String] Image caption.
|
245
|
+
# @param message_id [String] The id of the message to reply to.
|
220
246
|
# @return [WhatsappSdk::Api::Response] Response object.
|
221
247
|
sig do
|
222
248
|
params(
|
223
249
|
sender_id: Integer, recipient_number: Integer,
|
224
|
-
document_id: T.nilable(String), link: T.nilable(String), caption: String
|
250
|
+
document_id: T.nilable(String), link: T.nilable(String), caption: String,
|
251
|
+
message_id: T.nilable(String)
|
225
252
|
).returns(WhatsappSdk::Api::Response)
|
226
253
|
end
|
227
|
-
def send_document(
|
254
|
+
def send_document(
|
255
|
+
sender_id:, recipient_number:, document_id: nil, link: nil, caption: "", message_id: nil
|
256
|
+
)
|
228
257
|
raise MissingArgumentError, "document or link is required" if !document_id && !link
|
229
258
|
|
230
259
|
params = {
|
@@ -238,6 +267,7 @@ module WhatsappSdk
|
|
238
267
|
else
|
239
268
|
{ id: document_id, caption: caption }
|
240
269
|
end
|
270
|
+
params[:context] = { message_id: message_id } if message_id
|
241
271
|
|
242
272
|
response = send_request(
|
243
273
|
endpoint: endpoint(sender_id),
|
@@ -257,13 +287,15 @@ module WhatsappSdk
|
|
257
287
|
# @param recipient_number [Integer] Recipient' Phone number.
|
258
288
|
# @param sticker_id [String] The sticker ID.
|
259
289
|
# @param link [String] Image link.
|
290
|
+
# @param message_id [String] The id of the message to reply to.
|
260
291
|
# @return [WhatsappSdk::Api::Response] Response object.
|
261
292
|
sig do
|
262
293
|
params(
|
263
|
-
sender_id: Integer, recipient_number: Integer, sticker_id: T.nilable(String),
|
294
|
+
sender_id: Integer, recipient_number: Integer, sticker_id: T.nilable(String),
|
295
|
+
link: T.nilable(String), message_id: T.nilable(String)
|
264
296
|
).returns(WhatsappSdk::Api::Response)
|
265
297
|
end
|
266
|
-
def send_sticker(sender_id:, recipient_number:, sticker_id: nil, link: nil)
|
298
|
+
def send_sticker(sender_id:, recipient_number:, sticker_id: nil, link: nil, message_id: nil)
|
267
299
|
raise MissingArgumentError, "sticker or link is required" if !sticker_id && !link
|
268
300
|
|
269
301
|
params = {
|
@@ -273,6 +305,7 @@ module WhatsappSdk
|
|
273
305
|
type: Resource::Media::Type::Sticker
|
274
306
|
}
|
275
307
|
params[:sticker] = link ? { link: link } : { id: sticker_id }
|
308
|
+
params[:context] = { message_id: message_id } if message_id
|
276
309
|
|
277
310
|
response = send_request(
|
278
311
|
endpoint: endpoint(sender_id),
|
@@ -293,14 +326,18 @@ module WhatsappSdk
|
|
293
326
|
# @param recipient_number [Integer] Recipient' Phone number.
|
294
327
|
# @param contacts [Array<Contact>] Contacts.
|
295
328
|
# @param contacts_json [Json] Contacts.
|
329
|
+
# @param message_id [String] The id of the message to reply to.
|
296
330
|
# @return [WhatsappSdk::Api::Response] Response object.
|
297
331
|
sig do
|
298
332
|
params(
|
299
333
|
sender_id: Integer, recipient_number: Integer,
|
300
|
-
contacts: T.nilable(T::Array[WhatsappSdk::Resource::Contact]),
|
334
|
+
contacts: T.nilable(T::Array[WhatsappSdk::Resource::Contact]),
|
335
|
+
contacts_json: T::Hash[T.untyped, T.untyped], message_id: T.nilable(String)
|
301
336
|
).returns(WhatsappSdk::Api::Response)
|
302
337
|
end
|
303
|
-
def send_contacts(
|
338
|
+
def send_contacts(
|
339
|
+
sender_id:, recipient_number:, contacts: nil, contacts_json: {}, message_id: nil
|
340
|
+
)
|
304
341
|
params = {
|
305
342
|
messaging_product: "whatsapp",
|
306
343
|
to: recipient_number,
|
@@ -308,6 +345,7 @@ module WhatsappSdk
|
|
308
345
|
type: "contacts"
|
309
346
|
}
|
310
347
|
params[:contacts] = contacts ? contacts.map(&:to_h) : contacts_json
|
348
|
+
params[:context] = { message_id: message_id } if message_id
|
311
349
|
|
312
350
|
response = send_request(
|
313
351
|
endpoint: endpoint(sender_id),
|
@@ -374,7 +412,9 @@ module WhatsappSdk
|
|
374
412
|
components_json: T.nilable(T::Array[T::Hash[T.untyped, T.untyped]])
|
375
413
|
).returns(WhatsappSdk::Api::Response)
|
376
414
|
end
|
377
|
-
def send_template(
|
415
|
+
def send_template(
|
416
|
+
sender_id:, recipient_number:, name:, language:, components: nil, components_json: nil
|
417
|
+
)
|
378
418
|
raise MissingArgumentError, "components or components_json is required" if !components && !components_json
|
379
419
|
|
380
420
|
params = {
|
@@ -415,7 +455,8 @@ module WhatsappSdk
|
|
415
455
|
# @return [WhatsappSdk::Api::Response] Response object.
|
416
456
|
sig do
|
417
457
|
params(
|
418
|
-
sender_id: Integer, recipient_number: Integer, message_id: String,
|
458
|
+
sender_id: Integer, recipient_number: Integer, message_id: String,
|
459
|
+
emoji: T.any(String, Integer)
|
419
460
|
).returns(WhatsappSdk::Api::Response)
|
420
461
|
end
|
421
462
|
def send_reaction(sender_id:, recipient_number:, message_id:, emoji:)
|
data/lib/whatsapp_sdk/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: whatsapp_sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ignacio-chiazzo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-02-
|
11
|
+
date: 2023-02-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|