在bot.cs中调用bing拼写检查后无法继续进行

时间:2019-07-16 14:16:50

标签: c# botframework

功能:在识别出路易斯意图之前,请致电Bing Spell Check纠正任何拼写错误的单词。

问题陈述:用户输入已得到更正和正确存储-但是,该流程完全退出而无需调用LUIS服务以检测意图

我尝试删除await dc.ContinueDialogAsync();进行拼写检查之后,但这会打扰其他对话框的对话流程<​​/ p>

public async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))
{
    if (turnContext.Activity.Type == ActivityTypes.Message)
    {
        if (turnContext.Activity.Text != null)
        {
            var message = turnContext.Activity.Text.ToUpper();

            var result = await this.spellService.GetCorrectedTextAsync(turnContext.Activity.Text);
            if (message != result.ToUpper())
            {
                await turnContext.SendActivityAsync("Typos have been corrected: \r\n" + result);

                turnContext.Activity.Text = result;
            }

            var luisResults = await _services.LuisServices[LuisConfiguration].RecognizeAsync(dc.Context, cancellationToken);

            var luisProperties = LuisEntities.FromLuisResults(luisResults);

            await _luisEntitiesAccessor.SetAsync(turnContext, luisProperties);

            var topScoringIntent = luisResults?.GetTopScoringIntent();

            var topIntent = topScoringIntent.Value.intent;
            // LuisEntities entities = LuisEntities.FromLuisResults(luisResults);
            if (dc.ActiveDialog != null)
            {
                await dc.ContinueDialogAsync();
            }

            // Continue the current dialog
            var dialogResult = await dc.ContinueDialogAsync();

            // if no one has responded,
            if (!dc.Context.Responded)
            {
                // examine results from active dialog
                switch (dialogResult.Status)
                {
                    case DialogTurnStatus.Empty:
                        switch (topIntent)
                        {
                            case...
                        }
                        break;

                    case DialogTurnStatus.Waiting:
                        // The active dialog is waiting for a response from the user, so do nothing.
                        break;

                    case DialogTurnStatus.Complete:
                        await dc.EndDialogAsync();
                        break;

                    default:
                        await dc.CancelAllDialogsAsync();
                        break;
                }
            }
        }
    }
}

我知道此行为的原因是dc.Context.Responded设置为true,因此未调用切换用例,但对此我没有任何解决方法

0 个答案:

没有答案