whatsapp_sdk 0.1.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b4f5058be0fce569741f60508e508ec0b1cba2eccffbc5f510d7312cb023847b
4
- data.tar.gz: 0af25be3aad6fdb5ffc60b014745294a0fa5cf496ce11ce68ebb886a774dfca4
3
+ metadata.gz: 309171f5666c8ab046ca3e386ea48486076ba6aa1412eb088b9a884e30d06bf3
4
+ data.tar.gz: 3bf929a941471762f0f35333b7179fc03c6c48c227a6fbd83246169f0739c505
5
5
  SHA512:
6
- metadata.gz: 6f1ede78aafc6391e5de55ac4aa338a3286d5a9eb634a6afac22bf28cf39afa2f8e8356db2f266aa1bb7101ca122497b6036b843146fb77890c6f10d7460f7f8
7
- data.tar.gz: 4b7524e665d2c13e4b8561e125b1cdbccbdfc1f95c49b7b465ce0e368918ce239a17afb58d83625b28a3288d803b25680b78167a967e69f3575d27071f7d9d2c
6
+ metadata.gz: cb2485c108c4c8ec5fd431bb906fd6f82046fb12344fa2fdda23eea9dc2eac97753f47cf600871d7c81a043d1c14fdcfa518d20e9c5fa3363cb4c88224c0f179
7
+ data.tar.gz: 157afd0a17d5e310c803c7d7e36b88fcb7c8ea4d33d0bff2800aec57459442f08a2bb820b137e0184f4d5edf87177d2f3643f445bc07e0b1a3bd8f0fee954999
@@ -0,0 +1,21 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Describe the bug**
11
+ A clear and concise description of what the bug is.
12
+
13
+ **To Reproduce**
14
+ Steps to reproduce the behavior:
15
+ 1. Go to '...'
16
+
17
+ **Expected behavior**
18
+ A clear and concise description of what you expected to happen.
19
+
20
+ **Additional context**
21
+ Add any other context about the problem here.
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Is your feature request related to a problem? Please describe.**
11
+ A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12
+
13
+ **Additional context**
14
+ Add any other context or screenshots about the feature request here.
@@ -0,0 +1,72 @@
1
+ # For most projects, this workflow file will not need changing; you simply need
2
+ # to commit it to your repository.
3
+ #
4
+ # You may wish to alter this file to override the set of languages analyzed,
5
+ # or to provide custom queries or build logic.
6
+ #
7
+ # ******** NOTE ********
8
+ # We have attempted to detect the languages in your repository. Please check
9
+ # the `language` matrix defined below to confirm you have the correct set of
10
+ # supported CodeQL languages.
11
+ #
12
+ name: "CodeQL"
13
+
14
+ on:
15
+ push:
16
+ branches: [ "main" ]
17
+ pull_request:
18
+ # The branches below must be a subset of the branches above
19
+ branches: [ "main" ]
20
+ schedule:
21
+ - cron: '20 22 * * 6'
22
+
23
+ jobs:
24
+ analyze:
25
+ name: Analyze
26
+ runs-on: ubuntu-latest
27
+ permissions:
28
+ actions: read
29
+ contents: read
30
+ security-events: write
31
+
32
+ strategy:
33
+ fail-fast: false
34
+ matrix:
35
+ language: [ 'ruby' ]
36
+ # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
37
+ # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
38
+
39
+ steps:
40
+ - name: Checkout repository
41
+ uses: actions/checkout@v3
42
+
43
+ # Initializes the CodeQL tools for scanning.
44
+ - name: Initialize CodeQL
45
+ uses: github/codeql-action/init@v2
46
+ with:
47
+ languages: ${{ matrix.language }}
48
+ # If you wish to specify custom queries, you can do so here or in a config file.
49
+ # By default, queries listed here will override any specified in a config file.
50
+ # Prefix the list here with "+" to use these queries and those in the config file.
51
+
52
+ # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
53
+ # queries: security-extended,security-and-quality
54
+
55
+
56
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
57
+ # If this step fails, then you should remove it and run the build manually (see below)
58
+ - name: Autobuild
59
+ uses: github/codeql-action/autobuild@v2
60
+
61
+ # ℹ️ Command-line programs to run using the OS shell.
62
+ # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
63
+
64
+ # If the Autobuild fails above, remove it and uncomment the following three lines.
65
+ # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
66
+
67
+ # - run: |
68
+ # echo "Run, Build Application using script"
69
+ # ./location_of_script_within_repo/buildscript.sh
70
+
71
+ - name: Perform CodeQL Analysis
72
+ uses: github/codeql-action/analyze@v2
data/.rubocop.yml CHANGED
@@ -1,3 +1,10 @@
1
+ require:
2
+ - rubocop-minitest
3
+ - rubocop-performance
4
+
5
+ AllCops:
6
+ NewCops: enable
7
+
1
8
  Style/StringLiterals:
2
9
  Enabled: false
3
10
 
@@ -24,4 +31,7 @@ Metrics/AbcSize:
24
31
 
25
32
  # Wait until https://github.com/rubocop/rubocop/issues/8761 is fixed
26
33
  Gemspec/RequiredRubyVersion:
27
- Enabled: false
34
+ Enabled: false
35
+
36
+ Minitest/MultipleAssertions:
37
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,4 +1,16 @@
1
1
  # Unreleased
2
+
3
+ # v 0.3.1
4
+ - Update Meta API to v14
5
+
6
+ # v 0.3.0
7
+ - Allow Apps to have a singleton global authentication client.
8
+
9
+ # v 0.2.0
10
+ - Added Media API
11
+ - Added error and sucess responses
12
+ - Added faraday-multiplart as part of the library
13
+
2
14
  # v 0.1.0
3
15
  - Added Message Template API.
4
16
  - Added Currency and Datetime resources.
data/Gemfile CHANGED
@@ -4,18 +4,22 @@ source "https://rubygems.org"
4
4
 
5
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
 
7
- # Specify your gem's dependencies in whatsapp_sdk.gemspec
8
7
  gem("faraday")
8
+ gem("faraday-multipart")
9
9
  gem("oj")
10
+ gem("rake", ">= 12.3.3")
11
+ gem("zeitwerk", ">= 2.6.0")
10
12
 
11
13
  group(:test) do
12
14
  gem('mocha')
15
+ gem('rubocop', require: false)
16
+ gem('rubocop-minitest', require: false)
17
+ gem('rubocop-performance', require: false)
13
18
  end
14
19
 
15
20
  group(:development) do
16
21
  gem('pry')
17
22
  gem('pry-nav')
18
- gem('rubocop', require: false)
19
23
  end
20
24
 
21
25
  gemspec
data/Gemfile.lock CHANGED
@@ -1,9 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- whatsapp_sdk (0.0.1)
4
+ whatsapp_sdk (0.3.0)
5
5
  faraday (~> 2.3.0)
6
+ faraday-multipart (~> 1.0.4)
6
7
  oj (~> 3.13.13)
8
+ zeitwerk (~> 2.6.0)
7
9
 
8
10
  GEM
9
11
  remote: https://rubygems.org/
@@ -13,11 +15,14 @@ GEM
13
15
  faraday (2.3.0)
14
16
  faraday-net_http (~> 2.0)
15
17
  ruby2_keywords (>= 0.0.4)
18
+ faraday-multipart (1.0.4)
19
+ multipart-post (~> 2)
16
20
  faraday-net_http (2.0.3)
17
21
  method_source (1.0.0)
18
- minitest (5.15.0)
22
+ minitest (5.16.1)
19
23
  mocha (1.14.0)
20
- oj (3.13.13)
24
+ multipart-post (2.2.3)
25
+ oj (3.13.14)
21
26
  parallel (1.22.1)
22
27
  parser (3.1.2.0)
23
28
  ast (~> 2.4.1)
@@ -27,10 +32,10 @@ GEM
27
32
  pry-nav (1.0.0)
28
33
  pry (>= 0.9.10, < 0.15)
29
34
  rainbow (3.1.1)
30
- rake (10.5.0)
35
+ rake (13.0.6)
31
36
  regexp_parser (2.5.0)
32
37
  rexml (3.2.5)
33
- rubocop (1.30.0)
38
+ rubocop (1.30.1)
34
39
  parallel (~> 1.10)
35
40
  parser (>= 3.1.0.0)
36
41
  rainbow (>= 2.2.2, < 4.0)
@@ -41,9 +46,15 @@ GEM
41
46
  unicode-display_width (>= 1.4.0, < 3.0)
42
47
  rubocop-ast (1.18.0)
43
48
  parser (>= 3.1.1.0)
49
+ rubocop-minitest (0.20.1)
50
+ rubocop (>= 0.90, < 2.0)
51
+ rubocop-performance (1.14.2)
52
+ rubocop (>= 1.7.0, < 2.0)
53
+ rubocop-ast (>= 0.4.0)
44
54
  ruby-progressbar (1.11.0)
45
55
  ruby2_keywords (0.0.5)
46
- unicode-display_width (2.1.0)
56
+ unicode-display_width (2.2.0)
57
+ zeitwerk (2.6.0)
47
58
 
48
59
  PLATFORMS
49
60
  x86_64-darwin-21
@@ -51,14 +62,18 @@ PLATFORMS
51
62
  DEPENDENCIES
52
63
  bundler (~> 2.3)
53
64
  faraday
65
+ faraday-multipart
54
66
  minitest (~> 5.0)
55
67
  mocha
56
68
  oj
57
69
  pry
58
70
  pry-nav
59
- rake (~> 10.0)
71
+ rake (>= 12.3.3)
60
72
  rubocop
73
+ rubocop-minitest
74
+ rubocop-performance
61
75
  whatsapp_sdk!
76
+ zeitwerk (>= 2.6.0)
62
77
 
63
78
  BUNDLED WITH
64
79
  2.3.9
data/README.md CHANGED
@@ -1,7 +1,14 @@
1
1
  # Ruby Whatsapp SDK
2
+ [![Gem Version](https://badge.fury.io/rb/whatsapp_sdk.svg)](https://badge.fury.io/rb/whatsapp_sdk)
3
+ [![CircleCI](https://circleci.com/gh/circleci/circleci-docs.svg?style=svg)](https://circleci.com/gh/ignacio-chiazzo/ruby_whatsapp_sdk)
4
+ <a href="https://codeclimate.com/github/ignacio-chiazzo/ruby_whatsapp_sdk/maintainability"><img src="https://api.codeclimate.com/v1/badges/169cce95450272e4ad7d/maintainability" /></a>
2
5
 
3
6
  The SDK provides a set of operations and classes to use the Whatsapp API.
4
- Send stickers, messages, audio, videos, locations or just ask for the phone numbers through this library in a few steps!
7
+ Send stickers, messages, audio, videos, and locations or just ask for the phone numbers through this library in a few steps!
8
+
9
+
10
+ https://user-images.githubusercontent.com/11672878/173238826-6fc0a6f8-d0ee-4eae-8947-7dfd3b8b3446.mov
11
+
5
12
 
6
13
  ## Installation
7
14
 
@@ -21,12 +28,22 @@ Or install it yourself as:
21
28
 
22
29
  ## Quick Start
23
30
 
24
- There are two primary resources, `Messages` and `PhoneNumbers`. The first one allows clients to send any kind of message (text, audio, location, video, image, etc.), and the latter will enable clients to query the phone numbers associated.
31
+ There are three primary resources, `Messages`, `Media` and `PhoneNumbers`. `Messages` allows users to send any kind of message (text, audio, location, video, image, etc.). `Media` allows users to manage media, and `Phone Numbers` enable clients to query the associated phone numbers.
32
+
33
+ To use `Messages`, `Media` or `PhoneNumbers`, you need to initialize the `Client` that contains auth information. There are two ways to do it
25
34
 
26
- To use `Messages` or `PhoneNumbers` you need to create a `Client` instance by passing the `access_token` like this:
35
+ 1) Using an initializer
36
+
37
+ ```ruby
38
+ WhatsappSdk.configure do |config|
39
+ config.access_token = ACCESS_TOKEN
40
+ end
41
+ ```
42
+ OR 2) creating a `Client` instance and pass it to the `Messages`, `Medias` or `PhoneNumbers` instance like this:
27
43
 
28
44
  ```ruby
29
45
  client = WhatsappSdk::Api::Client.new("<ACCESS TOKEN>") # replace this with a valid access token
46
+ messages_api = WhatsappSdk::Api::Messages.new(client)
30
47
  ```
31
48
 
32
49
  Each API operation returns a `WhatsappSdk::Api::Response` that contains `data` and `error` and a couple of helpful functions such as `ok?` and `error?`. There are three types of response `WhatsappSdk::Api::MessageDataResponse`, `WhatsappSdk::Api::PhoneNumberDataResponse` and `WhatsappSdk::Api::PhoneNumbersDataResponse`. Each of them contains different attributes.
@@ -35,11 +52,13 @@ Each API operation returns a `WhatsappSdk::Api::Response` that contains `data` a
35
52
  First, create the client and then create an instance `WhatsappSdk::Api::Messages` that requires a client as a param like this:
36
53
 
37
54
  ```ruby
38
- client = WhatsappSdk::Api::Client.new("<ACCESS TOKEN>") # replace this with a valid access_token
39
- messages_api = WhatsappSdk::Api::Messages.new(client)
40
- phone_numbers_api = WhatsappSdk::Api::PhoneNumbers.new(client)
55
+ messages_api = WhatsappSdk::Api::Messages.new
56
+ phone_numbers_api = WhatsappSdk::Api::PhoneNumbers.new
57
+ medias_api = WhatsappSdk::Api::Medias.new
41
58
  ```
42
59
 
60
+ Note: Remember to initialize the client first!
61
+
43
62
  ### Phone numbers API
44
63
  Get the list of phone numbers registered
45
64
  ```ruby
@@ -51,6 +70,28 @@ Get the a phone number by id
51
70
  phone_numbers_api.registered_numbers("123456") # accepts a phone_number_id
52
71
  ```
53
72
 
73
+ ### Media API
74
+
75
+ Upload a media
76
+ ```ruby
77
+ medias_api.upload(sender_id: SENDER_ID, file_path: "tmp/whatsapp.png", type: "image/png")
78
+ ```
79
+
80
+ Get a media
81
+ ```ruby
82
+ media = medias_api.media(media_id: MEDIA_ID)
83
+ ```
84
+
85
+ Download media
86
+ ```ruby
87
+ medias_api.download(url: MEDIA_URL, file_path: 'tmp/downloaded_whatsapp.png')
88
+ ```
89
+
90
+ Delete a media
91
+ ```ruby
92
+ medias_api.delete(media_id: MEDIA_ID)
93
+ ```
94
+
54
95
  ### Messages API
55
96
 
56
97
  **Send a text message**
@@ -59,11 +100,19 @@ phone_numbers_api.registered_numbers("123456") # accepts a phone_number_id
59
100
  messages_api.send_text(sender_id: 1234, recipient_number: "112345678", message: "hola")
60
101
  ```
61
102
 
103
+ **Read a message**
104
+ ```ruby
105
+ messages_api.read_message(sender_id: 1234, message_id: "wamid.HBgLMTM0M12345678910=")
106
+ ```
107
+
108
+ Note: To get the `message_id` you can set up [Webhooks](https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks/components) that will listen and fire an event when a message is received.
109
+
110
+
62
111
  **Send a location message**
63
112
 
64
113
  ```ruby
65
114
  messages_api.send_location(
66
- sender_id: 123123, recipient_number: "56789",
115
+ sender_id: 123123, recipient_number: "56789",
67
116
  longitude: 45.4215, latitude: 75.6972, name: "nacho", address: "141 cooper street"
68
117
  )
69
118
  ```
@@ -71,12 +120,12 @@ messages_api.send_location(
71
120
  **Send an image message**
72
121
  It could use a link or an image_id.
73
122
  ```ruby
74
- # with a link
123
+ # with a link
75
124
  messages_api.send_image(
76
125
  sender_id: 123123, recipient_number: "56789", link: "image_link", caption: "Ignacio Chiazzo Profile"
77
126
  )
78
127
 
79
- # with an image id
128
+ # with an image id
80
129
  messages_api.send_image(
81
130
  sender_id: 123123, recipient_number: "56789", image_id: "1234", caption: "Ignacio Chiazzo Profile"
82
131
  )
@@ -85,22 +134,22 @@ messages_api.send_image(
85
134
  **Send an audio message**
86
135
  It could use a link or an audio_id.
87
136
  ```ruby
88
- # with a link
137
+ # with a link
89
138
  messages_api.send_audio(sender_id: 123123, recipient_number: "56789", link: "audio_link")
90
139
 
91
- # with an audio id
140
+ # with an audio id
92
141
  messages_api.send_audio(sender_id: 123123, recipient_number: "56789", audio_id: "1234")
93
142
  ```
94
143
 
95
144
  **Send a document message**
96
145
  It could use a link or a document_id.
97
146
  ```ruby
98
- # with a link
147
+ # with a link
99
148
  messages_api.send_document(
100
149
  sender_id: 123123, recipient_number: "56789", link: "document_link", caption: "Ignacio Chiazzo"
101
150
  )
102
151
 
103
- # with a document id
152
+ # with a document id
104
153
  messages_api.send_document(
105
154
  sender_id: 123123, recipient_number: "56789", document_id: "1234", caption: "Ignacio Chiazzo"
106
155
  )
@@ -109,7 +158,7 @@ messages_api.send_document(
109
158
  **Send a sticker message**
110
159
  It could use a link or a sticker_id.
111
160
  ```ruby
112
- # with a link
161
+ # with a link
113
162
  messages_api.send_sticker(sender_id: 123123, recipient_number: "56789", link: "link")
114
163
 
115
164
  # with a sticker_id
@@ -193,6 +242,10 @@ Visit [the example file](/example.rb) with examples to call the API in a single
193
242
  - See the [official documentation](https://developers.facebook.com/docs/whatsapp/cloud-api) for the Whatsapp Cloud API.
194
243
  - For pricing, refer to the [official documentation](https://developers.facebook.com/docs/whatsapp/pricing/). As of today, Whatsapp offers have 1000 conversations free per month.
195
244
 
245
+ ## Troubleshooting
246
+
247
+ - If the API response is `success` but the message is not delivered, make sure the device you're sending the message to is using a supported Whatsapp version. [Check documentation](https://developers.facebook.com/docs/whatsapp/cloud-api/support/troubleshooting#message-not-delivered)
248
+
196
249
  ## Development
197
250
 
198
251
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests.
@@ -201,7 +254,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
201
254
 
202
255
  ## Contributing
203
256
 
204
- Bug reports and pull requests are welcome on GitHub at [https://github.com/ignacio-chiazzo/whatsapp_sdk](https://github.com/ignacio-chiazzo/whatsapp_sdk) This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
257
+ Bug reports and pull requests are welcome on GitHub at [https://github.com/ignacio-chiazzo/ruby_whatsapp_sdk](https://github.com/ignacio-chiazzo/ruby_whatsapp_sdk) This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
205
258
 
206
259
  ## License
207
260
 
data/example.rb CHANGED
@@ -11,7 +11,7 @@ gemfile(true) do
11
11
 
12
12
  git_source(:github) { |repo| "https://github.com/#{repo}.git" }
13
13
 
14
- gem "whatsapp_sdk"
14
+ gem "whatsapp_sdk", path: "/Users/ignaciochiazzo/src/whatsapp_sdk"
15
15
  gem "pry"
16
16
  gem "pry-nav"
17
17
  end
@@ -20,43 +20,93 @@ require 'whatsapp_sdk'
20
20
  require "pry"
21
21
  require "pry-nav"
22
22
 
23
- ACCESS_TOKEN = "foo" # replace this with a valid access_token
24
- SENDER_ID = 123
25
- RECIPIENT_NUMBER = "456"
23
+ ################# UPDATE CONSTANTS #################
26
24
 
27
- client = WhatsappSdk::Api::Client.new(ACCESS_TOKEN) # replace this with a valid access_token
28
- messages_api = WhatsappSdk::Api::Messages.new(client)
29
- phone_numbers_api = WhatsappSdk::Api::PhoneNumbers.new(client)
25
+ ACCESS_TOKEN = "EAAHwuHDNkqoBAOtjFZAw1MUOXsFOv4EMP8Hi2mtzvcHSPbYWD4HLLLRapjPIDQWagke3cF2IIZCbtlhMZCluO1sH7C594q0q9UqZAXwufTqBtebRlssZCLwKeC69l6Emdmt2gRYGDnhTJH0mrM7L5ivZAWezhjOvtzdnKJ7xBZALiQRKB6JrEAgAZBcnBMfBZC75xR0ZACXQUPoplhjN1a5FTA" # replace this with a valid access_token # TODO replace
26
+ SENDER_ID = 107_878_721_936_019
27
+ RECIPIENT_NUMBER = 13_437_772_910
28
+ BUSINESS_ID = 114_503_234_599_312
29
+ IMAGE_LINK = "https://ignaciochiazzo.com/static/4c403819b9750c8ad8b20a75308f2a8a/876d5/profile-pic.avif"
30
+ binding.pry
31
+ # message_sent = messages_api.send_text(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, message: "holis")
30
32
 
31
- phone_numbers_api.registered_number("123")
32
- phone_numbers_api.registered_numbers("457")
33
+ ################# Initialize Client #################
34
+ WhatsappSdk.configure do |config|
35
+ config.access_token = ACCESS_TOKEN
36
+ end
37
+
38
+ ################# HELPERS ########################
39
+ def print_message_sent(message_response)
40
+ if message_response.ok?
41
+ puts "Message sent to: #{message_response.data.contacts.first.input}"
42
+ else
43
+ puts "Error: #{message_response.error&.to_s}"
44
+ end
45
+ end
46
+ ##################################################
47
+
48
+ medias_api = WhatsappSdk::Api::Medias.new
49
+ messages_api = WhatsappSdk::Api::Messages.new
50
+ phone_numbers_api = WhatsappSdk::Api::PhoneNumbers.new
51
+
52
+ ############################## Phone Numbers API ##############################
53
+ phone_numbers_api.registered_number(SENDER_ID)
54
+ phone_numbers_api.registered_numbers(BUSINESS_ID)
55
+ ############################## Media API ##############################
56
+
57
+ # upload a media
58
+ uploaded_media = medias_api.upload(sender_id: SENDER_ID, file_path: "tmp/whatsapp.png", type: "image/png")
59
+ puts "Uploaded media id: #{uploaded_media.data&.id}"
33
60
 
34
- messages_api.send_text(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, message: "hola")
35
- messages_api.send_location(
61
+ # get a media
62
+ uploaded_media = medias_api.upload(sender_id: SENDER_ID, file_path: "tmp/whatsapp.png", type: "image/png")
63
+ media = medias_api.media(media_id: uploaded_media.data&.id).data
64
+ puts "Media info: #{media.raw_data_response}"
65
+
66
+ # download media
67
+ download_image = medias_api.download(url: media&.url, file_path: 'tmp/downloaded_whatsapp.png')
68
+ puts "Downloaded: #{download_image.data.success?}"
69
+
70
+ # # delete a media
71
+ # deleted_media = medias_api.delete(media_id: media&.id)
72
+ # puts "Deleted: #{deleted_media.data.success?}"
73
+
74
+ ############################## Messages API ##############################
75
+
76
+ ######### SEND A TEXT MESSAGE
77
+ message_sent = messages_api.send_text(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER,
78
+ message: "Hey there! it's Whatsapp Ruby SDK")
79
+ print_message_sent(message_sent)
80
+
81
+ location_sent = messages_api.send_location(
36
82
  sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER,
37
- longitude: 45.4215, latitude: 75.6972, name: "nacho", address: "141 cooper street"
83
+ longitude: -75.6898604, latitude: 45.4192206, name: "Ignacio", address: "My house"
38
84
  )
85
+ print_message_sent(location_sent)
39
86
 
40
- # Send images
87
+ ######### READ A MESSAGE
88
+ # messages_api.read_message(sender_id: SENDER_ID, message_id: msg_id)
41
89
 
42
- ## with a link
43
- messages_api.send_image(
44
- sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, link: "image_link", caption: "Ignacio Chiazzo Profile"
90
+ ######### SEND AN IMAGE
91
+ # Send an image with a link
92
+ image_sent = messages_api.send_image(
93
+ sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, link: media.url, caption: "Ignacio Chiazzo Profile"
45
94
  )
95
+ print_message_sent(image_sent)
46
96
 
47
- ## with an image id
97
+ # Send an image with an id
48
98
  messages_api.send_image(
49
- sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, image_id: "1234", caption: "Ignacio Chiazzo Profile"
99
+ sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, image_id: media.id, caption: "Ignacio Chiazzo Profile"
50
100
  )
51
101
 
52
- # Send audios
102
+ ######### SEND AUDIOS
53
103
  ## with a link
54
104
  messages_api.send_audio(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, link: "audio_link")
55
105
 
56
106
  ## with an audio id
57
107
  messages_api.send_audio(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, audio_id: "1234")
58
108
 
59
- # Send documents
109
+ ######### SEND DOCUMENTS
60
110
  ## with a link
61
111
  messages_api.send_document(
62
112
  sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, link: "document_link", caption: "Ignacio Chiazzo"
@@ -67,16 +117,22 @@ messages_api.send_document(
67
117
  sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, document_id: "1234", caption: "Ignacio Chiazzo"
68
118
  )
69
119
 
70
- # send stickers
120
+ ######### SEND STICKERS
71
121
  ## with a link
72
122
  messages_api.send_sticker(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, link: "link")
73
123
 
74
124
  ## with a sticker_id
75
125
  messages_api.send_sticker(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, sticker_id: "1234")
76
126
 
77
- # Send a template.
127
+ ######### SEND A TEMPLATE
78
128
  # Note: The template must have been created previously.
79
129
 
130
+ # Send a template with no component
131
+ response_with_object = messages_api.send_template(sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER,
132
+ name: "hello_world", language: "en_US", components: [])
133
+ puts response_with_object
134
+
135
+ # Send a template with components.Remember to create the template first.
80
136
  header_component = WhatsappSdk::Resource::Component.new(
81
137
  type: WhatsappSdk::Resource::Component::Type::HEADER
82
138
  )
@@ -120,31 +176,31 @@ body_component.add_parameter(parameter_video)
120
176
  body_component.add_parameter(parameter_document)
121
177
  body_component.to_json
122
178
 
123
- button_component_1 = WhatsappSdk::Resource::Component.new(
124
- type: WhatsappSdk::Resource::Component::Type::BUTTON,
125
- index: 0,
126
- sub_type: WhatsappSdk::Resource::Component::Subtype::QUICK_REPLY,
127
- parameters: [WhatsappSdk::Resource::ButtonParameter.new(type: "payload", payload: "payload")]
128
- )
129
-
130
- button_component_2 = WhatsappSdk::Resource::Component.new(
131
- type: WhatsappSdk::Resource::Component::Type::BUTTON,
132
- index: 1,
133
- sub_type: WhatsappSdk::Resource::Component::Subtype::QUICK_REPLY,
134
- parameters: [WhatsappSdk::Resource::ButtonParameter.new(type: "payload", payload: "payload")]
135
- )
136
-
137
- # make sure that the template was created
179
+ # button_component_1 = WhatsappSdk::Resource::Component.new(
180
+ # type: WhatsappSdk::Resource::Component::Type::BUTTON,
181
+ # index: 0,
182
+ # sub_type: WhatsappSdk::Resource::Component::Subtype::QUICK_REPLY,
183
+ # parameters: [WhatsappSdk::Resource::ButtonParameter.new(type: "payload", payload: "payload")]
184
+ # )
185
+
186
+ # button_component_2 = WhatsappSdk::Resource::Component.new(
187
+ # type: WhatsappSdk::Resource::Component::Type::BUTTON,
188
+ # index: 1,
189
+ # sub_type: WhatsappSdk::Resource::Component::Subtype::QUICK_REPLY,
190
+ # parameters: [WhatsappSdk::Resource::ButtonParameter.new(type: "payload", payload: "payload")]
191
+ # )
192
+
193
+ # Send a template with component_json
138
194
  response_with_json = messages_api.send_template(
139
195
  sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, name: "hello_world", language: "en_US",
140
196
  components_json: [
141
197
  {
142
- "type": "header",
143
- "parameters": [
198
+ "type" => "header",
199
+ "parameters" => [
144
200
  {
145
- "type": "image",
146
- "image": {
147
- "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"
201
+ "type" => "image",
202
+ "image" => {
203
+ "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"
148
204
  }
149
205
  }
150
206
  ]
@@ -153,8 +209,7 @@ response_with_json = messages_api.send_template(
153
209
  )
154
210
  puts response_with_json
155
211
 
156
- response_with_object = messages_api.send_template(
157
- sender_id: SENDER_ID, recipient_number: RECIPIENT_NUMBER, name: "hello_world", language: "en_US",
158
- components: [header_component, body_component, button_component_1, button_component_2]
159
- )
160
- puts response_with_object
212
+
213
+ # # delete a media
214
+ deleted_media = medias_api.delete(media_id: media&.id)
215
+ puts "Deleted: #{deleted_media.data.success?}"
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module WhatsappSdk
4
- VERSION = "0.1.0"
4
+ VERSION = "0.3.1"
5
5
  end