Завершите сеанс чата и перезапустите новый диалог в конце сеанса. - PullRequest
1 голос
/ 29 января 2020

У меня есть Maindialog с функцией CompleteAsyn c, которая запускается, когда дочерний диалог вызывает stepContext.EndDialogAsync();

protected override async Task CompleteAsync(DialogContext dc, DialogTurnResult result = null, CancellationToken cancellationToken = default(CancellationToken))
    {            
        await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.NewUserGreeting);
        await dc.BeginDialogAsync(nameof(ProductFlowDialog));
    }

Когда он запускается, начальный шаг водопада ребенка диалог никогда не вызывается. Чтобы временно устранить проблему, я переместил вызов await dc.BeginDialogAsync(nameof(ProductFlowDialog)) в функцию routeAsyn c.

  protected override async Task CompleteAsync(DialogContext dc, DialogTurnResult result = null, CancellationToken cancellationToken = default(CancellationToken))
    {
        await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.Completed);         
    }
 protected override async Task RouteAsync(DialogContext dc, CancellationToken cancellationToken = default(CancellationToken))
    {
        _responder = new MainResponses();
        await _responder.ReplyWith(dc.Context, MainResponses.ResponseIds.NewUserGreeting);
        await dc.BeginDialogAsync(nameof(ProductFlowDialog));       
    }

Проблема с этим решением заключается в том, что конечный пользователь должен что-то набрать в чат, чтобы возобновить диалог. Я хочу автоматически перезапустить новый поток диалога после его окончания.

1 Ответ

0 голосов
/ 31 января 2020

мы перезапустили dvt с нуля с другим шаблоном бота, и проблема больше не возникает. Абсолютно не знаю, откуда он взялся

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