簡體   English   中英

如何在Chatbot中實現“后退”對話

[英]How to implement “Back” conversation in Chatbot

我希望在MS botframework中實現以下場景對話

Bot: =>  what can do for you?            => User
Bot: <=  I want to rent a house         <= User
Bot: =>  Which city?                    => User
Bot: <=                 London          <= User
Bot: =>  How many bedrooms              => User
Bot: <=  Ops, I want a home in New York <= User  #User wish to change the topic here..

在MS botframework中,如何使用Waterfall對話框實現上述故事? 任何建議?

我認為不可能通過合理的努力用瀑布式方法來實現它。 在簡單的情況下,您可以嘗試分析響應,在您的情況下,它是多個卧室,如果它不是數字,您可以檢查另一個請求的響應。 這里的問題是你應該對所有回復和開放文本回復都這樣做,很難區分合法答案或主題變化。

因此,您應該使用intent方法實現它。

首先,您需要一個意圖檢測器,您可以使用Luis,因為它與bot框架高度集成或實現您自己的意圖檢測器。

在你的情況下,這個探測器應該檢測意圖 - I want to rent a house (汽車等)。

var intents = new builder.IntentDialog({ recognizers: [luis] });

請參閱https://docs.botframework.com/en-us/node/builder/chat/IntentDialog這些代碼示例適用於Node.Js,但相同的方法適用於.Net。

然后,對於每個意圖,您應該注冊一個適當的操作,啟動一個獲取所有必要數據的瀑布式對話框。

bot.beginDialogAction("RentHouseAction", RentHouseDialog.name+":/", { matches: "RentHouseAction"});

其中RentHouseAction是你在Luis RentHouseDialog中定義的動作,它是一個駐留在庫中的瀑布對話框。

bot.library(RentHouseDialog);

請注意,當RentHouseDialog對話框完成時,它將返回上一個對話框已停止的位置。 所以,它再次問 - How many bedrooms 要防止出現這種情況,您應該檢測到您之前的對話框尚未完成(您可以使用狀態為其收集答案)並調用session.replaceDialog('<>');

我希望它對你有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM