kamigo 0.20.0 → 0.21.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: 7378b8ac81d656a0279ae87d084410ff9ac89944054ad6f26a2571e94a3cf694
4
- data.tar.gz: 3ca981698b7693e4ff20e3fd45bb38a47b60fa4b7fe20d57339997764609d286
3
+ metadata.gz: 603369132a555eac9c1006ef6c72942613f949a7969062cbb6a1113082cdfa01
4
+ data.tar.gz: 1723ac2a6317728974b8f8605e244490277851e652732524637ac41ba208bc1a
5
5
  SHA512:
6
- metadata.gz: 505d6d3f8d32b016d0dbd72b3d35af48a065631a500d34575eff79fc1916f203395f6b7d60439ed9633b1c973ce840d1d02b9da7778c46719232ac8bf9e40ab4
7
- data.tar.gz: 414c7828e10aea9c7c74a62b4c2dab36ab8e798c56f61bf2696c6ce51750e1e8083dd3d7d268ea38e855513f535a57a43a2ad4549cfc65d6a89d534cac4de4fc
6
+ metadata.gz: 12a69d80119b1b44d96c65aa917c4df52cf7103b6588938d1004bc7c110d022bd6d1dc749c88539d93fe734c2916cca73e53bc0d4966dc7997c79331f5778583
7
+ data.tar.gz: 51e23e962faafa4abd7a7fd153c3187147d1a9bb7f1905f32fda1efeb91ad63db00e1a26d70f41703317423fdf229f0e24f468eeceaeed734dac537c9e574645
data/README.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 詳細的說明文件
2
+
3
+ [Kamigo 詳細說明](https://etrex.tw/kamigo/)
4
+
1
5
  # Kamigo 簡介
2
6
  Kamigo 是一個基於 Rails 的 Chatbot MVC Framework。
3
7
 
@@ -139,14 +143,6 @@ Kamigo 預設使用基本的語意理解模型,會將使用者輸入視為在
139
143
  - 守護寵物機器人
140
144
  <p><img width="100" height="100" src="/doc/images/pet_loved_qrcode.png"></p>
141
145
 
142
- # 詳細的說明文件
143
- - [Kamigo 架構概觀](/doc/01_intro.md)
144
- - [Route 的使用說明](/doc/02_route.md)
145
- - [Controller 的使用說明](/doc/03_controller.md)
146
- - [View 的使用說明](/doc/04_view.md)
147
- - [Form 的使用說明](/doc/05_form.md)
148
- - [Kamigo 相關設定與 QA](/doc/06_setting.md)
149
-
150
146
  # 計畫
151
147
  - 提供多種語意理解模型串接
152
148
  - DialogFlow
@@ -0,0 +1,56 @@
1
+ require 'rails/generators/named_base'
2
+ require 'rails/generators/resource_helpers'
3
+
4
+ module Rails
5
+ module Generators
6
+ class CreateStateGenerator < NamedBase
7
+ include Rails::Generators::ResourceHelpers
8
+ namespace "devise"
9
+ argument :attributes, type: :string, default: 'kamigo_state'
10
+
11
+ class_option :timestamps, type: :boolean, default: true
12
+
13
+ def create_root_folder
14
+ path = File.join('app/views', controller_file_path)
15
+ empty_directory path unless File.directory?(path)
16
+ end
17
+
18
+ def copy_view_files
19
+ filenames.each do |filename|
20
+ template filename, File.join('app/views', controller_file_path, filename)
21
+ end
22
+ end
23
+
24
+ protected
25
+
26
+ def attributes_names
27
+ [:id] + super
28
+ end
29
+
30
+ def filenames
31
+ [
32
+ "index.line.erb",
33
+ "show.line.erb",
34
+ "edit.liff.erb",
35
+ "new.liff.erb",
36
+ ]
37
+ end
38
+
39
+ def full_attributes_list
40
+ if options[:timestamps]
41
+ attributes_list(attributes_names + %w(created_at updated_at))
42
+ else
43
+ attributes_list(attributes_names)
44
+ end
45
+ end
46
+
47
+ def attributes_list(attributes = attributes_names)
48
+ if self.attributes.any? {|attr| attr.name == 'password' && attr.type == :digest}
49
+ attributes = attributes.reject {|name| %w(password password_confirmation).include? name}
50
+ end
51
+
52
+ attributes.map { |a| ":#{a}"} * ', '
53
+ end
54
+ end
55
+ end
56
+ end
@@ -14,18 +14,35 @@ module Kamigo
14
14
  def parse(event)
15
15
  event_hash = JSON.parse(event.to_json, symbolize_names: true)
16
16
  payload = event_hash[:src] || event_hash
17
- response = client.get_profile(payload[:source][:userId])
18
17
  line_event = Kamigo::Events::LineEvent.new
19
18
  line_event.payload = payload
20
19
  line_event.reply_token = event['replyToken']
21
- line_event.profile = JSON.parse(response.body)
22
20
  line_event.source_type = payload.dig(:source, :type)
23
21
  line_event.source_group_id = payload.dig(:source, :groupId) || payload.dig(:source, :roomId) || payload.dig(:source, :userId)
24
22
  line_event.source_user_id = payload.dig(:source, :userId) || payload.dig(:source, :groupId) || payload.dig(:source, :roomId)
25
23
  line_event.message_type = payload.dig(:message, :type) || payload.dig(:type)
26
24
  line_event.message = payload.dig(:message, :text) || payload.dig(:postback, :data) || payload.dig(:message, :address) || line_event.message_type
25
+ line_event.profile = get_profile(line_event)
27
26
  line_event
28
27
  end
28
+
29
+ def get_profile(line_event)
30
+ case line_event.source_type
31
+ when 'group'
32
+ response = client.get_group_member_profile(
33
+ line_event.source_group_id,
34
+ line_event.source_user_id
35
+ )
36
+ when 'room'
37
+ response = client.get_room_member_profile(
38
+ line_event.source_group_id,
39
+ line_event.source_user_id
40
+ )
41
+ else
42
+ response = client.get_profile(line_event.source_user_id)
43
+ end
44
+ JSON.parse(response.body)
45
+ end
29
46
  end
30
47
  end
31
48
  end
@@ -1,3 +1,3 @@
1
1
  module Kamigo
2
- VERSION = '0.20.0'.freeze
2
+ VERSION = '0.21.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.20.0
4
+ version: 0.21.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-04-03 00:00:00.000000000 Z
11
+ date: 2021-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -109,6 +109,7 @@ files:
109
109
  - lib/generators/kamigo/install_generator.rb
110
110
  - lib/generators/rails/kamigo/USAGE
111
111
  - lib/generators/rails/kamigo/kamigo_generator.rb
112
+ - lib/generators/rails/kamigo/state_generator.rb
112
113
  - lib/generators/rails/kamigo/templates/edit.liff.erb
113
114
  - lib/generators/rails/kamigo/templates/index.line.erb
114
115
  - lib/generators/rails/kamigo/templates/new.liff.erb