更新至1.2.0.1后,LuisDialog无法工作
问题描述:
我已更新我的NuGet包以使用Microsoft Bot Framework的1.2.0.1版。更新至1.2.0.1后,LuisDialog无法工作
一些突破变化是reported here,我设法解决构建错误。但是,应用程序不工作了..
我有两个问题:
- 代码抛出InvalidIntentHandlerException当我发送消息的话语给控制器。
-
在我的'intent'方法(用LuisIntent属性装饰)中,可以读取实体的值。像这样:
[Serializable] [LuisModel("xxxxx", "xxxx")] public class BookFlightDialog : LuisDialog<BookFlightForm> { private readonly BuildFormDelegate<BookFlightForm> BuildForm; internal BookFlightDialog(BuildFormDelegate<BookFlightForm> buildForm) { BuildForm = buildForm; } [LuisIntent("")] [LuisIntent("None")] public async Task None(IDialogContext context, LuisResult result) { await context.PostAsync("I'm sorry. I didn't understand you."); context.Wait(MessageReceived); } [LuisIntent("BookAFlight")] public async Task BookAFlight(IDialogContext context, LuisResult result) { var form = new BookFlightForm(); // var entities = new List<EntityRecommendation>(result.Entities); var locations = result.Entities.Where(e => e.Type.Equals("builtin.geography") || e.Type.Equals("builtin.geography.city")).OrderBy(e => e.StartIndex); if (locations.Any()) { form.LocationFrom = locations.First().Name; if (locations.Count() == 2) { form.LocationTo = locations.Skip(1).First().Name; } } var date = result.Entities.FirstOrDefault(e => e.Type == "builtin.datetime.date"); if (date != null) form.DepartureDate = DateTime.Parse(date.Name); var formDialog = new FormDialog<BookFlightForm>(form, BuildForm, FormOptions.PromptInStart); context.Call(formDialog, OnComplete); } private async Task OnComplete(IDialogContext context, IAwaitable<BookFlightForm> result) { BookFlightForm booking; try { booking = await result; } catch (OperationCanceledException) { await context.PostAsync("Ok, see you later."); return; } if (booking != null) { var service = new SkyScannerService(); var possibilities = await service.Search(booking); await context.PostAsync(possibilities); } else { await context.PostAsync("Form returned empty response!"); } context.Wait(MessageReceived); } }
如何解决的例外,我怎么看实体的价值?
再次感谢!
答
这是因为您没有使用内置的LuisResult
类,具有using LuisResult = Bots.Results.LuisResult;
。将其替换为using Microsoft.Bot.Builder.Luis.Models;
。
+0
谢谢!也许resharper在那里做了些什么:S – Aldentev
如果你的LuisDialog能分享代码吗? InvalidIntentHandlerException仅在Builder无法在类中找到任何意图时才会抛出。 关于阅读实体,我不确定你在那里遇到了什么问题。结果。实体仍然可用。 –
@ejadib:我用LuisDialog更新了我的帖子。 – Aldentev
你在使用Bot Framework模拟器吗?我也遇到了一个问题,然后我更新了模拟器,并且一切正常。 – freethinker6