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 +21 -1
- data/lib/kannel_rails/config.rb +12 -3
- data/lib/kannel_rails/version.rb +1 -1
- data/lib/kannel_rails.rb +22 -10
- metadata +8 -8
data/README.md
CHANGED
@@ -20,10 +20,12 @@ Sample content:
|
|
20
20
|
|
21
21
|
```yaml
|
22
22
|
development:
|
23
|
-
kannel_url: http://kannel_server
|
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.
|
data/lib/kannel_rails/config.rb
CHANGED
@@ -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
|
-
|
10
|
+
|
11
|
+
attr_accessor :dlr_mask
|
7
12
|
attr_accessor :api_secret
|
8
13
|
|
9
14
|
def initialize(config_hash = {})
|
10
|
-
|
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
|
-
|
21
|
+
|
22
|
+
self.dlr_mask = config_hash['dlr_mask']
|
14
23
|
self.api_secret = config_hash['api_secret']
|
15
24
|
end
|
16
25
|
|
data/lib/kannel_rails/version.rb
CHANGED
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
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
)
|
17
|
-
|
18
|
-
|
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.
|
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-
|
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:
|
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:
|
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: :
|
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: :
|
54
|
+
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
none: false
|