2016-11-19 38 views
2

我試圖給我的LUIS提供查詢缺少項目時缺少的信息。例如。如何在Microsoft Bot框架中的LuisDialog中獲取LUIS上下文ID

如果有人說,我想下訂單。爲此,我需要知道有多少用戶。 https://api.projectoxford.ai/luis/v2.0/apps/上的LUIS會自動創建上下文ID,以確保我正在與此查詢進行交談。

當LUIS對話框提示缺失的問題時,我如何才能在Bot框架中獲得或告訴同樣的事情。

這是代碼

[Serializable] 
[LuisModel("something", "something")] 
public class SimpleLUISDialog : LuisDialog<object> 
{ 
[LuisIntent("GetQuote")] 
    public async Task GetQuote(IDialogContext context, LuisResult result) 
    { 
     PromptDialog.text(context, GetChildNumberAsync, "How many Users will you be adding ?", "Sorry please try again", 2); 
    } 
} 


    private async Task GetUserNumberAsync(IDialogContext context, IAwaitable<string> result) 
    { 
     // send to LUIS again for checking the entity for number of users with Context ID 
    } 
} 

這是寫得LUIS對話框API(JSON)

"dialog": { 
    "prompt": "How many users needed?", 
    "parameterName": "NumberOfLicenses", 
    "parameterType": "number", 
    "contextId": "746024ff-a4eb-4f58-b014-42605a3cb757", 
    "status": "Question" 
    } 

回答

0

好像你正在使用ActionParameters在LuisModel和你試圖如果它們沒有在原始消息中提供,則實現它們。

雖然你可以做一些「手動黑客」再次呼籲LUIS解釋here(不與上下文ID,但模擬一個新的消息),我不會建議。相反,我建議你看看BotBuilder的develop分支(參見11-11),BotFramework團隊增加了對LUIS v2 API的支持並增加了一些全新的功能;其中之一,我相信是你正在尋找的。

隨着最新的變化,LuisDialog現在將採取行動,如果你的意圖需要參數,並沒有提供。在這種情況下,LuisDialog將automatically launchLuisActionDialog並使用您在action參數中定義的提示消息詢問用戶缺少的參數。

我最後一次檢查這個沒有作爲NuGet包發佈;但它可能值得再次檢查。在最糟糕的情況下,您可以暫時下載BotBuilder的代碼並將其引用到您的項目中。

您需要在LuisModel屬性中指定API版本才能開始起訴它。

[LuisModel("something", "something", LuisApiVersion.V2)] 
相關問題