gpt4 book ai didi

node.js - 当已经在对话框中时,如何处理 "cancel"意图?

转载 作者:太空宇宙 更新时间:2023-11-04 00:05:40 28 4
gpt4 key购买 nike

在 Microsoft Bot Framework 中,我已经开始对话并运行一些意图,假设“登录”,但是当我向用户询问用户名或密码时,他可能会说“取消该”或“取消登录”,我如何获得此意图:“取消”以及如何通过取消当前对话框来处理它?<​​/p>

// 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();
});
},
]);

最佳答案

引用这篇文章:https://learn.microsoft.com/en-us/azure/bot-service/nodejs/bot-builder-nodejs-recognize-intent-messages?view=azure-bot-service-3.0

您基本上可以注册一个 CancelIntent 识别器,这将使对话转发您想要触发的对话框。例如:

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

这使用正则表达式来检测用户何时想要取消,取消当前对话框的一种方法是结束对话:

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

请注意,上面的代码告诉机器人框架结束对话,因此登录对话框将结束,从而取消操作。

这里还有一些有用的示例:https://github.com/Microsoft/BotBuilder-Samples/blob/master/Node/intelligence-LUIS/app.js

编辑

要设置 Luis 意图识别器,您首先需要删除之前注册的 RegexRecognizer,然后通过执行以下操作创建 LuisRecognizer 的新实例:

// 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);

然后注册 Luis 识别器:

bot.recognizer(recognizer);

您的 CancelDialog 应该看起来相同,它将与 triggerAction.matches 匹配意图:

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

完成该设置后,在 Luis 应用程序中创建 CancelIntent,向其中添加一些示例话语(至少三个),一旦检测到 CancelIntent,对话就会自动转发到 CancelDialog。

这里有更多相关信息:https://learn.microsoft.com/en-us/azure/bot-service/nodejs/bot-builder-nodejs-recognize-intent-luis?view=azure-bot-service-3.0

关于node.js - 当已经在对话框中时,如何处理 "cancel"意图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52417508/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com