2017-05-11 56 views
0

我們正在使用Watson對話構建應用程序,但在處理無效的用戶響應時遇到問題。我們的機器人是爲了使酒店預訂和簡化版本的對話框而設計的:Watson對話 - 處理無效輸入

  • 節點1:清除上下文;問「你想要到達什麼日期?」
  • 節點2:Trigger @ sys-date;更新日期的上下文;問「你想留多少晚上 」
  • 節點3:Trigger @ sys-number;更新 上下文的夜晚數;總結預訂「所以你 到達[日期]對[號碼NIGHTS]」

如果用戶提供合理的答案,那麼所有的作品,但如果他們的入住日期響應「嗒嗒」它因此我們添加了一個新的節點(作爲節點2的兄弟節點),並帶有「anything_else」觸發器並輸出「抱歉,我們想要一個日期,然後再試一次」。

理想情況下,我們希望循環回到我們現有的Node 2,以便觸發器@sys-date可以捕獲用戶修改的響應,但創建了一個無限循環,因此我們將子節點「anything_else」節點2即更新日期的上下文,並詢問「有多少夜晚......」,但現在我們想要在節點3中捕獲對該問題的響應,以便我們可以獲取現有流,從而向節點3添加跳轉。我們最終退出對話分支。

如果我們使用「anything_else」來捕獲無效的用戶輸入,我們如何重新加入現有的對話流?目前我們唯一的解決方案是複製節點2和3,但在真正的對話分支中有更多的節點,因此這種方法不實際。

回答

0

你只需要Jump tonode(節點2左邊有3個點的小氣球)。這樣,如果用戶輸入了無效的日期或數字,它將返回以捕獲用戶有效的輸入,並將其保存在上下文中,就像您想要的那樣。您可以跳轉到工作區的任何節點。這是一個json exemple。希望我幫助你!

+0

謝謝。在發佈我的問題之前搜索了幾個星期的解決方案後,我終於明白,在跳躍之前我需要等待用戶回覆,但只能通過在「anything_else」和跳轉之間添加一個額外的「虛擬」節點來實現。帶3個點的氣球解決了這個問題。 –