FormFlow를 사용하는 Microsoft Bot Bot Framework 버전 3을 사용하여 간단한 BOT를 작성하려고합니다. 사용자가 입력 한 자유 텍스트는 LUIS로 전송되어 일부 인 텐트/엔티티를 반환합니다. LUIS에 의해 반환 된 엔터티를 사용하여 데이터베이스에서 데이터를 가져오고 BuildForm 메서드에서 데이터를 사용해야합니다.MessageController의 BuildForm 메서드에서 LUIS 엔티티에 액세스
아래와 같이 코드를 사용하면 LUIS에서 엔티티를 가져올 수 있으며 데이터베이스에서 데이터를 가져올 수 있습니다.
그러나 BuildForm 메서드에서 DB에서 가져온 데이터를 사용할 수있는 방법을 찾지 못했습니다.
요약 할 내용 : MessageController의 BuildForm 메소드에서 LuisDialog의 메소드에서 가져온 데이터에 액세스하려고합니다.
도움이 될 것입니다.
**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
그런 다음 질문에 대답했다고 생각하면 대답을 수락하십시오. –