功能:在识别出路易斯意图之前,请致电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,因此未调用切换用例,但对此我没有任何解决方法