kannel_rails 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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