У меня есть бот с «корневым» диалогом, который работает дочерние диалоговые окна с помощью context.Call()
или context.Forward()
в зависимости от выбора пользователя, например, так:Ошибка платформы Bot при выполнении context.Wait(): значение не может быть нулевым. Имя параметра: ждать
context.Call(new QuestionsDialog(), ChildDialogComplete);
После диалога выходов ребенка, то управление передается к этому методу, ChildDialogComplete
. Он выводит приглашение и ждет ответа пользователя.
public async Task ChildDialogComplete(IDialogContext context, IAwaitable<object> argument)
{
var unnecessaryTemp = await argument;
var restartPrompt = context.MakeMessage();
restartPrompt.Text = "Say \"hi\" again if I can help with anything else!";
await context.PostAsync(restartPrompt);
context.Wait(MainScreenSelectionReceived);
}
При отладке, последняя строка метода с context.Wait()
причинами этого исключения в эмуляторе:
Исключение: System.ArgumentNullException: Значение не может быть пустым. Имя параметра: ждать на Microsoft.Bot.Builder.Internals.Fibers.Fiber1.-PollAsync> d__13.MoveNext()
--- Конец трассировки стека из предыдущего места, где был брошен исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в Microsoft.Bot.Builder.Internals.Fibers.Wait 2.Microsoft.Bot.Builder.Internals.Fibers.IAwaiter.GetResult() в Microsoft.Bot.Builder.Dialogs .Chain.LoopDialog1.d__3.MoveNext()
--- Конец трассировки стека из предыдущего места, где был брошен исключение ---
... и т. Д.
Эта ошибка не возникает, когда ChildDialogComplete
запускается «естественно» при выходе из диалогового окна. Это происходит только тогда, когда я пытаюсь вызвать этот метод вручную, из другой части диалога корня, например:
ChildDialogComplete(context, argument);
Где context
и argument
являются двумя стандартными параметрами методов в IDialog (IDialogContext context, IAwaitable<IMessageActivity> argument
).
argument
был ранее await
ed перед передачей методу. Но я предполагаю, что это не проблема, поскольку исключение происходит на линии context.Wait()
, которая кажется не связанной с IAwaitable
.
Эй, может помочь мне с этой частью кода Первый: https: // pastebin.com/eqV0F8wn, второй: https://pastebin.com/WVLjG24i.Я столкнулся с двумя ошибками, пытаясь изменить ожидания и попробовать другие комбинации. «Идентификатор активности не может быть Null» и «Значение не может быть пустым. Имя параметра: wait». Можете ли вы PLZ помочь –
задать вопрос. –
Та же проблема, о которой говорилось выше. thats y я прокомментировал здесь, –