kamigo 0.6.0 → 0.10.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 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: []