我已更新我的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); } }
如何解決的例外,我怎麼看實體的價值?
再次感謝!
如果你的LuisDialog能分享代碼嗎? InvalidIntentHandlerException僅在Builder無法在類中找到任何意圖時纔會拋出。 關於閱讀實體,我不確定你在那裏遇到了什麼問題。結果。實體仍然可用。 –
@ejadib:我用LuisDialog更新了我的帖子。 – Aldentev
你在使用Bot Framework模擬器嗎?我也遇到了一個問題,然後我更新了模擬器,並且一切正常。 – freethinker6