ruby-whatsapp 0.4.2 → 0.6.1
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/CHANGELOG.md +143 -0
- data/README.md +70 -7
- data/docs/README.md +4 -1
- data/docs/business_phone_number/README.md +12 -1
- data/docs/business_phone_number/contact_book.md +90 -0
- data/docs/business_phone_number/username.md +157 -0
- data/docs/configuration.md +6 -1
- data/docs/errors.md +12 -1
- data/docs/message_templates/README.md +1 -1
- data/docs/message_templates/components.md +37 -1
- data/docs/messages/README.md +86 -9
- data/docs/messages/address.md +1 -1
- data/docs/messages/audio.md +1 -1
- data/docs/messages/contacts.md +1 -1
- data/docs/messages/document.md +1 -1
- data/docs/messages/image.md +1 -1
- data/docs/messages/interactive.md +64 -3
- data/docs/messages/location.md +1 -1
- data/docs/messages/location_request.md +1 -1
- data/docs/messages/reaction.md +1 -1
- data/docs/messages/sticker.md +1 -1
- data/docs/messages/template.md +28 -1
- data/docs/messages/text.md +1 -1
- data/docs/messages/video.md +1 -1
- data/docs/schedule/README.md +183 -0
- data/docs/webhooks/README.md +20 -12
- data/docs/webhooks/business_username_updates.md +55 -0
- data/docs/webhooks/history.md +78 -15
- data/docs/webhooks/messages.md +141 -6
- data/docs/webhooks/smb_app_state_sync.md +50 -12
- data/docs/webhooks/smb_message_echoes.md +58 -21
- data/docs/webhooks/user_id_update.md +84 -0
- data/docs/webhooks/user_preferences.md +55 -16
- data/lib/ruby/whatsapp/business_phone_number/contact_book/delete.rb +87 -0
- data/lib/ruby/whatsapp/business_phone_number/contact_book/deletion.rb +50 -0
- data/lib/ruby/whatsapp/business_phone_number/contact_book.rb +25 -0
- data/lib/ruby/whatsapp/business_phone_number/transport.rb +6 -5
- data/lib/ruby/whatsapp/business_phone_number/username/claim.rb +180 -0
- data/lib/ruby/whatsapp/business_phone_number/username/delete.rb +36 -0
- data/lib/ruby/whatsapp/business_phone_number/username/details.rb +66 -0
- data/lib/ruby/whatsapp/business_phone_number/username/get.rb +33 -0
- data/lib/ruby/whatsapp/business_phone_number/username/suggest.rb +37 -0
- data/lib/ruby/whatsapp/business_phone_number/username/suggestions.rb +50 -0
- data/lib/ruby/whatsapp/business_phone_number/username.rb +27 -0
- data/lib/ruby/whatsapp/business_phone_number.rb +9 -0
- data/lib/ruby/whatsapp/message_templates/button/request_contact_info.rb +66 -0
- data/lib/ruby/whatsapp/message_templates/button.rb +5 -2
- data/lib/ruby/whatsapp/message_templates/component_set.rb +28 -0
- data/lib/ruby/whatsapp/message_templates/response/paging.rb +2 -1
- data/lib/ruby/whatsapp/messages/base.rb +47 -5
- data/lib/ruby/whatsapp/messages/interactive/request_contact_info.rb +59 -0
- data/lib/ruby/whatsapp/messages/interactive.rb +22 -4
- data/lib/ruby/whatsapp/messages/response/contacts.rb +22 -5
- data/lib/ruby/whatsapp/schedule/create.rb +101 -0
- data/lib/ruby/whatsapp/schedule/list.rb +50 -0
- data/lib/ruby/whatsapp/schedule/response/collection.rb +61 -0
- data/lib/ruby/whatsapp/schedule/response/created.rb +30 -0
- data/lib/ruby/whatsapp/schedule/response/node.rb +85 -0
- data/lib/ruby/whatsapp/schedule/response.rb +18 -0
- data/lib/ruby/whatsapp/schedule/statuses.rb +19 -0
- data/lib/ruby/whatsapp/schedule/transport.rb +24 -0
- data/lib/ruby/whatsapp/schedule.rb +15 -0
- data/lib/ruby/whatsapp/version.rb +1 -1
- data/lib/ruby/whatsapp/webhook/business_username_updates.rb +51 -0
- data/lib/ruby/whatsapp/webhook/change.rb +3 -1
- data/lib/ruby/whatsapp/webhook/contact.rb +26 -3
- data/lib/ruby/whatsapp/webhook/history/chunk.rb +50 -0
- data/lib/ruby/whatsapp/webhook/history/thread.rb +64 -0
- data/lib/ruby/whatsapp/webhook/history.rb +73 -34
- data/lib/ruby/whatsapp/webhook/message/base.rb +27 -2
- data/lib/ruby/whatsapp/webhook/message/contacts/contact.rb +15 -2
- data/lib/ruby/whatsapp/webhook/message/context.rb +23 -2
- data/lib/ruby/whatsapp/webhook/message/edit.rb +50 -0
- data/lib/ruby/whatsapp/webhook/message/revoke.rb +36 -0
- data/lib/ruby/whatsapp/webhook/message/system.rb +19 -2
- data/lib/ruby/whatsapp/webhook/message/unknown.rb +2 -2
- data/lib/ruby/whatsapp/webhook/message.rb +3 -0
- data/lib/ruby/whatsapp/webhook/messages.rb +4 -3
- data/lib/ruby/whatsapp/webhook/smb_app_state_sync/contact.rb +76 -0
- data/lib/ruby/whatsapp/webhook/smb_app_state_sync/state_sync.rb +18 -4
- data/lib/ruby/whatsapp/webhook/smb_app_state_sync.rb +33 -9
- data/lib/ruby/whatsapp/webhook/smb_message_echoes/echo.rb +60 -0
- data/lib/ruby/whatsapp/webhook/smb_message_echoes.rb +26 -11
- data/lib/ruby/whatsapp/webhook/status.rb +23 -2
- data/lib/ruby/whatsapp/webhook/user_id_update/entry.rb +56 -0
- data/lib/ruby/whatsapp/webhook/user_id_update/id_change.rb +35 -0
- data/lib/ruby/whatsapp/webhook/user_id_update.rb +61 -0
- data/lib/ruby/whatsapp/webhook/user_preferences/entry.rb +76 -0
- data/lib/ruby/whatsapp/webhook/user_preferences.rb +44 -23
- metadata +38 -1
|
@@ -3,43 +3,64 @@
|
|
|
3
3
|
module Whatsapp
|
|
4
4
|
module Webhook
|
|
5
5
|
# User marketing message preference changes (e.g. a customer opting out of
|
|
6
|
-
# marketing messages)
|
|
6
|
+
# marketing messages) — one of the fields with a confirmed, JSON-example-backed
|
|
7
|
+
# schema, alongside {Messages}, {UserIdUpdate}, and {BusinessUsernameUpdates}.
|
|
7
8
|
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
# Source: https://developers.facebook.com/documentation/business-messaging/whatsapp/
|
|
9
|
+
# Structurally identical to {UserIdUpdate}: the value carries the notification's
|
|
10
|
+
# own identity (`messaging_product`, `metadata`, `contacts`) plus an array of
|
|
11
|
+
# entries nested under a repeat of the field's own name.
|
|
12
|
+
# Source: https://developers.facebook.com/documentation/business-messaging/whatsapp/business-scoped-user-ids
|
|
12
13
|
class UserPreferences
|
|
13
|
-
# @!attribute [rw]
|
|
14
|
+
# @!attribute [rw] messaging_product
|
|
14
15
|
# @return [String, nil]
|
|
15
|
-
attr_accessor :
|
|
16
|
+
attr_accessor :messaging_product
|
|
16
17
|
|
|
17
|
-
# @!attribute [rw]
|
|
18
|
-
# @return [
|
|
19
|
-
attr_accessor :
|
|
18
|
+
# @!attribute [rw] metadata
|
|
19
|
+
# @return [Metadata, nil]
|
|
20
|
+
attr_accessor :metadata
|
|
20
21
|
|
|
21
|
-
# @!attribute [rw]
|
|
22
|
-
# @return [
|
|
23
|
-
|
|
22
|
+
# @!attribute [rw] contacts
|
|
23
|
+
# @return [Array<Contact>] The users whose preferences changed, carrying the same
|
|
24
|
+
# BSUID identifiers as every other `contacts[]` entry — which is how a
|
|
25
|
+
# username-adopted user is identifiable here at all once their phone number
|
|
26
|
+
# stops being shared.
|
|
27
|
+
attr_accessor :contacts
|
|
24
28
|
|
|
25
|
-
# @!attribute [rw]
|
|
26
|
-
# @return [
|
|
27
|
-
attr_accessor :
|
|
29
|
+
# @!attribute [rw] preferences
|
|
30
|
+
# @return [Array<Entry>]
|
|
31
|
+
attr_accessor :preferences
|
|
32
|
+
|
|
33
|
+
# @!attribute [r] raw
|
|
34
|
+
# @return [Hash] The untouched `value` hash. A diagnostic escape hatch, not part
|
|
35
|
+
# of the supported API: {#preferences} reads `value["user_preferences"]` —
|
|
36
|
+
# entries nested under a repeat of the field's own name, which is what Meta's
|
|
37
|
+
# published example shows — so a key that drifts would otherwise leave
|
|
38
|
+
# `preferences` empty with no other trace. Reach for it when a typed accessor is
|
|
39
|
+
# unexpectedly `nil`, log what you find, and treat it as read-only: it is the
|
|
40
|
+
# object `JSON.parse` returned, not a copy.
|
|
41
|
+
attr_reader :raw
|
|
28
42
|
|
|
29
|
-
def initialize(
|
|
30
|
-
@
|
|
31
|
-
@
|
|
32
|
-
@
|
|
33
|
-
@
|
|
43
|
+
def initialize(messaging_product:, metadata:, contacts:, preferences:, raw: {})
|
|
44
|
+
@messaging_product = messaging_product
|
|
45
|
+
@metadata = metadata
|
|
46
|
+
@contacts = contacts
|
|
47
|
+
@preferences = preferences
|
|
48
|
+
@raw = raw
|
|
34
49
|
end
|
|
35
50
|
|
|
36
51
|
class << self
|
|
37
|
-
# @param data [Hash] The raw `value` hash.
|
|
52
|
+
# @param data [Hash] The raw `user_preferences` field's `value` hash.
|
|
38
53
|
# @return [UserPreferences]
|
|
39
54
|
def deserialize(data)
|
|
40
55
|
data ||= {}
|
|
41
56
|
|
|
42
|
-
new(
|
|
57
|
+
new(
|
|
58
|
+
messaging_product: data["messaging_product"],
|
|
59
|
+
metadata: data["metadata"] ? Metadata.deserialize(data["metadata"]) : nil,
|
|
60
|
+
contacts: Array(data["contacts"]).map { |contact_data| Contact.deserialize(contact_data) },
|
|
61
|
+
preferences: Array(data["user_preferences"]).map { |entry_data| Entry.deserialize(entry_data) },
|
|
62
|
+
raw: data
|
|
63
|
+
)
|
|
43
64
|
end
|
|
44
65
|
end
|
|
45
66
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ruby-whatsapp
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Raniery
|
|
@@ -85,7 +85,9 @@ files:
|
|
|
85
85
|
- docs/README.md
|
|
86
86
|
- docs/business_phone_number/README.md
|
|
87
87
|
- docs/business_phone_number/account.md
|
|
88
|
+
- docs/business_phone_number/contact_book.md
|
|
88
89
|
- docs/business_phone_number/profile.md
|
|
90
|
+
- docs/business_phone_number/username.md
|
|
89
91
|
- docs/configuration.md
|
|
90
92
|
- docs/errors.md
|
|
91
93
|
- docs/media/README.md
|
|
@@ -112,6 +114,7 @@ files:
|
|
|
112
114
|
- docs/messages/template.md
|
|
113
115
|
- docs/messages/text.md
|
|
114
116
|
- docs/messages/video.md
|
|
117
|
+
- docs/schedule/README.md
|
|
115
118
|
- docs/subscribed_app/README.md
|
|
116
119
|
- docs/webhooks/README.md
|
|
117
120
|
- docs/webhooks/account_alerts.md
|
|
@@ -119,6 +122,7 @@ files:
|
|
|
119
122
|
- docs/webhooks/account_update.md
|
|
120
123
|
- docs/webhooks/automatic_events.md
|
|
121
124
|
- docs/webhooks/business_capability_update.md
|
|
125
|
+
- docs/webhooks/business_username_updates.md
|
|
122
126
|
- docs/webhooks/history.md
|
|
123
127
|
- docs/webhooks/message_template_components_update.md
|
|
124
128
|
- docs/webhooks/message_template_quality_update.md
|
|
@@ -132,6 +136,7 @@ files:
|
|
|
132
136
|
- docs/webhooks/smb_app_state_sync.md
|
|
133
137
|
- docs/webhooks/smb_message_echoes.md
|
|
134
138
|
- docs/webhooks/template_category_update.md
|
|
139
|
+
- docs/webhooks/user_id_update.md
|
|
135
140
|
- docs/webhooks/user_preferences.md
|
|
136
141
|
- lib/ruby/whatsapp.rb
|
|
137
142
|
- lib/ruby/whatsapp/business_phone_number.rb
|
|
@@ -140,6 +145,9 @@ files:
|
|
|
140
145
|
- lib/ruby/whatsapp/business_phone_number/account/get.rb
|
|
141
146
|
- lib/ruby/whatsapp/business_phone_number/account/transport.rb
|
|
142
147
|
- lib/ruby/whatsapp/business_phone_number/account/update.rb
|
|
148
|
+
- lib/ruby/whatsapp/business_phone_number/contact_book.rb
|
|
149
|
+
- lib/ruby/whatsapp/business_phone_number/contact_book/delete.rb
|
|
150
|
+
- lib/ruby/whatsapp/business_phone_number/contact_book/deletion.rb
|
|
143
151
|
- lib/ruby/whatsapp/business_phone_number/deregister.rb
|
|
144
152
|
- lib/ruby/whatsapp/business_phone_number/profile.rb
|
|
145
153
|
- lib/ruby/whatsapp/business_phone_number/profile/details.rb
|
|
@@ -150,6 +158,13 @@ files:
|
|
|
150
158
|
- lib/ruby/whatsapp/business_phone_number/request_code.rb
|
|
151
159
|
- lib/ruby/whatsapp/business_phone_number/response.rb
|
|
152
160
|
- lib/ruby/whatsapp/business_phone_number/transport.rb
|
|
161
|
+
- lib/ruby/whatsapp/business_phone_number/username.rb
|
|
162
|
+
- lib/ruby/whatsapp/business_phone_number/username/claim.rb
|
|
163
|
+
- lib/ruby/whatsapp/business_phone_number/username/delete.rb
|
|
164
|
+
- lib/ruby/whatsapp/business_phone_number/username/details.rb
|
|
165
|
+
- lib/ruby/whatsapp/business_phone_number/username/get.rb
|
|
166
|
+
- lib/ruby/whatsapp/business_phone_number/username/suggest.rb
|
|
167
|
+
- lib/ruby/whatsapp/business_phone_number/username/suggestions.rb
|
|
153
168
|
- lib/ruby/whatsapp/business_phone_number/verify_code.rb
|
|
154
169
|
- lib/ruby/whatsapp/client.rb
|
|
155
170
|
- lib/ruby/whatsapp/configuration.rb
|
|
@@ -163,6 +178,7 @@ files:
|
|
|
163
178
|
- lib/ruby/whatsapp/message_templates/button/otp/supported_app.rb
|
|
164
179
|
- lib/ruby/whatsapp/message_templates/button/phone_number.rb
|
|
165
180
|
- lib/ruby/whatsapp/message_templates/button/quick_reply.rb
|
|
181
|
+
- lib/ruby/whatsapp/message_templates/button/request_contact_info.rb
|
|
166
182
|
- lib/ruby/whatsapp/message_templates/button/url.rb
|
|
167
183
|
- lib/ruby/whatsapp/message_templates/categories.rb
|
|
168
184
|
- lib/ruby/whatsapp/message_templates/component.rb
|
|
@@ -221,6 +237,7 @@ files:
|
|
|
221
237
|
- lib/ruby/whatsapp/messages/interactive/product_carousel/card.rb
|
|
222
238
|
- lib/ruby/whatsapp/messages/interactive/reply_buttons.rb
|
|
223
239
|
- lib/ruby/whatsapp/messages/interactive/reply_buttons/button.rb
|
|
240
|
+
- lib/ruby/whatsapp/messages/interactive/request_contact_info.rb
|
|
224
241
|
- lib/ruby/whatsapp/messages/interactive/url_button.rb
|
|
225
242
|
- lib/ruby/whatsapp/messages/location.rb
|
|
226
243
|
- lib/ruby/whatsapp/messages/location_request.rb
|
|
@@ -240,6 +257,15 @@ files:
|
|
|
240
257
|
- lib/ruby/whatsapp/railtie.rb
|
|
241
258
|
- lib/ruby/whatsapp/request_error.rb
|
|
242
259
|
- lib/ruby/whatsapp/response_handling.rb
|
|
260
|
+
- lib/ruby/whatsapp/schedule.rb
|
|
261
|
+
- lib/ruby/whatsapp/schedule/create.rb
|
|
262
|
+
- lib/ruby/whatsapp/schedule/list.rb
|
|
263
|
+
- lib/ruby/whatsapp/schedule/response.rb
|
|
264
|
+
- lib/ruby/whatsapp/schedule/response/collection.rb
|
|
265
|
+
- lib/ruby/whatsapp/schedule/response/created.rb
|
|
266
|
+
- lib/ruby/whatsapp/schedule/response/node.rb
|
|
267
|
+
- lib/ruby/whatsapp/schedule/statuses.rb
|
|
268
|
+
- lib/ruby/whatsapp/schedule/transport.rb
|
|
243
269
|
- lib/ruby/whatsapp/subscribed_app.rb
|
|
244
270
|
- lib/ruby/whatsapp/subscribed_app/list.rb
|
|
245
271
|
- lib/ruby/whatsapp/subscribed_app/response.rb
|
|
@@ -259,11 +285,14 @@ files:
|
|
|
259
285
|
- lib/ruby/whatsapp/webhook/account_update/ban_info.rb
|
|
260
286
|
- lib/ruby/whatsapp/webhook/automatic_events.rb
|
|
261
287
|
- lib/ruby/whatsapp/webhook/business_capability_update.rb
|
|
288
|
+
- lib/ruby/whatsapp/webhook/business_username_updates.rb
|
|
262
289
|
- lib/ruby/whatsapp/webhook/change.rb
|
|
263
290
|
- lib/ruby/whatsapp/webhook/contact.rb
|
|
264
291
|
- lib/ruby/whatsapp/webhook/entry.rb
|
|
265
292
|
- lib/ruby/whatsapp/webhook/error.rb
|
|
266
293
|
- lib/ruby/whatsapp/webhook/history.rb
|
|
294
|
+
- lib/ruby/whatsapp/webhook/history/chunk.rb
|
|
295
|
+
- lib/ruby/whatsapp/webhook/history/thread.rb
|
|
267
296
|
- lib/ruby/whatsapp/webhook/installer.rb
|
|
268
297
|
- lib/ruby/whatsapp/webhook/message.rb
|
|
269
298
|
- lib/ruby/whatsapp/webhook/message/audio.rb
|
|
@@ -279,6 +308,7 @@ files:
|
|
|
279
308
|
- lib/ruby/whatsapp/webhook/message/contacts/url.rb
|
|
280
309
|
- lib/ruby/whatsapp/webhook/message/context.rb
|
|
281
310
|
- lib/ruby/whatsapp/webhook/message/document.rb
|
|
311
|
+
- lib/ruby/whatsapp/webhook/message/edit.rb
|
|
282
312
|
- lib/ruby/whatsapp/webhook/message/image.rb
|
|
283
313
|
- lib/ruby/whatsapp/webhook/message/interactive.rb
|
|
284
314
|
- lib/ruby/whatsapp/webhook/message/location.rb
|
|
@@ -287,6 +317,7 @@ files:
|
|
|
287
317
|
- lib/ruby/whatsapp/webhook/message/order/product_item.rb
|
|
288
318
|
- lib/ruby/whatsapp/webhook/message/reaction.rb
|
|
289
319
|
- lib/ruby/whatsapp/webhook/message/referral.rb
|
|
320
|
+
- lib/ruby/whatsapp/webhook/message/revoke.rb
|
|
290
321
|
- lib/ruby/whatsapp/webhook/message/sticker.rb
|
|
291
322
|
- lib/ruby/whatsapp/webhook/message/system.rb
|
|
292
323
|
- lib/ruby/whatsapp/webhook/message/text.rb
|
|
@@ -305,15 +336,21 @@ files:
|
|
|
305
336
|
- lib/ruby/whatsapp/webhook/security.rb
|
|
306
337
|
- lib/ruby/whatsapp/webhook/signature.rb
|
|
307
338
|
- lib/ruby/whatsapp/webhook/smb_app_state_sync.rb
|
|
339
|
+
- lib/ruby/whatsapp/webhook/smb_app_state_sync/contact.rb
|
|
308
340
|
- lib/ruby/whatsapp/webhook/smb_app_state_sync/state_sync.rb
|
|
309
341
|
- lib/ruby/whatsapp/webhook/smb_message_echoes.rb
|
|
342
|
+
- lib/ruby/whatsapp/webhook/smb_message_echoes/echo.rb
|
|
310
343
|
- lib/ruby/whatsapp/webhook/status.rb
|
|
311
344
|
- lib/ruby/whatsapp/webhook/status/conversation.rb
|
|
312
345
|
- lib/ruby/whatsapp/webhook/status/pricing.rb
|
|
313
346
|
- lib/ruby/whatsapp/webhook/template_category_update.rb
|
|
314
347
|
- lib/ruby/whatsapp/webhook/templates/webhooks_controller.rb.tt
|
|
315
348
|
- lib/ruby/whatsapp/webhook/unknown_field.rb
|
|
349
|
+
- lib/ruby/whatsapp/webhook/user_id_update.rb
|
|
350
|
+
- lib/ruby/whatsapp/webhook/user_id_update/entry.rb
|
|
351
|
+
- lib/ruby/whatsapp/webhook/user_id_update/id_change.rb
|
|
316
352
|
- lib/ruby/whatsapp/webhook/user_preferences.rb
|
|
353
|
+
- lib/ruby/whatsapp/webhook/user_preferences/entry.rb
|
|
317
354
|
- lib/ruby/whatsapp/webhook/verification.rb
|
|
318
355
|
- lib/tasks/whatsapp.rake
|
|
319
356
|
- sig/ruby/whatsapp.rbs
|