我正在制作一个与QnaMaker通信的机器人,根据答案,应该使用Json打开通过FormFlow进行的引导式对话。 我的问题正是在这一点上以便打开表格。 我正在使用garypretty的SDK V3和QnAMakerDialog
我已经尝试了几种方法,例如调用context.Forward或context.Call,但不正确,也许是我打错了电话。
总是返回表示源代码有问题的消息。
public override async Task DefaultMatchHandler(IDialogContext context,
string originalQueryText, QnAMakerResult result)
{
QnaAnswer a = result.Answers.First();
var messageActivity = ProcessResultAndCreateMessageActivity(context, ref result);
if (a.Answer == "form")
{
// OPEN FORM HERE
}
await context.PostAsync(messageActivity);
context.Wait(MessageReceived);
}
答案 0 :(得分:1)
解决方案:
public static bool IsForm = false;
public override async Task DefaultMatchHandler(IDialogContext context,
string originalQueryText, QnAMakerResult result)
{
QnaAnswer a = result.Answers.First();
var messageActivity = ProcessResultAndCreateMessageActivity(context, ref result);
if (a.Answer == "form")
{
IsForm = true;
var form = new FormDialog<JObject>(new JObject(), JsonForm.BuildJsonForm, FormOptions.PromptInStart);
context.Call(form, FormCallback);
}
else
{
IsForm = false;
messageActivity.Text = $"{result.Answers.First().Answer}";
}
if (IsForm == false)
{
await context.PostAsync(messageActivity);
context.Wait(MessageReceived);
}
}
感谢凯尔。