kapso-client-ruby 1.0.1 → 1.0.2
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/.rubocop.yml +81 -81
- data/CHANGELOG.md +262 -91
- data/Gemfile +20 -20
- data/RAILS_INTEGRATION.md +477 -477
- data/README.md +1053 -752
- data/Rakefile +40 -40
- data/TEMPLATE_TOOLS_GUIDE.md +120 -120
- data/WHATSAPP_24_HOUR_GUIDE.md +133 -133
- data/examples/advanced_features.rb +352 -349
- data/examples/advanced_messaging.rb +241 -0
- data/examples/basic_messaging.rb +139 -136
- data/examples/enhanced_interactive.rb +400 -0
- data/examples/flows_usage.rb +307 -0
- data/examples/interactive_messages.rb +343 -0
- data/examples/media_management.rb +256 -253
- data/examples/rails/jobs.rb +387 -387
- data/examples/rails/models.rb +239 -239
- data/examples/rails/notifications_controller.rb +226 -226
- data/examples/template_management.rb +393 -390
- data/kapso-ruby-logo.jpg +0 -0
- data/lib/kapso_client_ruby/client.rb +321 -316
- data/lib/kapso_client_ruby/errors.rb +348 -329
- data/lib/kapso_client_ruby/rails/generators/install_generator.rb +75 -75
- data/lib/kapso_client_ruby/rails/generators/templates/env.erb +20 -20
- data/lib/kapso_client_ruby/rails/generators/templates/initializer.rb.erb +32 -32
- data/lib/kapso_client_ruby/rails/generators/templates/message_service.rb.erb +137 -137
- data/lib/kapso_client_ruby/rails/generators/templates/webhook_controller.rb.erb +61 -61
- data/lib/kapso_client_ruby/rails/railtie.rb +54 -54
- data/lib/kapso_client_ruby/rails/service.rb +188 -188
- data/lib/kapso_client_ruby/rails/tasks.rake +166 -166
- data/lib/kapso_client_ruby/resources/calls.rb +172 -172
- data/lib/kapso_client_ruby/resources/contacts.rb +190 -190
- data/lib/kapso_client_ruby/resources/conversations.rb +103 -103
- data/lib/kapso_client_ruby/resources/flows.rb +382 -0
- data/lib/kapso_client_ruby/resources/media.rb +205 -205
- data/lib/kapso_client_ruby/resources/messages.rb +760 -380
- data/lib/kapso_client_ruby/resources/phone_numbers.rb +85 -85
- data/lib/kapso_client_ruby/resources/templates.rb +283 -283
- data/lib/kapso_client_ruby/types.rb +348 -262
- data/lib/kapso_client_ruby/version.rb +5 -5
- data/lib/kapso_client_ruby.rb +75 -74
- data/scripts/.env.example +17 -17
- data/scripts/kapso_template_finder.rb +91 -91
- data/scripts/sdk_setup.rb +404 -404
- data/scripts/test.rb +60 -60
- metadata +12 -3
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module KapsoClientRuby
|
|
4
|
-
module Resources
|
|
5
|
-
class PhoneNumbers
|
|
6
|
-
def initialize(client)
|
|
7
|
-
@client = client
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
# Request verification code
|
|
11
|
-
def request_code(phone_number_id:, code_method:, language: 'en_US')
|
|
12
|
-
validate_code_method(code_method)
|
|
13
|
-
|
|
14
|
-
payload = {
|
|
15
|
-
code_method: code_method.upcase,
|
|
16
|
-
language: language
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
response = @client.request(:post, "#{phone_number_id}/request_code",
|
|
20
|
-
body: payload.to_json, response_type: :json)
|
|
21
|
-
Types::GraphSuccessResponse.new(response)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# Verify the received code
|
|
25
|
-
def verify_code(phone_number_id:, code:)
|
|
26
|
-
raise ArgumentError, 'Verification code cannot be empty' if code.nil? || code.strip.empty?
|
|
27
|
-
|
|
28
|
-
payload = { code: code.to_s }
|
|
29
|
-
|
|
30
|
-
response = @client.request(:post, "#{phone_number_id}/verify_code",
|
|
31
|
-
body: payload.to_json, response_type: :json)
|
|
32
|
-
Types::GraphSuccessResponse.new(response)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# Register phone number
|
|
36
|
-
def register(phone_number_id:, pin:, data_localization_region: nil)
|
|
37
|
-
raise ArgumentError, 'PIN cannot be empty' if pin.nil? || pin.strip.empty?
|
|
38
|
-
|
|
39
|
-
payload = { pin: pin.to_s }
|
|
40
|
-
payload[:data_localization_region] = data_localization_region if data_localization_region
|
|
41
|
-
|
|
42
|
-
response = @client.request(:post, "#{phone_number_id}/register",
|
|
43
|
-
body: payload.to_json, response_type: :json)
|
|
44
|
-
Types::GraphSuccessResponse.new(response)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# Deregister phone number
|
|
48
|
-
def deregister(phone_number_id:)
|
|
49
|
-
response = @client.request(:post, "#{phone_number_id}/deregister",
|
|
50
|
-
body: {}.to_json, response_type: :json)
|
|
51
|
-
Types::GraphSuccessResponse.new(response)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# Update phone number settings
|
|
55
|
-
def update_settings(phone_number_id:, messaging_product: 'whatsapp',
|
|
56
|
-
webhooks: nil, application: nil)
|
|
57
|
-
payload = { messaging_product: messaging_product }
|
|
58
|
-
payload[:webhooks] = webhooks if webhooks
|
|
59
|
-
payload[:application] = application if application
|
|
60
|
-
|
|
61
|
-
response = @client.request(:post, phone_number_id,
|
|
62
|
-
body: payload.to_json, response_type: :json)
|
|
63
|
-
Types::GraphSuccessResponse.new(response)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# Get phone number info
|
|
67
|
-
def get(phone_number_id:, fields: nil)
|
|
68
|
-
query_params = {}
|
|
69
|
-
query_params[:fields] = fields if fields
|
|
70
|
-
|
|
71
|
-
response = @client.request(:get, phone_number_id,
|
|
72
|
-
query: query_params, response_type: :json)
|
|
73
|
-
response
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
private
|
|
77
|
-
|
|
78
|
-
def validate_code_method(method)
|
|
79
|
-
valid_methods = %w[SMS VOICE]
|
|
80
|
-
unless valid_methods.include?(method.to_s.upcase)
|
|
81
|
-
raise ArgumentError, "Invalid code method '#{method}'. Must be one of: #{valid_methods.join(', ')}"
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module KapsoClientRuby
|
|
4
|
+
module Resources
|
|
5
|
+
class PhoneNumbers
|
|
6
|
+
def initialize(client)
|
|
7
|
+
@client = client
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# Request verification code
|
|
11
|
+
def request_code(phone_number_id:, code_method:, language: 'en_US')
|
|
12
|
+
validate_code_method(code_method)
|
|
13
|
+
|
|
14
|
+
payload = {
|
|
15
|
+
code_method: code_method.upcase,
|
|
16
|
+
language: language
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
response = @client.request(:post, "#{phone_number_id}/request_code",
|
|
20
|
+
body: payload.to_json, response_type: :json)
|
|
21
|
+
Types::GraphSuccessResponse.new(response)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Verify the received code
|
|
25
|
+
def verify_code(phone_number_id:, code:)
|
|
26
|
+
raise ArgumentError, 'Verification code cannot be empty' if code.nil? || code.strip.empty?
|
|
27
|
+
|
|
28
|
+
payload = { code: code.to_s }
|
|
29
|
+
|
|
30
|
+
response = @client.request(:post, "#{phone_number_id}/verify_code",
|
|
31
|
+
body: payload.to_json, response_type: :json)
|
|
32
|
+
Types::GraphSuccessResponse.new(response)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Register phone number
|
|
36
|
+
def register(phone_number_id:, pin:, data_localization_region: nil)
|
|
37
|
+
raise ArgumentError, 'PIN cannot be empty' if pin.nil? || pin.strip.empty?
|
|
38
|
+
|
|
39
|
+
payload = { pin: pin.to_s }
|
|
40
|
+
payload[:data_localization_region] = data_localization_region if data_localization_region
|
|
41
|
+
|
|
42
|
+
response = @client.request(:post, "#{phone_number_id}/register",
|
|
43
|
+
body: payload.to_json, response_type: :json)
|
|
44
|
+
Types::GraphSuccessResponse.new(response)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Deregister phone number
|
|
48
|
+
def deregister(phone_number_id:)
|
|
49
|
+
response = @client.request(:post, "#{phone_number_id}/deregister",
|
|
50
|
+
body: {}.to_json, response_type: :json)
|
|
51
|
+
Types::GraphSuccessResponse.new(response)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Update phone number settings
|
|
55
|
+
def update_settings(phone_number_id:, messaging_product: 'whatsapp',
|
|
56
|
+
webhooks: nil, application: nil)
|
|
57
|
+
payload = { messaging_product: messaging_product }
|
|
58
|
+
payload[:webhooks] = webhooks if webhooks
|
|
59
|
+
payload[:application] = application if application
|
|
60
|
+
|
|
61
|
+
response = @client.request(:post, phone_number_id,
|
|
62
|
+
body: payload.to_json, response_type: :json)
|
|
63
|
+
Types::GraphSuccessResponse.new(response)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Get phone number info
|
|
67
|
+
def get(phone_number_id:, fields: nil)
|
|
68
|
+
query_params = {}
|
|
69
|
+
query_params[:fields] = fields if fields
|
|
70
|
+
|
|
71
|
+
response = @client.request(:get, phone_number_id,
|
|
72
|
+
query: query_params, response_type: :json)
|
|
73
|
+
response
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
private
|
|
77
|
+
|
|
78
|
+
def validate_code_method(method)
|
|
79
|
+
valid_methods = %w[SMS VOICE]
|
|
80
|
+
unless valid_methods.include?(method.to_s.upcase)
|
|
81
|
+
raise ArgumentError, "Invalid code method '#{method}'. Must be one of: #{valid_methods.join(', ')}"
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
86
|
end
|