如果没有意图,则使用 Luis 对话框,我想转发到 QnAMakerDialog 以匹配 QnAPair。
如果找到对,则返回答案并返回 luis 堆栈。如果一对未发送消息“对不起,我不知道”并返回 luis 堆栈等待另一条消息。
我成功地得到了回复await context.Forward(qnaDialog, AfterQnADialog, messageToForward, CancellationToken.None)
。返回响应后,模拟器抛出Exception Stack is empty [File Type 'text/plain']
我认为错误出现在AfterQnADialog中,但不知道如何修复它。在此先感谢您的帮助。
消息控制器*
if (activity.Type == ActivityTypes.Message)
{
await Conversation.SendAsync(activity, () => new Dialogs.RootLuisDialog());
}
路易斯对话类
[LuisIntent("")]
[LuisIntent("None")]
public async Task None(IDialogContext context, IAwaitable<IMessageActivity> message ,LuisResult result)
{
var qnaDialog = new QnADialog();
var messageToForward = await message;
await context.Forward(qnaDialog, AfterQnADialog, messageToForward, CancellationToken.None);
}
...
private async Task AfterQnADialog(IDialogContext context, IAwaitable<object> result)
{
var messageHandled = await result;
if (messageHandled == null)
{
await context.PostAsync("I’m not sure what you want.");
}
context.Wait(this.MessageReceived);
}
QnAMakerDialog 类
[QnAMaker("<QnAMakerAppID", "QnAMakerApiKey", "I don't understand this right now! Try another query!", 0.10, 1)]
public class QnADialog : QnAMakerDialog
{
}
}