首页 > 解决方案 > 在 Microsoft Bot Framework 的 sdk v4 中使用 FormDialog

问题描述

我有一个在 sdk v3 中构建的聊天机器人。我正在将机器人更新为 sdkv4 并将其移至 core2.0。

   protected async Task<DialogTurnResult> BeginChildDialogAsync(DialogContext dc, OnTurnProperty onTurnProperty)
    {
        var activity = dc.Context.Activity;
        var actionValue = onTurnProperty.Intent;
        switch (onTurnProperty.Intent)
        {

            case "quickquote":
                await dc.Context.SendActivityAsync("THIS IS QUICK QUOTE!");
                var survey = new FormDialog<QQForm>(new QQForm(), QQForm.BuildForm, FormOptions.PromptInStart, null);
                dc.Call(survey, AfterSurvey);

当我调用我使用 formdialog 构建的表单时。我得到错误dc.call(survey,AfterSurvey)

严重性代码描述项目文件行抑制状态错误 CS1061“DialogContext”不包含“Call”的定义,并且找不到接受“DialogContext”类型的第一个参数的可访问扩展方法“Call”(您是否缺少 using 指令或装配参考?)

如何在 sdk v4 中更改我的 formdialog?

标签: c#botframeworkbotschatbot

解决方案


Bot Framework v4 不再有 FormFlows 的概念。存档的方法是使用各种技术的组合。我建议阅读以下内容:

阅读完这些文档后,您应该有足够的能力开始调整您的代码。

官方 bot builder 示例 repo 中提供了另一个从用户那里收集各种输入的相当好的示例。看看这里

我会选择一个ComponentDialog包含WaterfallDialog一些验证的内容。通过这种方式,您可以重用您习惯使用表单流的所有内容。


推荐阅读