fluent-plugin-twilio 0.0.3 → 0.1.0
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 +7 -0
- data/.gitignore +1 -0
- data/.travis.yml +3 -3
- data/README.md +44 -9
- data/fluent-plugin-twilio.gemspec +3 -3
- data/lib/fluent/plugin/out_twilio.rb +14 -22
- data/test/helper.rb +4 -22
- data/test/plugin/test_out_twilio.rb +7 -7
- metadata +26 -30
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ab70ac89145baa0be76178e959a1528a6376f2d0
|
4
|
+
data.tar.gz: ee066533389d27be18d2a72ea98bfc09b077faac
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1b94d3ac7124a401b14d849337b76d97cacc167ff61bbe175dd79fc10ddf2c904d614fef30d4d60604adfad1ac6a065bc05c1951f83f819f900b3147a7ec6529
|
7
|
+
data.tar.gz: f2f726644ce54a5e7f709dc8e214c20dab16650d240126a4371d5e992a00b37f22e0761b27b146670030cab49c0b452fcb5b96f64ac43e90f88b4662fc636aeb
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -3,17 +3,27 @@ fluent-plugin-twilio
|
|
3
3
|
|
4
4
|
## Overview
|
5
5
|
Fluentd Output plugin to make a call with twilio.
|
6
|
+
Twilio free trial is available to signup at the official website.
|
7
|
+
You can try call to your cellphone for free!
|
8
|
+
|
9
|
+
## Requirements
|
10
|
+
|
11
|
+
| fluent-plugin-twilio | fluentd | ruby |
|
12
|
+
|----------------------|-------------|--------|
|
13
|
+
| >= 0.1.0 | >= v0.14.15 | >= 2.1 |
|
14
|
+
| < 0.1.0 | >= v0.12.0 | >= 1.9 |
|
15
|
+
|
6
16
|
|
7
17
|
## Installation
|
8
18
|
|
9
|
-
install with gem or
|
19
|
+
install with gem or td-agent-gem command as:
|
10
20
|
|
11
21
|
`````
|
12
|
-
###
|
13
|
-
gem install fluent-plugin-twilio
|
22
|
+
### for local fluentd
|
23
|
+
$ gem install fluent-plugin-twilio
|
14
24
|
|
15
|
-
### td-
|
16
|
-
|
25
|
+
### for td-agent2 (standard)
|
26
|
+
$ sudo td-agent-gem install fluent-plugin-twilio
|
17
27
|
`````
|
18
28
|
|
19
29
|
## Configuration
|
@@ -29,12 +39,12 @@ fluent_logger.post('notify.call', {
|
|
29
39
|
### Sample
|
30
40
|
`````
|
31
41
|
<source>
|
32
|
-
type http
|
42
|
+
@type http
|
33
43
|
port 8888
|
34
44
|
</source>
|
35
45
|
|
36
46
|
<match notify.call>
|
37
|
-
type twilio
|
47
|
+
@type twilio
|
38
48
|
|
39
49
|
# Set account Sid and Token from twilio.com/user/account
|
40
50
|
account_sid TWILIO_ACCOUNT_SID # Required
|
@@ -47,11 +57,36 @@ fluent_logger.post('notify.call', {
|
|
47
57
|
# To call multiple phone at the same time, list them with comma like below.
|
48
58
|
default_number +819012345678,+818012345678 # Optional
|
49
59
|
|
50
|
-
# Set log level to prevent info error
|
51
|
-
log_level warn
|
60
|
+
# Set log level to prevent info error
|
61
|
+
@log_level warn
|
52
62
|
</match>
|
53
63
|
`````
|
54
64
|
|
65
|
+
### Sample to customize messages
|
66
|
+
|
67
|
+
You can customize message using [filter_record_transformer](http://docs.fluentd.org/v0.14/articles/filter_record_transformer).
|
68
|
+
|
69
|
+
```
|
70
|
+
<source>
|
71
|
+
@type http
|
72
|
+
port 8888
|
73
|
+
@label @NOTIFY
|
74
|
+
</source>
|
75
|
+
|
76
|
+
<label @NOTIFY>
|
77
|
+
<filter>
|
78
|
+
@type record_transformer
|
79
|
+
<record>
|
80
|
+
message Hi. ${record["name"]} has made a order of ${record["item"]} just now.
|
81
|
+
</record>
|
82
|
+
</filter>
|
83
|
+
<match>
|
84
|
+
@type twilio
|
85
|
+
# snip ...
|
86
|
+
</match>
|
87
|
+
</label>
|
88
|
+
```
|
89
|
+
|
55
90
|
### Quick Test
|
56
91
|
`````
|
57
92
|
# test call to +819012345678 and say "Help! System ABC has down." with woman voice.
|
@@ -3,11 +3,11 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "fluent-plugin-twilio"
|
6
|
-
s.version = "0.0
|
6
|
+
s.version = "0.1.0"
|
7
7
|
s.authors = ["Kentaro Yoshida"]
|
8
8
|
s.email = ["y.ken.studio@gmail.com"]
|
9
9
|
s.homepage = "https://github.com/y-ken/fluent-plugin-twilio"
|
10
|
-
s.summary = %q{Fluentd Output plugin to make a call with Twilio VoIP API. Twiml supports text-to-speech with many languages ref. https://www.twilio.com/docs/api/twiml/say}
|
10
|
+
s.summary = %q{Fluentd Output plugin to make a phone call with Twilio VoIP API. Twiml supports text-to-speech with many languages ref. https://www.twilio.com/docs/api/twiml/say}
|
11
11
|
|
12
12
|
s.files = `git ls-files`.split("\n")
|
13
13
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
@@ -17,6 +17,6 @@ Gem::Specification.new do |s|
|
|
17
17
|
# specify any dependencies here; for example:
|
18
18
|
s.add_development_dependency "rake"
|
19
19
|
s.add_development_dependency "test-unit", ">= 3.1.0"
|
20
|
-
s.add_runtime_dependency "fluentd"
|
20
|
+
s.add_runtime_dependency "fluentd", ">= 0.14.15", "< 2"
|
21
21
|
s.add_runtime_dependency "twilio-ruby"
|
22
22
|
end
|
@@ -1,44 +1,36 @@
|
|
1
|
-
|
1
|
+
require 'uri'
|
2
|
+
require 'twilio-ruby'
|
3
|
+
|
4
|
+
require 'fluent/plugin/output'
|
5
|
+
|
6
|
+
class Fluent::Plugin::TwilioOutput < Fluent::Plugin::Output
|
2
7
|
Fluent::Plugin.register_output('twilio', self)
|
3
8
|
|
4
9
|
config_param :account_sid, :string
|
5
|
-
config_param :auth_token, :string, :
|
6
|
-
config_param :from_number, :string, :
|
7
|
-
config_param :default_number, :string, :
|
8
|
-
config_param :default_voice, :string, :
|
9
|
-
config_param :language, :string, :
|
10
|
+
config_param :auth_token, :string, secret: true
|
11
|
+
config_param :from_number, :string, default: ''
|
12
|
+
config_param :default_number, :string, default: ''
|
13
|
+
config_param :default_voice, :string, default: 'woman'
|
14
|
+
config_param :language, :string, default: 'ja-jp'
|
10
15
|
|
11
16
|
VOICE_MAP = ['man', 'woman']
|
12
17
|
|
13
|
-
# Define `log` method for v0.10.42 or earlier
|
14
|
-
unless method_defined?(:log)
|
15
|
-
define_method("log") { $log }
|
16
|
-
end
|
17
|
-
|
18
|
-
def initialize
|
19
|
-
super
|
20
|
-
require 'uri'
|
21
|
-
require 'twilio-ruby'
|
22
|
-
end
|
23
|
-
|
24
18
|
def configure(conf)
|
25
19
|
super
|
26
20
|
|
27
21
|
end
|
28
22
|
|
29
|
-
def
|
23
|
+
def process(tag, es)
|
30
24
|
es.each do |time,record|
|
31
25
|
number = record['number'].nil? ? @default_number : record['number']
|
32
26
|
@voice = VOICE_MAP.include?(record['voice']) ? record['voice'] : @default_voice
|
33
27
|
call(number, record['message'])
|
34
28
|
end
|
35
|
-
|
36
|
-
chain.next
|
37
29
|
end
|
38
30
|
|
39
31
|
def call(number, message)
|
40
32
|
response = Twilio::TwiML::Response.new do |r|
|
41
|
-
r.Say message, :
|
33
|
+
r.Say message, voice: @voice, language: @language
|
42
34
|
end
|
43
35
|
xml = response.text.sub(/<[^>]+?>/, '')
|
44
36
|
url = "http://twimlets.com/echo?Twiml=#{URI.escape(xml)}"
|
@@ -48,7 +40,7 @@ class Fluent::TwilioOutput < Fluent::Output
|
|
48
40
|
account = client.account
|
49
41
|
number.gsub(' ', '').split(',').each do |to_number|
|
50
42
|
begin
|
51
|
-
|
43
|
+
account.calls.create({from: @from_number, to: to_number, url: url})
|
52
44
|
rescue => e
|
53
45
|
log.error "twilio: Error: #{e.message}"
|
54
46
|
end
|
data/test/helper.rb
CHANGED
@@ -1,28 +1,10 @@
|
|
1
|
-
require '
|
2
|
-
require 'bundler'
|
3
|
-
begin
|
4
|
-
Bundler.setup(:default, :development)
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
1
|
+
require 'bundler/setup'
|
10
2
|
require 'test/unit'
|
11
3
|
|
12
|
-
$LOAD_PATH.unshift(File.join(
|
13
|
-
$LOAD_PATH.unshift(
|
4
|
+
$LOAD_PATH.unshift(File.join(__dir__, '..', 'lib'))
|
5
|
+
$LOAD_PATH.unshift(__dir__)
|
14
6
|
require 'fluent/test'
|
15
|
-
|
16
|
-
nulllogger = Object.new
|
17
|
-
nulllogger.instance_eval {|obj|
|
18
|
-
def method_missing(method, *args)
|
19
|
-
# pass
|
20
|
-
end
|
21
|
-
}
|
22
|
-
$log = nulllogger
|
23
|
-
end
|
7
|
+
require 'fluent/test/driver/output'
|
24
8
|
|
25
9
|
require 'fluent/plugin/out_twilio'
|
26
10
|
|
27
|
-
class Test::Unit::TestCase
|
28
|
-
end
|
@@ -11,8 +11,8 @@ class TwilioOutputTest < Test::Unit::TestCase
|
|
11
11
|
from_number +8112345678
|
12
12
|
]
|
13
13
|
|
14
|
-
def create_driver(conf=CONFIG
|
15
|
-
Fluent::Test::
|
14
|
+
def create_driver(conf=CONFIG)
|
15
|
+
Fluent::Test::Driver::Output.new(Fluent::Plugin::TwilioOutput).configure(conf)
|
16
16
|
end
|
17
17
|
|
18
18
|
def test_configure
|
@@ -44,12 +44,12 @@ class TwilioOutputTest < Test::Unit::TestCase
|
|
44
44
|
|
45
45
|
|
46
46
|
def test_emit
|
47
|
-
d1 = create_driver(CONFIG
|
48
|
-
d1.run do
|
49
|
-
d1.
|
47
|
+
d1 = create_driver(CONFIG)
|
48
|
+
d1.run(default_tag: 'notify.call') do
|
49
|
+
d1.feed({'message' => 'hello world.'})
|
50
50
|
end
|
51
|
-
|
52
|
-
assert_equal 0,
|
51
|
+
events = d1.events
|
52
|
+
assert_equal 0, events.length
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
metadata
CHANGED
@@ -1,78 +1,75 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-twilio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Kentaro Yoshida
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2017-06-12 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: test-unit
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: 3.1.0
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: 3.1.0
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: fluentd
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
47
|
+
version: 0.14.15
|
48
|
+
- - "<"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '2'
|
54
51
|
type: :runtime
|
55
52
|
prerelease: false
|
56
53
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
54
|
requirements:
|
59
|
-
- -
|
55
|
+
- - ">="
|
60
56
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
57
|
+
version: 0.14.15
|
58
|
+
- - "<"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '2'
|
62
61
|
- !ruby/object:Gem::Dependency
|
63
62
|
name: twilio-ruby
|
64
63
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
64
|
requirements:
|
67
|
-
- -
|
65
|
+
- - ">="
|
68
66
|
- !ruby/object:Gem::Version
|
69
67
|
version: '0'
|
70
68
|
type: :runtime
|
71
69
|
prerelease: false
|
72
70
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
71
|
requirements:
|
75
|
-
- -
|
72
|
+
- - ">="
|
76
73
|
- !ruby/object:Gem::Version
|
77
74
|
version: '0'
|
78
75
|
description:
|
@@ -82,8 +79,8 @@ executables: []
|
|
82
79
|
extensions: []
|
83
80
|
extra_rdoc_files: []
|
84
81
|
files:
|
85
|
-
- .gitignore
|
86
|
-
- .travis.yml
|
82
|
+
- ".gitignore"
|
83
|
+
- ".travis.yml"
|
87
84
|
- Gemfile
|
88
85
|
- LICENSE.txt
|
89
86
|
- README.md
|
@@ -94,28 +91,27 @@ files:
|
|
94
91
|
- test/plugin/test_out_twilio.rb
|
95
92
|
homepage: https://github.com/y-ken/fluent-plugin-twilio
|
96
93
|
licenses: []
|
94
|
+
metadata: {}
|
97
95
|
post_install_message:
|
98
96
|
rdoc_options: []
|
99
97
|
require_paths:
|
100
98
|
- lib
|
101
99
|
required_ruby_version: !ruby/object:Gem::Requirement
|
102
|
-
none: false
|
103
100
|
requirements:
|
104
|
-
- -
|
101
|
+
- - ">="
|
105
102
|
- !ruby/object:Gem::Version
|
106
103
|
version: '0'
|
107
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
-
none: false
|
109
105
|
requirements:
|
110
|
-
- -
|
106
|
+
- - ">="
|
111
107
|
- !ruby/object:Gem::Version
|
112
108
|
version: '0'
|
113
109
|
requirements: []
|
114
110
|
rubyforge_project:
|
115
|
-
rubygems_version:
|
111
|
+
rubygems_version: 2.2.5
|
116
112
|
signing_key:
|
117
|
-
specification_version:
|
118
|
-
summary: Fluentd Output plugin to make a call with Twilio VoIP API. Twiml supports
|
113
|
+
specification_version: 4
|
114
|
+
summary: Fluentd Output plugin to make a phone call with Twilio VoIP API. Twiml supports
|
119
115
|
text-to-speech with many languages ref. https://www.twilio.com/docs/api/twiml/say
|
120
116
|
test_files:
|
121
117
|
- test/helper.rb
|