Microsoft Bot Work LUIS i foss samtale

stemmer
2

Jeg har en eksisterende foss samtale. Jeg ønsker å tilpasse den slik at den kan trekke ut data fra mer komplekse bruker svar på bot spørsmål.

I min LUIS app har jeg laget en intensjonsavtale som heter GetLocationsom er opplært til å finne en enhet som heter Location. Et eksempel på dette er at brukeren skrive jeg er ute i Bristol, som ville matche foretaket Bristol. Dette er hva jeg har for tiden:

function(session) {
       builder.Prompts.text(session, Hello... Which city are you looking    in?);
},
function(session, results) {
    session.privateConversationData.city = results.response;
    builder.Prompts.number(session, Ok, you are looking in  + results.response + , How many bedrooms are you looking for?);
},
etc...

I stedet for bare å lagre svaret streng, jeg vil sende svaret strengen av til LUIS og trekke by sted fra det. Alle LUIS eksemplene jeg har funnet er for å matche og gå til nye hensikter, men jeg ønsker bare å holde fossen samtalen gående. Hvordan skulle jeg bruke LUIS å gjøre dette?

Publisert på 27/02/2017 klokken 15:37
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Jeg tror du kan gjøre dette ved å ha to ulike dialoger oppsett:

Dialog 1:

Dette er den dialogen du har over din normale Foss dialogen som driver samtalen.

Dialog 2:

Denne dialogen vil bli opprettet med et LUIS Intent gjenkjenner bruker LUIS modell. Dialog 1 vil utstede rask, så pass brukeren til denne dialogen og analysere teksten skrevet inn av brukeren. Siden modellen er allerede opplært til å gjenkjenne plassering, alt du trenger å gjøre nå trekke foretaket.

Etter dialog to har analysert plasseringen informasjon ved hjelp av LUIS, og ekstrahert foretaket, vil du ende dialogen og returnere enheten (plassering) tilbake til dialogen en, som fortsatt vil være på Dialog Stack .


Kode

//create intent recognizer based on LUIS model
var luisModel = "<Your LUIS Model URL>";
var recognizer = new botbuilder.LuisRecognizer(luisModel);
//create dialog handler for info to be parsed by LUIS
var dialog = new botbuilder.IntentDialog({ recognizers: [recognizer] });

//root dialog
bot.dialog("/", [
    function(session){

        //prompt user and pop LUIS intent dialog onto dialog stack
        session.send("Hello, which city are you looking in?");
        session.beginDialog("/begin_loc_parse");

    },

    //this will be resumed after our location has been extracted
    function(session, results){

        //check for extracted location
        if(results.entity){
            //got location successfully
            session.send("Got city from user: " + results.entity);

            //resume normal waterfall with location.....

        } else {
            //start over
            session.beginDialog("/");
        }
    }
]);

//LUIS intent dialog
dialog.matches("input_location", function(session, args){

    //grab location entity
    var city = botbuilder.EntityRecognizer.findEntity(args.entities, "builtin.geography.city");

    if(city){
        //pop the LUIS dialog off of the dialog stack
        //and return the extracted location back to waterfall
        session.endDialogWithResult(city);
    } else session.endDialog("Couldn't extract city entity.");

});

//called if user doesn't enter something like "I am looking in [city]"
dialog.onDefault(function(session, args){
    session.send("I'm sorry, I didn't quite catch that. In which city are you looking?");
});

Så i utgangspunktet, i dialogboksen rot, når du be brukeren for plasseringen, og deretter ringe session.beginDialog("/begin_loc_parse")vil du har passert samtalen til hensikt dialog LUIS.

Tekst skrevet inn av brukeren etter dette tidspunktet vil bli tolket av din LUIS modell. Dette gjør at du kan bruke modellen til å gjenkjenne og trekke ut posisjonsinformasjon fra brukeren.

Så, er nøkkelen til å bruke session.endDialogWithResult()til pop dialogen LUIS av stabelen, og for å gå tilbake til den opprinnelige foss med den nylig hentet plassering.

Svarte 08/03/2017 kl. 01:06
kilden bruker

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