# 第五週 聊天機器人
## 1. 建立 "Watson Assistent" 服務
step 1: Login IBM Cloud https://cloud.ibm.com/login
step 2: 點選 "型錄" , 然後在左邊的選單中, 點選 "服務" 後,再勾選 "AI/機器學習", 就可以看到 watson cognitive 相關的服務.
step 3: 點選 "Watson Assistant" 服務. "選取地區" 用預設值 "達拉斯", 將服務名稱取名為 "Watson Assistant-ntust" 後,點選右邊的 "建立" 按鈕.
step 4: 開啟 "Watson Assistant" 編輯工具建立 "對話技能" (dialog skill)
## 2. 建立 dialog skill
step 1: 在開啟 "Watson Assistant" 編輯工具後,從左邊的 menu,點選"Skills".
step 2: 點選"Create Skills"建立一個新的技能
step 3: 點選"Dialog Skill", 然後點選"Next"
step 4: 在建立"Dialog Skill"的填表時,記得把"Language"選成 Chinese (Traditional),如此,才能辨識繁體中文.
### 2.1 建立 intent
step 1: 點選"Create intent"
step 2: 輸入intent name: 營業時間, 點選按鈕create intent
step 3: 輸入User example
#營業時間
```
"幾點開門?"
"幾點關門?"
"幾點可以來?"
"最晚幾點要入場?"
"幾點打烊?"
"請問你們餐廳幾點打烊?"
```
#餐廳訂位
```
"我想訂下星期三晚上七點"
"我想訂星期日中午十二點半"
"星期六下午三點"
"我想訂位"
"下星期三下午三點有沒有空?"
"3位"
```
#店家位置
```
"請問地址是在哪裡?"
"請告訴我您的地址?"
"你們的店靠哪裡?"
```
### 2.2 建立 entity
step 1: 點選左列選單"entities"的"My entity"
step 2: 點選"Create entity"
step 3: 輸入entity name,然後點選"Create entity"
step 4: 點選 "add value"
step 5: 點選左列選單"entities"的"system entities"
@地點
```
北車店 捷運台北車站 北車 台北車站
南港店 捷運南港站 南港
板橋店 捷運板橋站 板橋
```
### 2.3 建立 dialog
step 1: 點選左列選單"dialog"
在建立對話(dialog)的時候, 每一個問句, 用一個節點(node) 來代表.也可將相關的問句, 用一個資料夾(folder)來整理.
通常在建立 node 時, 有下列幾種技巧:
1. 直接回應**節點** (Add node)
在每一個新增的節點, assistant 都會重新去辨識 #intent, @entity, $context variable 判斷, 再輸入回應文字的內容.
2. 客製化回應 - Multiple conditioned responses
啟用此功能,您的機器人可以根據其他條件對同一輸入提供不同的回應。
範例:

3. 客製化回應 - Slots
啟用此功能可收集 "對話" 在單個節點內回應用戶所需的信息。
- [V] Prompt for everything
"check" 啟動上面的功能, 可在單個提示中詢問多條信息,因此您的用戶可以一次提供所有信息,並將用戶的回答儲存在變數 $ 當中。
範例:


這是最後 dialog 的完成圖

## 3. 建立 assistant
參考資料
1. Watson Assistant 入門指導教教學
https://cloud.ibm.com/docs/assistant?topic=assistant-getting-started
2. 建立 assistant
https://cloud.ibm.com/docs/assistant?topic=assistant-assistant-add
2. 將 skill 新增至 assistant
https://cloud.ibm.com/docs/assistant?topic=assistant-skill-add
3. 建立"動作"結點:
https://medium.com/ibm-watson/why-is-it-still-so-hard-to-build-a-useful-chatbot-daa46da6a00e
4. 建置複雜對話
https://cloud.ibm.com/docs/assistant?topic=assistant-tutorial