我无法让我的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示例代码似乎可行,但我似乎无法将其绑定到该字段。
任何人都有任何想法,我做错了吗?
提前致谢
答案 0 :(得分:0)
答案 1 :(得分:0)
如果您获得SDK的最新版本,它应该可以使用。
此提交已修复此问题:https://github.com/Microsoft/BotBuilder/commit/e81b9dd23b3c69024caf8b53dcddc0bf158f61e2