3

FormFlow を使用している Microsoft Bot フレームワーク バージョン 3 を使用して単純な BOT を構築しようとしています。ユーザーが入力したフリー テキストは、何らかの意図/エンティティを返す LUIS に送信されます。LUIS によって返されたエンティティを使用して、データベースからデータを取得し、BuildForm メソッドでデータを使用する必要があります。

以下のコードを使用することで、LUIS からエンティティを取得し、データベースからデータをフェッチすることができます。

しかし、DB から取得したデータを BuildForm メソッドで使用する方法が見つかりませんでした。

要約する と、LuisDialog のメソッドでフェッチされたデータに、MessageController の BuildForm メソッドからアクセスしたいと考えています。

どんな助けでも大歓迎です。

**MessageController**
public virtual async Task<HttpResponseMessage> Post([FromBody] Activity activity)
{
    ......
    await Conversation.SendAsync(activity, MakeRoot);
}
internal static IDialog<TestRequest> MakeRoot()
{
    return Chain.From(() => new TestDialog(BuildForm));
}

private static IForm<TestRequest> BuildForm()
{
    return builder.Message("")
            .Field(nameof(TestRequest.searchResult))
            .Build
}

**LUISDialog:**
class TestDialog : LuisDialog<TestRequest>
{
    [LuisIntent("testIntent")]
    public async Task GetTestIntentForm(IDialogContext context, LuisResult result)
    {
        // Pass the intent & entity to DBAccess class which returns list of string
        List<string> lstResult = DBAccess.getInfoFromDB("testIntent", entities);

        IDialog<TestRequest> testForm = new FormDialog<TestRequest>(new  TestRequest(), this.MakeTestForm, FormOptions.PromptInStart, entities);

        context.Call<TestRequest>(testForm, TestFormComplete);
    }
}
**TestRequest**
[Serializable]
class TestRequest
{
    [Prompt("This is the search result")]
    public string searchResult;
....
}
4

1 に答える 1