在 Microsoft Bot Framework 的 sdk v4 中使用 FormDialog

Use FormDialog in sdk v4 of Microsoft Bot Framework

我有一个用 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)

收到错误

Severity Code Description Project File Line Suppression State Error CS1061 'DialogContext' does not contain a definition for 'Call' and no accessible extension method 'Call' accepting a first argument of type 'DialogContext' could be found (are you missing a using directive or an assembly reference?)

如何在 sdk v4 中更改我的表单对话框?

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

阅读完这些文档后,您应该足以开始调整您的代码了。

官方 bot builder 示例 repo 中提供了另一个收集用户各种输入的很好的例子。看看here.

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