2017-01-24 4 views
0

По этой теме, How to get Activity Info from an IDialogContext я изменил все мои метод-намерения в коде:IMessageActivity в качестве параметра

Я звоню мой LuisDialog из MessagesController так:

await Conversation.SendAsync(activity,() => new RootLuisDialog()); 

, а затем в методе:

[LuisIntent("test-intent")] 
      public async Task help(IDialogContext context, IAwaitable<IMessageActivity> activity LuisResult result) 
      { 

await Conversation.SendAsync(activity ,() => SimpleFacebookAuthDialog.dialog); 

    } 

Так что, когда я запускаю это он бросает исключение:

{ "; None"}

и StackTrace:

на Microsoft.Bot.Builder.Dialogs.LuisDialog.d__0.MoveNext() \ г \ п в системе .Linq.Enumerable.ToDictionary [TSource, TKey, TElement] (IEnumerable 1 source, Func 2 keySelector, Func 2 elementSelector, IEqualityComparer 1 сравнительный) \ r \ n на Microsoft.Bot.Builder.Dialogs.LuisDialog 1.GetHandlersByIntent()\r\n
at Microsoft.Bot.Builder.Dialogs.LuisDialog
1.d__6.MoveNext() \ r \ n --- Конец трассировки стека fr ом предыдущее место, где было брошено исключение --- \ г \ п на System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task задача) \ г \ п на System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача задачи) \ r \ n на Microsoft.Bot.Builder.Dialogs.Internals.DialogTask.ThunkResume 1.<Rest>d__4.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification( Task task)\r\n at Microsoft.Bot.Builder.Internals.Fibers.Wait 2.-PollAsync> d__19.MoveNext() \ r \ n --- Конец трассировки стека из предыдущего места, где было исключено исключение --- \ г \ п на System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task задачи) \ г \ п на System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task задача) \ г \ п на Microsoft. филиал t.Builder.Internals.Fibers.Frame 1.<Microsoft-Bot-Builder-Internals-Fibers-IFrameLoop<C>-PollAsync>d__7.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Bot.Builder.Internals.Fibers.Fiber 1.-PollAsync> d__13.MoveNext() \ r \ n --- Конец трассировки стека из предыдущего места, в котором исключение было выбрано --- \ r \ n в системе. Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() \ г \ п
в Microsoft.Bot.Builder.Internals.Fibers.Wait 2.Microsoft.Bot.Builder.Internals.Fibers.IAwaiter<T>.GetResult()\r\n at Microsoft.Bot.Builder.Dialogs.Chain.LoopDialog 1.d__3.MoveNext() \ г \ п --- Конец трассировки стека из предыдущего место, где было брошено исключение --- \ г \ п на System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task задача) \ г \ п на System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) \ г \ n в Microsoft.Bot.Builder.Dialogs.Internal s.DialogTask.ThunkResume 1.<Rest>d__4.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Bot.Builder.Internals.Fibers.Wait 2.-PollAsync> d__19.MoveNext() \ r \ n --- Конец трассировки стека из предыдущего местоположения где исключение было выбрано --- \ r \ n в System.Runtime.CompilerServices .TaskAwaiter.ThrowForNonSuccess (задача задачи) \ г \ п на System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) \ г \ п на Microsoft.Bot.Builder.Internals.Fibers.Frame 1.<Microsoft-Bot-Builder-Internals-Fibers-IFrameLoop<C>-PollAsync>d__7.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Bot.Builder.Internals.Fibers.Fiber 1.- PollAsync> d__13.MoveNext() \ r \ n --- Конец трассировки стека из предыдущего места, где было выбрано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача задача) \ r \ n в System.Runtime.CompilerServic es.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (целевая задача) \ г \ п в Microsoft.Bot.Builder.Dialogs.Internals.DialogTask.d__21 1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Bot.Builder.Dialogs.Internals.ReactiveDialogTask.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__5 1.MoveNext() \ г \ п --- Конец трассировки стека из предыдущее место, где было брошено исключение --- \ г \ п на System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task задача) \ г \ п на System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача задач) \ r \ n в Microsoft.Bot.Builder.Dialogs.Internals.LocalizedDialogTask.d__2 1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Bot.Builder.Dialogs.Internals.ScoringDialogTask 1.d__6 1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Microsoft.Bot.Builder.Dialogs.Internals.PersistentDialogTask.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__6 1.MoveNext() \ r \ n --- Конец трассировки стека из предыдущего места, где исключение было тр собственный --- \ r \ n в Microsoft.Bot.Builder.Dialogs.Internals.PersistentDialogTask.d__6`1.MoveNext() \ r \ n --- Конец стека трассировка из предыдущего места, где было выбрано исключение - - \ г \ п на System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи) \ г \ п на System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) \ г \ п на Microsoft.Bot .Builder.Dialogs.Conversation.d__4.MoveNext() \ r \ n --- Конец трассировки стека из предыдущего места, где было выбрано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача задача) \ r \ n на System.Runtime.CompilerServices.TaskAwaiter.HandleNonSucc essAndDebuggerNotification (Задача задача) \ r \ n в Microsoft.Bot.Builder.Dialogs.Conversation.d__2.MoveNext() \ r \ n --- Конец трассировки стека из предыдущего места, где было исключено исключение --- \ г \ п на System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task задача) \ г \ п на System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) \ г \ п в системе .Runtime.CompilerServices .TaskAwaiter.GetResult() \ г \ п на MessengerBot.MessagesController.d__1.MoveNext() в C: \ APP \ Контроллеры \ MessagesController.cs: строка 52"

ответ

1

Вам нужно «подождать» для параметра IAwaitable<IMessageActivity>:

[LuisIntent("test-intent")] 
public async Task help(IDialogContext context, IAwaitable<IMessageActivity> argument, LuisResult result) 
{ 
    var activity = await argument; 
    await Conversation.SendAsync(activity,() => SimpleFacebookAuthDialog.dialog); 
} 
+0

Это не работает. Это исключает одно и то же исключение. Я изменил все намерения и добавил в него var 'activity = await argument;'. – activ8

+0

LuisDialog не содержит эту функцию: http://prntscr.com/dzogs0 – activ8

+0

Что это за функция? Мой бот не использует диалоги, но этот код [из документации] (https://docs.botframework.com/en-us/csharp/builder/sdkreference/dialogs.html#simpleEcho), адаптированный к коду, который вы опубликовали , – stuartd

0

Все, что вам нужно сделать, это обновить старый бот до последней версии. Это даст вам context.Activity. Сделайте свой выбор.

+0

Я автор этого сообщения на самом деле :)))) – activ8

Смежные вопросы