kamigo 0.6.0 → 0.10.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: 21366e85d6e20718c8c7ebc6eac94740928de80dc1e0a5dd5acbd6b722a57087
4
- data.tar.gz: 3cac9c2fec9298a9bf6cf697d319c62b7054c2303e3a0bf11c420aa0e2130b6c
3
+ metadata.gz: 6c37d93e670d52741747f5c8757b42d2945833b12c74366010ba4b70b665685f
4
+ data.tar.gz: 37c612b5bbe34236e3a3d583c6c212b4352be10cfcd5c9f5ef9a1ecfa203fbdc
5
5
  SHA512:
6
- metadata.gz: 36dd211fd0a0ae7c33f614cd3b80142961e0b486578336efc895b5351465de133276335f0fc95eaee9490403ae492347e6af17ad26815d9ad95bb8350ba1cf72
7
- data.tar.gz: af2d392ab4ba07e7562964b83d4fed92e5c4b08994125ab487e930d99637ee16358689e027598e915fc17d50e26aca0f68ac84c652ef5024d51b5a070d3c6783
6
+ metadata.gz: 4e94bee3022f707c23024408e1e77b543a06de37a72231efff58136f621bbe6f5ebcb81eb152134001b19215832e7629ad8ffd0cbf9760351a4a9b0be7aa920b
7
+ data.tar.gz: e62730e1fff290e8ffe94677d9a0a9fca5c2a126bf95430b5262dfd982435659cb5071453df7652bff710e5a3476cb0736317bdaa345bec45ec6ac478879ddff
data/README.md CHANGED
@@ -1,5 +1,4 @@
1
1
  # Kamigo 簡介
2
-
3
2
  Kamigo 是一個基於 Rails 的 Chatbot MVC Framework。
4
3
 
5
4
  Kamigo 讓你開發 Chatbot 就跟開發網站一樣容易,甚至可以同時開發網站以及 Chatbot 介面,共用 Controller 和 Model,只需要針對 Chatbot 實作 View。
@@ -9,7 +8,7 @@ Kamigo 提供了重要的 generator,讓你開發聊天機器人時可以快的
9
8
  以下將說明如何使用 Kamigo 來製作 Todo 的教學文件。
10
9
 
11
10
  # 建立新的 rails 專案
12
- 以下指令直接複製全部,直接貼到 bash 執行即可。
11
+ 將以下指令全部複製,直接貼到 bash 執行即可。
13
12
 
14
13
  ```bash
15
14
  # 建立新專案
@@ -26,49 +25,53 @@ rails db:migrate
26
25
  ```
27
26
 
28
27
  # 設定首頁
29
- 在 config/routes.rb 當中加入首頁設定:
28
+ `config/routes.rb` 當中加入首頁設定:
30
29
 
31
30
  ```
32
31
  root to: "todos#index"
33
32
  ```
34
33
 
35
34
  # 安裝 js 套件
35
+ <!-- TODO: 待卡米修改完 Kamiliff 後,需新增不同使用方式的說明 -->
36
36
  在 `app/assets/javascripts/application.js` 當中加入一行程式碼:
37
37
 
38
38
  ```
39
39
  //= require kamiliff
40
40
  ```
41
41
 
42
- # 設定聊天機器人環境變數
43
- 本文假設你已經有一個自己的聊天機器人,請在專案根目錄下新增一個 `.env` 檔並且填入以下內容:
42
+ # 設定聊天機器人 Webhook URL
43
+ 本文假設你已經有一個自己的聊天機器人,請將以下網址填入 LINE Bot 的 Webhook URL 欄位中:
44
44
 
45
45
  ```
46
- LINE_CHANNEL_SECRET=這裡填入你的 LINE_CHANNEL_SECRET
47
- LINE_CHANNEL_TOKEN=這裡填入你的 LINE_CHANNEL_TOKEN
48
- LIFF_COMPACT=這裡填入你的 LIFF_COMPACT
49
- LIFF_TALL=這裡填入你的 LIFF_TALL
50
- LIFF_FULL=這裡填入你的 LIFF_FULL
46
+ https://你的網域/line
51
47
  ```
52
48
 
53
- 你可以在你的 LINE 管理後台找到 LINE_CHANNEL_SECRET LINE_CHANNEL_TOKEN
49
+ 第一次開發 LINE Bot 的人可以服用此帖 [Webhook URL 設定 QA](/doc/06_setting.md#Webhook-URL-設定-QA)
54
50
 
55
- LIFF_COMPACT、LIFF_TALL 和 LIFF_FULL 你必須到 LINE 的後台中的 Liff 分頁去新增,詳細說明請參考 [kamiliff_demo](https://github.com/etrex/kamiliff_demo)。
56
-
57
- # 設定聊天機器人 webhook url
58
-
59
- 請將以下網址填入 LINE Bot 的 webhook url 欄位中:
51
+ # 設定聊天機器人環境變數
52
+ 請在專案根目錄下新增一個 `.env` 檔並且填入以下內容:
60
53
 
61
54
  ```
62
- https://你的網域/line
55
+ LINE_CHANNEL_SECRET=這裡填入你的 LINE_CHANNEL_SECRET
56
+ LINE_CHANNEL_TOKEN=這裡填入你的 LINE_CHANNEL_ACCESS_TOKEN
57
+ LIFF_COMPACT=這裡填入你的 COMPACT_LIFF_URL
58
+ LIFF_TALL=這裡填入你的 TALL_LIFF_URL
59
+ LIFF_FULL=這裡填入你的 FULL_LIFF_URL
63
60
  ```
64
61
 
62
+ - `LINE_CHANNEL_SECRET` 可以在 Messaging API 後台的 Basic settings 分頁中找到。
63
+ - `LINE_CHANNEL_ACCESS_TOKEN` 可以在 Messaging API 後台的 Messaging API 分頁中找到。
64
+ - `COMPACT_LIFF_URL`、`TALL_LIFF_URL` 和 `FULL_LIFF_URL` 需要到 LINE 後台的 LIFF 分頁新增後,即可獲得一組 LIFF URL。
65
+
66
+ Kamigo 預設的 LIFF Size 為 Compact,你也可以只新增 Compact LIFF URL。
67
+ 詳細的 LIFF 設定說明可以服用此帖 [LIFF 設定 QA](/doc/06_setting.md#LIFF-設定-QA)。
68
+
65
69
  至此串接完成。
66
70
 
67
71
  # 實際使用
68
-
69
72
  Kamigo 預設使用基本的語意理解模型,會將使用者輸入視為在瀏覽器網址上輸入文字,並且以 LINE Flex Message 來顯示對應的結果。
70
73
 
71
- 只要和你的聊天機器人說 `/`,就能看見首頁的樣子。
74
+ 開啟 LINE 和聊天機器人說 `/`,就能看到首頁的樣子。
72
75
 
73
76
  # 使用 kamigo 製作的聊天機器人
74
77
  - [kamigo demo](https://github.com/etrex/kamigo_demo)
@@ -77,12 +80,14 @@ Kamigo 預設使用基本的語意理解模型,會將使用者輸入視為在
77
80
  <p><img width="100" height="100" src="https://camo.githubusercontent.com/b8c51b15b20b159d356245277d079c04482acc01/68747470733a2f2f692e696d6775722e636f6d2f7534547675676e2e706e67"></p>
78
81
  - 守護寵物機器人
79
82
  <p><img width="100" height="100" src="/doc/images/pet_loved_qrcode.png"></p>
83
+
80
84
  # 詳細的說明文件
81
85
  - [Kamigo 架構概觀](/doc/01_intro.md)
82
86
  - [Route 的使用說明](/doc/02_route.md)
83
87
  - [Controller 的使用說明](/doc/03_controller.md)
84
88
  - [View 的使用說明](/doc/04_view.md)
85
89
  - [Form 的使用說明](/doc/05_form.md)
90
+ - [Kamigo 相關設定與 QA](/doc/06_setting.md)
86
91
 
87
92
  # 計畫
88
93
  - 提供多種語意理解模型串接
@@ -0,0 +1,34 @@
1
+ require 'uri'
2
+
3
+ class KamigoController < ApplicationController
4
+ def kamiform(http_method, path, resource)
5
+ error_message = "please generate model Kamiform by the following command:\n\nrails g model kamiform platform_type source_group_id http_method path params:jsonb field\nrails db:migrate\n\n"
6
+ begin
7
+ Kamiform
8
+ rescue StandardError
9
+ raise error_message
10
+ end
11
+
12
+ return nil if resource.errors.empty?
13
+
14
+ error = resource.errors.first
15
+ resource_name = resource.class.to_s.downcase
16
+ Kamiform.create(
17
+ platform_type: params[:platform_type],
18
+ source_group_id: params[:source_group_id],
19
+ http_method: http_method,
20
+ path: path,
21
+ params: params,
22
+ field: "#{resource_name}.#{error[0]}"
23
+ )
24
+
25
+ begin
26
+ render "#{resource_name.pluralize}/kamiform/#{error[0]}"
27
+ rescue StandardError
28
+ render json: {
29
+ type: 'text',
30
+ text: error[1]
31
+ }
32
+ end
33
+ end
34
+ end
@@ -16,7 +16,8 @@ class LineController < ApplicationController
16
16
  private
17
17
 
18
18
  def process_event(event)
19
- http_method, path, request_params = language_understanding(event.message)
19
+ http_method, path, request_params = slot_filling(event)
20
+ http_method, path, request_params = language_understanding(event.message) if http_method.nil?
20
21
  encoded_path = URI.encode(path)
21
22
  request_params = event.platform_params.merge(request_params)
22
23
  output = reserve_route(encoded_path, http_method: http_method, request_params: request_params, format: :line)
@@ -32,6 +33,34 @@ class LineController < ApplicationController
32
33
  })
33
34
  end
34
35
 
36
+ def slot_filling(event)
37
+ begin
38
+ Kamiform
39
+ rescue StandardError
40
+ return [nil, nil, nil]
41
+ end
42
+
43
+ form = Kamiform.find_by(
44
+ platform_type: event.platform_type,
45
+ source_group_id: event.source_group_id
46
+ )
47
+ return [nil, nil, nil] if form.nil?
48
+
49
+ http_method = form.http_method
50
+ path = form.path
51
+ request_params = form.params
52
+
53
+ # fill
54
+ if form.field['.'].nil?
55
+ request_params[form.field] = event.message
56
+ else
57
+ *head, tail = form.field.split('.')
58
+ request_params.dig(*head)[tail] = event.message
59
+ end
60
+ form.destroy
61
+ [http_method.upcase, path, request_params]
62
+ end
63
+
35
64
  def language_understanding(text)
36
65
  http_method = %w[GET POST PUT PATCH DELETE].find do |http_method|
37
66
  text.start_with? http_method
@@ -1,3 +1,3 @@
1
1
  module Kamigo
2
- VERSION = '0.6.0'
2
+ VERSION = '0.10.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.6.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - etrex
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-27 00:00:00.000000000 Z
11
+ date: 2020-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.12.0
33
+ version: 0.17.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 0.12.0
40
+ version: 0.17.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: kamiflex
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -92,6 +92,7 @@ files:
92
92
  - Rakefile
93
93
  - app/assets/config/kamigo_manifest.js
94
94
  - app/controllers/concerns/reverse_route.rb
95
+ - app/controllers/kamigo_controller.rb
95
96
  - app/controllers/line_controller.rb
96
97
  - config/routes.rb
97
98
  - lib/generators/rails/kamigo/USAGE
@@ -115,7 +116,7 @@ homepage: https://github.com/etrex/kamigo
115
116
  licenses:
116
117
  - MIT
117
118
  metadata: {}
118
- post_install_message:
119
+ post_install_message:
119
120
  rdoc_options: []
120
121
  require_paths:
121
122
  - lib
@@ -130,8 +131,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
131
  - !ruby/object:Gem::Version
131
132
  version: '0'
132
133
  requirements: []
133
- rubygems_version: 3.0.6
134
- signing_key:
134
+ rubygems_version: 3.1.4
135
+ signing_key:
135
136
  specification_version: 4
136
137
  summary: a chatbot framework based on rails
137
138
  test_files: []