Я использую класс Microsoft.Bot.Builder.Dialog.Promptoptions, который принимает ResumeAfter, который является делегатом и требует (контекст 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");
}
}
LuisResult
будет возвращен в ваш обратный вызов? - person Evk   schedule 02.06.2017PromptDialog.Choice<string>
выполнит обратный вызов с результатомstring
, а неLuisResult
, поэтому не уверен, как вы хотите, чтобы это работало. - person Evk   schedule 02.06.2017