kannel_rails 0.0.2 → 0.0.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.
data/README.md CHANGED
@@ -20,10 +20,12 @@ Sample content:
20
20
 
21
21
  ```yaml
22
22
  development:
23
- kannel_url: http://kannel_server:13013 # Kannel smsbox sendsms-port
23
+ kannel_url: http://kannel_server # Kannel server host
24
+ sendsms_port: 13013 # Kannel sendsms port
24
25
  username: username # Kannel sendsms-user username
25
26
  password: password # Kannel sendsms-user password
26
27
  api_secret: testing # A secret key you will also configure in Kannel for extra security
28
+ dlr_mask: 31 # Set this if you want to receive delivery reports from Kannel.
27
29
  ```
28
30
 
29
31
  In config/routes.rb, add:
@@ -50,6 +52,12 @@ Sending an SMS is as simple as:
50
52
  KannelRails.send_message("+639001234567", "Hello World!")
51
53
  ```
52
54
 
55
+ You can pass extra parameters that Kannel accepts. For example, to send a flash message:
56
+
57
+ ```ruby
58
+ KannelRails.send_message("+639001234567", "Hello Flash!", :mclass => 0)
59
+ ```
60
+
53
61
  ### Receiving SMS
54
62
 
55
63
  To handle incoming SMS, create handler classes and register them.
@@ -65,3 +73,15 @@ Register the handler class in config/initializers/sms_handlers.rb (or some other
65
73
  ```ruby
66
74
  KannelRails::Handlers.register HandlerClass
67
75
  ```
76
+
77
+ ### Delivery Reports
78
+
79
+ To receive delivery reports, you must have the dlr_mask set. Check Kannel docs for possible values.
80
+
81
+ ```ruby
82
+ dlr_url = "http://rails_app/some_endpoint?msg_id=123&type=%d&smsc_id=%i"
83
+
84
+ KannelRails.send_message("+639001234567", "Hello World!", 'dlr-url' => dlr_url)
85
+ ```
86
+
87
+ Refer to kannel docs for %d, %i, etc. You want to provide a unique msg id here (doesnt have to be called msg_id) so that you can match the delivery report to the corresponding message you sent.
@@ -1,16 +1,25 @@
1
+ require 'uri'
2
+
1
3
  class KannelRails::Config
2
4
 
3
5
  attr_accessor :kannel_url
6
+ attr_accessor :sendsms_port
7
+
4
8
  attr_accessor :username
5
9
  attr_accessor :password
6
- attr_accessor :dlr_url
10
+
11
+ attr_accessor :dlr_mask
7
12
  attr_accessor :api_secret
8
13
 
9
14
  def initialize(config_hash = {})
10
- self.kannel_url = config_hash['kannel_url']
15
+ url = config_hash['kannel_url']
16
+ self.kannel_url = url.is_a?(URI) ? url : URI.parse(url)
17
+ self.sendsms_port = config_hash['sendsms_port']
18
+
11
19
  self.username = config_hash['username']
12
20
  self.password = config_hash['password']
13
- self.dlr_url = config_hash['dlr_url']
21
+
22
+ self.dlr_mask = config_hash['dlr_mask']
14
23
  self.api_secret = config_hash['api_secret']
15
24
  end
16
25
 
@@ -1,3 +1,3 @@
1
1
  module KannelRails
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/kannel_rails.rb CHANGED
@@ -6,16 +6,28 @@ require "net/http"
6
6
 
7
7
  module KannelRails
8
8
 
9
- def self.send_message(recipient, message)
10
- request_url = config.kannel_url.chomp('/') + "/cgi-bin/sendsms?" +
11
- "username=#{CGI.escape(config.username.to_s)}&password=#{CGI.escape(config.password.to_s)}" +
12
- "&to=#{CGI.escape(recipient.to_s)}&text=#{CGI.escape(message.to_s)}"
13
-
14
- response = Net::HTTP.get_response(URI.parse(
15
- request_url
16
- ))
17
-
18
- response.is_a? Net::HTTPSuccess
9
+ def self.send_message(recipient, message, options = {})
10
+ query_hash = {
11
+ :username => config.username,
12
+ :password => config.password,
13
+ :to => recipient,
14
+ :text => message,
15
+ :'dlr-mask' => config.dlr_mask
16
+ }.merge!(options)
17
+
18
+ query_hash.delete_if { |k, v| v.to_s.blank? }
19
+
20
+ request_url = config.kannel_url.merge('/cgi-bin/sendsms')
21
+ request_url.query = query_hash.to_query
22
+ request_url.port = config.sendsms_port
23
+
24
+ response = Net::HTTP.get_response(request_url)
25
+
26
+ if response.is_a? Net::HTTPSuccess
27
+ return response
28
+ else
29
+ return false
30
+ end
19
31
  end
20
32
 
21
33
  def self.config
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kannel_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,24 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-02 00:00:00.000000000 Z
12
+ date: 2013-09-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ~>
19
+ - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 4.0.0
21
+ version: '3.2'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ~>
27
+ - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: 4.0.0
29
+ version: '3.2'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: rspec-rails
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -35,7 +35,7 @@ dependencies:
35
35
  - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
37
  version: '0'
38
- type: :runtime
38
+ type: :development
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  none: false
@@ -51,7 +51,7 @@ dependencies:
51
51
  - - ! '>='
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
- type: :runtime
54
+ type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  none: false