具有QnaMaker和FormFlow的Bot框架

时间:2019-01-07 11:01:14

标签: c# botframework qnamaker formflow

我正在制作一个与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);
}

1 个答案:

答案 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);
     }
 }

感谢凯尔。