# 以旅遊景點為例的聊天機器人 ## 建立 Intent #住宿資訊 ``` 可以住哪裡? 有什麼住宿地方? 有飯店或民宿可以住嗎? 我想過夜 ``` #詢問景點 ``` 有哪些景點? 有哪些景觀型步道? 請介紹風景優美的步道? 請問這裡有什麼好玩的地方? ``` ## 建立 Entity @步道距離 ``` 短距離步道 短距離, 1小時, 1小時以內, 來回1小時, 短 中距離步道 中距離, 2小時左右, 來回2小時 長距離步道 長距離, 3小時以上,半天 ``` @房型 ``` 單人房 1人房, 1人 雙人房 2人房, 2人, 兩人房 通鋪 3人, 4人, 團體 ``` 設定 System entities @sys-time @sys-date @sys-number ## 建立 Dialog ### Required 先在預設 "歡迎" 節點讓使用者知道聊天機器人可以提供哪些資訊 最後在預設 "其他事情" 節點設計讓使用者以另一種方式重複對話, 試圖找出使用者的意圖. 歡迎 ``` 您好,這裡是太魯閣國家公園. 我們可以提供住宿, 景點的資訊. 有什麼能為您服務的地方? ``` 其他事情 ``` 我不明白您的意思, 可以換種方式說嗎? ``` ### 設計 dialog 及回答 在上述兩個預設節點, "歡迎" & "其他事情", 中間, 設計對話節點. 基本上, 當機器人讀到一句話的時候, 會根據其 #intent, @entity, 由上到下訪問每一個對話節點, 找到合適的回覆時, 就會取出其回應的文字內容, 回傳給使用者. 也就是說, 在每一個新增的節點, assistant 都會重新去辨識 #intent, @entity, $context variable 判斷, 再輸入回應文字的內容. 最後當無法辨識屬於哪一個節點(active node) 時, 機器人的回覆就會落入最後預設節點, "其他事情". ![](https://i.imgur.com/21c0PlP.jpg) 詢問景點的對話範例 ![](https://i.imgur.com/yvz1M7K.jpg)