我正在制作一个与QnaMaker通信的机器人,根据答案,应该使用Json通过FormFlow打开引导式对话。我的问题正是在这一点上,以便打开表单。我正在使用 SDK V3 和 QnAMakerDialog of the garypretty
我已经尝试了几种方法,例如调用上下文。转发或上下文。打电话,但不对,也许我打电话的方式错误。
始终返回消息,指出源代码中存在问题。
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);
}
解决方案:
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);
}
}
谢谢凯尔。