![](/img/trans.png)
[英]How can I get the value of an entity from LuisResult object? (LUIS with Bot Framework .NET)
[英]I struggle to covert an IAwaitable to LuisResult (LUIS on Microsoft Bot framework)
我正在使用帶有ResumeAfter的類Microsoft.Bot.Builder.Dialog.Promptoptions,該類是受委托的並且是必需的(IDialogContext上下文,IAwaitable結果)
但是,我要調用的委托不是私有異步任務測試(IDialogContext上下文,IAwaitable結果)
而是具有以下內容的LUIS委托
[LuisIntent(“ Test”) 私有異步任務測試(IDialogContext上下文,LuisResult結果)
非常感謝聽到一些關於如何調用LUIS屬性方法的想法
private async Task ProductChoice(IDialogContext context, IAwaitable<string> result)
{
PromptDialog.Choice<string>(
context,
ProductOverview,
this.productOptions,
"Which plaform are you interested in?",
"Ooops, what you wrote is not a valid option, please try again",
3,
PromptStyle.PerLine);
await context.PostAsync(context.MakeMessage());
}
[LuisIntent ("Products")]
public async Task ProductOverview(IDialogContext context, LuisResult result)
{
string product = "";
EntityRecommendation rec;
Activity activity = (Activity)context.MakeMessage();
Attachment attachment;
if (result.TryFindEntity("ProductName", out rec))
{
//Here you could include other rich cards
attachment = CreateNewHeroCard(product = rec.Entity);
activity.Attachments.Add(attachment);
await context.PostAsync(activity);
}
else
{
await context.PostAsync("Sorry, their is no product by that name");
}
}
首先,您無法做的事情。
然后是其他幾件事:
Prompt
之后,您不應發送PostAsync
。 LUIS
Intent方法上的某些邏輯,則需要將該邏輯提取到一個公共方法中,提示的LUIS和ResumeAfter方法都可以調用該方法。 當然,該通用方法不應與LuisResult
相關,因為在ResumeAfter方法中將不可用。 當ResumeAfter方法將被調用時; LUIS不會被調用。 LUIS
,這時將需要編寫更多代碼,但這是可行的 ProductOverview
從ResumeAfter方法方法,你可以做它作為一個標准的方法,但是,(再次),必須記住,你不會有LuisResult那里,所以你將不得不送空值,並在ProductOverview
方法中進行相應處理。 就像是:
private async Task ProductChoice(IDialogContext context, IAwaitable<string> result)
{
PromptDialog.Choice<string>(
context,
AfterPromptChoiceMethod,
this.productOptions,
"Which plaform are you interested in?",
"Ooops, what you wrote is not a valid option, please try again",
3,
PromptStyle.PerLine);
await context.PostAsync(context.MakeMessage());
}
private async Task AfterPromptChoiceMethod(IDialogContext context, IAwaitable<string> result)
{
await ProductOverview(context, null);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.