Botframework Spør dialoger Til nett ferdig

stemmer
2

Jeg oppretter en prat bot for slakk ved hjelp av Microsofts botbuilder og LUIS.

Er det en måte å fortsette å bruke builder.Prompts.text()for å fortsette å spørre brukeren om det er lenger informasjon brukeren ønsker å sette, som en foreller whilesløyfe? For eksempel ønsker jeg å fortsette å be brukeren en udefinert antall ganger hvis det er en keybrukeren ønsker å lagre og bare stoppe når brukeren skriver done, og da vil jeg ha et likt antall builder.Prompts.text()for å be brukeren om verdiene til å sette i hver av disse tastene.

function (session, results, next) {
  builder.Prompts.text(session, Another key to put?);
},
function (session, results, next) {
  builder.Prompts.text(session, Value to put?);
}

Det virker ikke som om jeg kan lage en slags sløyfe med en matrise som sparer hver tast med sin verdi, er jeg ikke sikker på hvordan å nærme seg dette.

Takk.

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


2 svar

stemmer
3

Det du leter etter er session.replaceDialog () ; Det er et eksempel merket 'innføring sløyfer' på den GitHub repo for SDK. For å sløyfe gjennom ledetekster, har man for å skape en liten dialog med de ønskede instruksjonene og har dialogen starte på nytt automatisk via session.replaceDialog () eller session.beginDialog ().

Jeg har bygget en chatbot som mottar nøkkel-verdi-par i scenariet du har angitt ovenfor. Koden utdrag nedenfor er det siste trinnet i min 'Loop' dialog.

function (session, results) {
    var value = results.response ? results.response : null,
        key = session.dialogData.key;
    var pairs = session.userData.kVPairs;
    var newPair = {};
    newPair[key] = value;
    if (key && value) {
        session.userData.kVPairs.push(newPair);
        console.log(pairs[pairs.length - 1]);
    }
    session.send('latest key-value pair added, { %s : %s }', key, value);
    session.replaceDialog('Loop');
} 

session.replaceDialog ( 'loop') er lagt inn ved slutten av dette trinnet fossen og tar Id av det nye dialogen. Metoden kan også ta valgfrie argumenter for å gå over til den nye dialogen.

Merk: Selv om det ikke er aktuelt her, er forskjellen mellom replaceDialog og beginDialog / endDialog semi-innlysende, når du bruker beginDialog, er den nye dialogen lagt til stabelen. Når du avslutter denne dialogboksen barnet, kommer du tilbake til den opprinnelige dialog / forelder. replaceDialog vil ende dagens dialog og begynne den nye.

Svarte 03/04/2017 kl. 19:57
kilden bruker

stemmer
1

Du kan bruke replacedialog å sløyfe brukeren:

bot.dialog("/getUserKeys", [
   function (session, args, next) {
       session.dialogData.keys = args && args.keys ? args.keys : [];
       builder.Prompts.text(session, "Another key to put?");
   },
   function (session, results, next) {
       if (results.response === "none") {
           session.endDialogWithResult({response: { keys: session.DialogData.keys }});
           return;
       }
       session.dialogData.keys[session.dialogData.keys.length] = results.response;
       session.replaceDialog("/getUserKeys", { keys: session.DialogData.keys });
   }
]);
Svarte 03/04/2017 kl. 19:19
kilden bruker

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