Route 的使用說明

以下將說明 Kamigo 如何解讀用戶輸入,並且找出對應的 Controller Action。

語意理解模型

Kamigo 目前使用了最簡單的解析器去解讀用戶輸入,其格式如下:

{{http_method}} {{path}}
{{json}}

舉例來說,若用戶輸入如下:

GET /todos

即視為用戶對 /todos 發出 GET Request。

POST /todos
{"todo":{"name":"kamigo"}}

即視為用戶對 /todos 發出 POST Reques,並且傳遞一個 json 作為 body。

預設值

其中,如果 http_method 是 GET 的話,可省略,path 開頭的 / 也可以省略,所以當用戶的輸入如下:

GET /menu

/menu

menu

即視為用戶對 /menu 發出 GET Request。

之後 Kamigo 的計畫包含實作支援各大語意理解平台的 Adapter。

routes

以下示範在 routes.rb 適用於聊天機器人的各種寫法。

可以寫中文

get "目錄", to: 'home#menu'

如此即可接受用戶輸入「目錄」時,將 Request 轉給 home_controller 的 menu 方法來處理。

可以使用變數

get "學 (*keyword) (*message)", to: 'keywords#learn'

如此即可接受用戶輸入「學 A B」時,將 Request 轉給 keywords_controller 的 learn 方法來處理,你可以在 controller 當中寫 params[:keyword] 取得用戶輸入的 A,寫 params[:message] 取得用戶輸入的 B。

最後一個有括號的變數可省略輸入

get '(*location)天氣', to: 'weathers#show'

如此即可接受用戶輸入「台北天氣」時,將 Request 轉給 weathers_controller 的 show 方法來處理,你可以在 controller 當中寫 params[:location] 取得用戶輸入的「台北」。

get '(*location)天氣(*other)', to: 'weathers#show'

如此即可同時接受用戶輸入「台北天氣」以及「台北天氣如何」。

results matching ""

    No results matching ""