Como posso lidar com "cancelar" intenção quando já em um diálogo?

votos
1

Em Microsoft Bot Framework, eu já começou uma conversa e ter algum running intenção, vamos dizer login, mas, em seguida, enquanto eu perguntar ao usuário nome de usuário ou senha, ele poderia dizer cancelar que ou cancelar login, como eu obter esta intenção: cancelar e como posso lidar com isso, cancelando fora do diálogo atual?

// Login Dialog
bot.dialog('login', [
    (session:Builder.Session) => {
        Builder.Prompts.text(session, 'What\'s your account email?');
    },
    (session:Builder.Session, results: any) => {
        session.dialogData.email = results.response;
        Builder.Prompts.text(session, 'What\'s your password?');
    },
    (session:Builder.Session, results: any) => {
        session.dialogData.passWord = results.response;
        CheckAccountLogin(session, session.dialogData.email,session.dialogData.passWord)
            .then((result:boolean)=>{
                if(result === true){
                    session.send('Login Successful');
                    session.userData.loginSuccessful = true;
                    session.userData.email = session.dialogData.email;
                }else{
                    session.userData.loginSuccessful = false;
                }
                session.endDialog();
            });
    },
]);
Publicado 20/09/2018 em 04:18
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

Consulte este artigo: https://docs.microsoft.com/en-us/azure/bot-service/nodejs/bot-builder-nodejs-recognize-intent-messages?view=azure-bot-service-3.0

Basicamente você pode registrar um CancelIntentreconhecedor que fará com que a conversa encaminhou o diálogo que você quer, então acionado. Por exemplo:

bot.recognizer(new builder.RegExpRecognizer( 
    "CancelIntent", 
    { en_us: /^(cancel|nevermind)/i, ja_jp: /^(キャンセル)/ })
);

Este usa uma expressão regular para detectar quando o usuário quiser cancelar, e uma maneira de cancelar o diálogo atual seria apenas para terminar a conversa:

bot.dialog('CancelDialog', function (session) {
    session.endConversation("Ok, cancelling loggin.");
}).triggerAction({ matches: 'CancelIntent' });

Observe que o código acima diz o enquadramento bot para terminar a conversa, assim que o diálogo de login terminará, assim, cancelando a ação.

Aqui estão alguns exemplos úteis também: https://github.com/Microsoft/BotBuilder-Samples/blob/master/Node/intelligence-LUIS/app.js

Editar

Para configurar um reconhecedor intenção Luis primeiro você precisa remover a RegexRecognizer anteriormente registrado e, em seguida, criar uma nova instância do LuisRecognizer fazendo:

// Make sure you add code to validate these fields
var luisAppId = process.env.LuisAppId;
var luisAPIKey = process.env.LuisAPIKey;
var luisAPIHostName = process.env.LuisAPIHostName || 'westus.api.cognitive.microsoft.com';

const LuisModelUrl = 'https://' + luisAPIHostName + '/luis/v2.0/apps/' + luisAppId + '?subscription-key=' + luisAPIKey;

// Create a recognizer that gets intents from LUIS, and add it to the bot
var recognizer = new builder.LuisRecognizer(LuisModelUrl);

E, em seguida, registrar o reconhecedor Luis com:

bot.recognizer(recognizer);

Seu CancelDialog deve olhar o mesmo, ele irá corresponder a intenção com a triggerAction.matches:

bot.dialog('CancelDialog', function (session) {
    session.endConversation("Ok, cancelling loggin.");
}).triggerAction({ matches: 'CancelIntent' });

Depois de ter essa configuração criar a CancelIntentsua Luis App, adicionar algumas declarações de exemplo para ele (pelo menos três) ea conversa deve avançar automaticamente para a CancelDialog uma vez que o CancelIntent é detectado.

Não há mais informações sobre isso aqui: https://docs.microsoft.com/en-us/azure/bot-service/nodejs/bot-builder-nodejs-recognize-intent-luis?view=azure-bot-service-3.0

Respondeu 20/09/2018 em 20:48
fonte usuário

votos
0

Outra maneira de fazer isso é usar o construída em cancelar evento. Luis ainda iria funcionar. Isto é baseado na resposta de Javier:

// Setup Luis Recognizer first:
const LuisModelUrl = 'https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/' + LuisID + '?subscription-key=' + LuisKey;
var recognizer = new Builder.LuisRecognizer(LuisModelUrl);
bot.recognizer(recognizer);

// Dialog definition
bot.dialog('login', [
    (session:Builder.Session) => {
        // Your dialog stuff here
    }
]).cancelAction(
    "Cancel", "What would you like to do next?",
    {
        matches: "Cancel",
        confirmPrompt: "This will cancel your dialog.  Are you ure?"
    }
);
Respondeu 07/10/2018 em 03:55
fonte usuário

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