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 は実行時に常にこれを要求します。

サンプル ピザ ボットのサンプル コードは機能しているように見えますが、エンティティをフィールドにバインドするようには見えません。

誰が私が間違っているのか考えていますか?

前もって感謝します

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 に答える