我无法让我的 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 示例代码似乎可以工作,但我似乎无法将实体绑定到该字段。
有人知道我做错了什么吗?
提前致谢