如何在一个简单的机器人中集成FormFlow和QnA对话框。一旦QnA完成,我就无法调用FormFlow context。如果有相同的样品,请分享。
发布于 2018-03-23 16:53:53
如果你想使用QnA和FormFlow,创建一个对话框QnADialog,你可以先把你所有的消息发送到根对话框,然后你可以调用你的QnA对话框,如下所示
var qnadialog = new QnADialog();
var messageToForward = await message;
await context.Forward(qnadialog, ResumeAfterQnA, messageToForward, CancellationToken.None);一旦QnADilalog被执行,它将调用ResumeAfterQnA,在那里你可以调用你的FormFlow对话框。
private async Task ResumeAfterQnA(IDialogContext context, IAwaitable<object> results)
{
SampleForm form = new SampleForm();
var sampleForm = new FormDialog<SampleForm>(form, SampleForm.BuildForm, FormOptions.PromptInStart);
context.Call(sampleForm, RootDialog.SampleFormSubmitted);
}您需要有一个将在表单提交后调用的SampleFormSubmitted方法。
private async Task SampleFormSubmitted(IDialogContext context, IAwaitable<SampleForm> result)
{
try
{
var query = await result;
context.Done(true);
}
catch (FormCanceledException<SampleForm> e)
{
string reply;
if (e.InnerException == null)
{
reply = $"You quit. Maybe you can fill some other time.";
}
else
{
reply = $"Something went wrong. Please try again.";
}
context.Done(true);
await context.PostAsync(reply);
}
}发布于 2018-03-17 15:27:20
一种方法是从Luis模板开始。然后确定启动表单的具体意图。然后你可以有一个空的Luis意图“”,甚至是“None”,然后你把你的QnA放在那里。这样,Qna将在后台,LUIS将给你很大的灵活性,以触发与意图的特定对话
下面是一个例子
http://www.garypretty.co.uk/2017/03/26/forwarding-activities-messages-to-other-dialogs-in-microsoft-bot-framework/
https://stackoverflow.com/questions/49323387
复制相似问题