Tilgang LUIS enheter fra MessageController er BuildForm metode

stemmer
3

Jeg prøver å bygge en enkel BOT bruker Microsoft Bot rammeverket versjon 3, hvor jeg bruker FormFlow. Den fritekst angitt av brukeren blir sendt til LUIS som returnerer noen hensikt / enhet. Ved hjelp av enhetene som returneres av LUIS Jeg trenger å hente data fra databasen og bruke dataene i BuildForm metode.

Ved å bruke koden som er skrevet under, jeg er i stand til å få enheter fra LUIS og hente data fra databasen.

Men jeg kunne ikke finne noen måte å bruke data hentet fra DB i min BuildForm metode.

For å oppsummere: Jeg ønsker å få tilgang til data hentet i LuisDialog metode fra BuildForm metode for MessageController.

Hjelp vil bli høyt verdsatt.

**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;
....
}
Publisert på 11/12/2016 klokken 08:27
kilden bruker
På andre språk...                            


1 svar

stemmer
2

Du trenger bare å sette verdien i form Model, i ditt tilfelle TestRequest. Så i stedet for å gjøre nettopp dette:

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

du kan gjøre

IDialog<TestRequest> testForm = new FormDialog<TestRequest>(new TestRequest { searchResult = lstResult }, this.MakeTestForm, FormOptions.PromptInStart, entities);
Svarte 24/01/2017 kl. 20:38
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more