将Luis实体映射到对话框字段

时间:2016-04-19 08:35:06

标签: c# botframework microsoft-cognitive luis

我无法让我的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示例代码似乎可行,但我似乎无法将其绑定到该字段。

任何人都有任何想法,我做错了吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

如果您获得SDK的最新版本,它应该可以使用。

此提交已修复此问题:https://github.com/Microsoft/BotBuilder/commit/e81b9dd23b3c69024caf8b53dcddc0bf158f61e2