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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b0286bef7f7c96549005475052dd8346f44fe4e010a917322a6cdd3cbf654bee
4
- data.tar.gz: d7d456254873fa6e5ae5c15e8e27801068ee7cf96c7caa0cedf61f9f996e2ceb
3
+ metadata.gz: 7378b8ac81d656a0279ae87d084410ff9ac89944054ad6f26a2571e94a3cf694
4
+ data.tar.gz: 3ca981698b7693e4ff20e3fd45bb38a47b60fa4b7fe20d57339997764609d286
5
5
  SHA512:
6
- metadata.gz: a5aacaf96b30ea7c065c141fd279ace76d2e89ef087da6d609a95d8a24cf877fb40e25557e4903de0e2e37859f5a321a08c4a1dc3fab8bdb1e0f35fdbc20b6aa
7
- data.tar.gz: d02be888e22755e6484caa313bda70384cf8bd7e2c503da4586aa0cb3394dfbbb293e9edf119f7c47f986d902958a742d12e6d81a74712b80c82e61527880372
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
- - 支援 Telegram
152
- - 支援 Facebook Messenger
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
- parser = Kamigo::EventParsers::LineEventParser.new
8
- events = parser.parse_events(request)
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
- payload = JSON.parse(event.to_json, symbolize_names: true)[:src]
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
@@ -1,3 +1,3 @@
1
1
  module Kamigo
2
- VERSION = '0.19.0'.freeze
2
+ VERSION = '0.20.0'.freeze
3
3
  end
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.19.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-01 00:00:00.000000000 Z
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: