0

我无法让我的 Luis 实体绑定到我的 FormFlow 字段,因此我可以跳过 FormFlow 中的步骤。我的 FormFlow 对话框的简化版本如下

[Serializable]
public class DoSearch
{
    public string SearchTerm;

    public static IForm<DoSearch> BuildForm()
    {
        var builder = new FormBuilder<DoSearch>();

        return builder
            .Message("Search Function")
            .Field(nameof(DoSearch.SearchTerm))
            .AddRemainingFields()
            .Confirm("Are you sure you wish to search for {SearchTerm} ?")
            .Build();
    }

}

我用以下代码调用它

    public async Task StartSearch(IDialogContext context, LuisResult result)
    {

        var searchForm = new BuildForm<DoSearch>(() => DoSearch.BuildForm());
        var searchForm1 = new FormDialog<DoSearch>(new DoSearch(), searchForm , FormOptions.PromptInStart, result.Entities);
        context.Call<searchForm>(searchForm1, SearchComplete);
        // ...
    }

result.Entities 确实包含适当的实体(Type = SearchTerm),但 FormFlow 在运行时总是要求提供此信息。

示例 Pizza bot 示例代码似乎可以工作,但我似乎无法将实体绑定到该字段。

有人知道我做错了什么吗?

提前致谢

4

2 回答 2

0

看来这是一个错误。实体似乎绑定到枚举的属性,但那是字符串。

https://github.com/Microsoft/BotBuilder/issues/151

希望这将在某个时候进行排序

于 2016-04-20T12:13:06.153 回答
0

如果您获得了最新版本的 SDK,它应该可以工作。

这已在此提交中修复:https ://github.com/Microsoft/BotBuilder/commit/e81b9dd23b3c69024caf8b53dcddc0bf158f61e2

于 2016-04-25T09:55:43.320 回答