3
我正在嘗試使用微軟Bot框架版本3構建一個簡單的BOT,並使用FormFlow。 用戶輸入的自由文本被髮送給返回一些意圖/實體的LUIS。使用由LUIS返回的實體,我需要從數據庫中獲取數據並在BuildForm方法中使用數據。從MessageController的BuildForm方法訪問LUIS實體
通過使用下面編寫的代碼,我能夠從LUIS獲取實體並從數據庫中獲取數據。
但是,我找不到任何方法來使用我的BuildForm方法中從數據庫中提取的數據。
總結: 我想從MessageController的BuildForm方法訪問LuisDialog方法中獲取的Data。
任何幫助將不勝感激。
**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;
....
}
感謝您的答覆。它幫助了我。 – rku0526
我已經試過Upvote。它的說法是聲譽小於15,所以不會改變公開顯示的分數。 – rku0526
然後只要接受答案,如果你認爲它解決了你的問題。 –