kamigo 0.19.0 → 0.20.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -2
- data/app/controllers/line_controller.rb +2 -19
- data/lib/kamigo.rb +2 -0
- data/lib/kamigo/event_parsers/line_event_parser.rb +2 -1
- data/lib/kamigo/request_handlers/line_request_handler.rb +32 -0
- data/lib/kamigo/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7378b8ac81d656a0279ae87d084410ff9ac89944054ad6f26a2571e94a3cf694
|
4
|
+
data.tar.gz: 3ca981698b7693e4ff20e3fd45bb38a47b60fa4b7fe20d57339997764609d286
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 505d6d3f8d32b016d0dbd72b3d35af48a065631a500d34575eff79fc1916f203395f6b7d60439ed9633b1c973ce840d1d02b9da7778c46719232ac8bf9e40ab4
|
7
|
+
data.tar.gz: 414c7828e10aea9c7c74a62b4c2dab36ab8e798c56f61bf2696c6ce51750e1e8083dd3d7d268ea38e855513f535a57a43a2ad4549cfc65d6a89d534cac4de4fc
|
data/README.md
CHANGED
@@ -18,6 +18,8 @@ cd kamigo_demo
|
|
18
18
|
# 安裝套件
|
19
19
|
bundle add kamigo
|
20
20
|
bundle add dotenv-rails
|
21
|
+
# 建立設定檔
|
22
|
+
rails g kamigo:install
|
21
23
|
# 新增 resource controller
|
22
24
|
rails g scaffold todo name desc
|
23
25
|
rails db:create
|
@@ -147,9 +149,15 @@ Kamigo 預設使用基本的語意理解模型,會將使用者輸入視為在
|
|
147
149
|
|
148
150
|
# 計畫
|
149
151
|
- 提供多種語意理解模型串接
|
152
|
+
- DialogFlow
|
153
|
+
- LUIS
|
150
154
|
- 網站使用者與聊天機器人使用者綁定
|
151
|
-
-
|
152
|
-
-
|
155
|
+
- Devise
|
156
|
+
- Log / 錯誤追蹤
|
157
|
+
- 支援其他平台
|
158
|
+
- Telegram
|
159
|
+
- Facebook Messenger
|
160
|
+
- Slack
|
153
161
|
|
154
162
|
## License
|
155
163
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
@@ -4,25 +4,8 @@ class LineController < ApplicationController
|
|
4
4
|
protect_from_forgery with: :null_session
|
5
5
|
|
6
6
|
def entry
|
7
|
-
|
8
|
-
|
9
|
-
events.each do |event|
|
10
|
-
output = process_event(event) || Kamigo.line_default_message
|
11
|
-
responser = Kamigo::EventResponsers::LineEventResponser.new
|
12
|
-
response = responser.response_event(event, output)
|
13
|
-
end
|
7
|
+
request_handler = Kamigo::RequestHandlers::LineRequestHandler.new(request, form_authenticity_token)
|
8
|
+
request_handler.handle
|
14
9
|
head :ok
|
15
10
|
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def process_event(event)
|
20
|
-
Kamigo.line_event_processors.each do |processor|
|
21
|
-
processor.request = request
|
22
|
-
processor.form_authenticity_token = form_authenticity_token
|
23
|
-
output = processor.process(event)
|
24
|
-
return output if output.present?
|
25
|
-
end
|
26
|
-
nil
|
27
|
-
end
|
28
11
|
end
|
data/lib/kamigo.rb
CHANGED
@@ -8,6 +8,8 @@ require "kamigo/events/line_event"
|
|
8
8
|
require "kamigo/event_parsers/line_event_parser"
|
9
9
|
require "kamigo/event_responsers/line_event_responser"
|
10
10
|
require "kamigo/event_processors/rails_router_processor"
|
11
|
+
require "kamigo/request_handlers/line_request_handler"
|
12
|
+
|
11
13
|
module Kamigo
|
12
14
|
mattr_accessor :line_default_message
|
13
15
|
@@line_default_message = {
|
@@ -12,7 +12,8 @@ module Kamigo
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def parse(event)
|
15
|
-
|
15
|
+
event_hash = JSON.parse(event.to_json, symbolize_names: true)
|
16
|
+
payload = event_hash[:src] || event_hash
|
16
17
|
response = client.get_profile(payload[:source][:userId])
|
17
18
|
line_event = Kamigo::Events::LineEvent.new
|
18
19
|
line_event.payload = payload
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Kamigo
|
2
|
+
module RequestHandlers
|
3
|
+
class LineRequestHandler
|
4
|
+
def initialize(request, form_authenticity_token)
|
5
|
+
@request = request
|
6
|
+
@form_authenticity_token = form_authenticity_token
|
7
|
+
end
|
8
|
+
|
9
|
+
def handle
|
10
|
+
parser = EventParsers::LineEventParser.new
|
11
|
+
events = parser.parse_events(@request)
|
12
|
+
events.each do |event|
|
13
|
+
output = process_event(event) || Kamigo.line_default_message
|
14
|
+
responser = EventResponsers::LineEventResponser.new
|
15
|
+
response = responser.response_event(event, output)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def process_event(event)
|
22
|
+
Kamigo.line_event_processors.each do |processor|
|
23
|
+
processor.request = @request
|
24
|
+
processor.form_authenticity_token = @form_authenticity_token
|
25
|
+
output = processor.process(event)
|
26
|
+
return output if output.present?
|
27
|
+
end
|
28
|
+
nil
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/kamigo/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kamigo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.20.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- etrex
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-03
|
11
|
+
date: 2021-04-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -125,6 +125,7 @@ files:
|
|
125
125
|
- lib/kamigo/events/basic_event.rb
|
126
126
|
- lib/kamigo/events/line_event.rb
|
127
127
|
- lib/kamigo/railtie.rb
|
128
|
+
- lib/kamigo/request_handlers/line_request_handler.rb
|
128
129
|
- lib/kamigo/version.rb
|
129
130
|
homepage: https://github.com/etrex/kamigo
|
130
131
|
licenses:
|