2017-06-02 46 views
1

我正在開發與微軟博特框架,路易斯和LUISActionBinding一個機器人。如何從一個意圖跳到另一個LuisActionDialog傳遞上下文的

在我LUIS應用程序我有3個主要的意圖:BuyXFindAFINDB。該機器人的主要目標是幫助用戶購買X,但他們可能首先要先使用某些過濾器搜索A或B,或者直接去購買X.

我爲每個意圖設置了Actions與必需和可選字段,一切都很好,我能夠接收由我的意圖處理程序的操作返回的對象。

在FindA處理我幫助用戶選擇一個A和在FINDB處理我幫助用戶選擇一個B.在BuyX我需要從A信息和B繼續。但是如果用戶做了FindA或FindB對話框,我想重用那些我得到的東西。

我的問題是我怎麼能觸發從意圖FindA意圖BuyX,使代碼達到我BuyXAction類依據是什麼,我能夠從FindA動作+有意收購已經分配的一些屬性。

這樣,用戶就不必輸入任何東西說,他希望FindA對話期間購買X也不重複的東西,他已經做了/選擇。

在此先感謝。

回答

1

我相信SubActions的概念可能會幫助你。看看這個documentation topic來找到更多關於它如何工作和一些代碼亮點。

觸發一個上下文動作以前沒有上下文(即從 從頭)

用戶可以提供輸入將觸發上下文動作 (沒有當前上下文)。該框架支持此方案通過 提供一種方式來實例化它的上下文鏈(即父母行爲的 鏈,提供將提供整個上下文), 最後執行請求。

+0

這概念是爲什麼我選擇使用ActionBinding的原因之一。我的想法是爲BuyX創建子動作,例如BuyX_ChangeY,BuyX_ChangeZ等。但是這些Y和Z並不一定是我的A和B.您是否建議我應該讓FindA和FindB擴展BaseLuisContextualAction ? –

+0

是的,我會嘗試。 –

+0

在我的FindActions中,我從服務獲取數據並根據用戶輸入進行過濾,並將對象列表返回給相應的意圖處理程序。在那裏,我使用列表向用戶顯示卡片,並獲得更多信息或選擇一個。採用這種方法,我必須將FindA/B意圖處理程序中的所有代碼移動到BuyX意向處理程序? –

相關問題