dc.BeginDialogAsync: «Значение не может быть нулевым. \ nПараметр имени: параметры» - PullRequest
0 голосов
/ 12 июня 2019

Каждый раз, когда я запускаю await dc.BeginDialogAsync("sign-in");, я получаю это исключение, которое не имеет смысла, так как остальные параметры являются необязательными.Это меня очень смущает.Вот мой код:

public FlexoBot(ConversationState conversationState)
{
    this.dialogState = conversationState.CreateProperty<DialogState>("dialog-state");
    this.dialogs = new DialogSet(this.dialogState);

    // Make oauth card available to use for all handlers
    this.dialogs.Add(new OAuthPrompt("oauth", new OAuthPromptSettings() { ConnectionName = "flexo-auth" }));
    dialogs.Add(new WaterfallDialog("sign-in", new WaterfallStep[] {
        PromptSignIn,
        GreetUser,
    }));
}


protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
    var dc = await this.dialogs.CreateContextAsync(turnContext);
    foreach (var member in membersAdded)
    {
        if (member.Id != turnContext.Activity.Recipient.Id)
        {
            await dc.BeginDialogAsync("sign-in");
            // Throws: System.ArgumentNullException has been thrown "Value cannot be null.\nParameter name: options"
        }
    }
}

1 Ответ

0 голосов
/ 12 июня 2019

Я наконец понял это. Это потому, что я звонил return step.PromptAsync("oauth", null); на одном из шагов водопада. Я изменил это на:

return step.PromptAsync("oauth", new PromptOptions { });

И теперь это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...