使用Microsoft机器人框架,是否可以将多个瀑布组合成一个函数?



我开发了一个实用程序函数来获取userInformation(检查用户是否已登录(,它在瀑布中使用三个函数。第一个函数(promptUserId(以静默方式向UI发送消息并期望响应。第二个函数从 UI 保存响应(saveUserId(,第三个函数(**processUserId **(处理来自 UI 的响应并返回一个值。是否可以将这 3 个函数组合成一个函数,以便此实用程序可以在我想要的任何地方用作单行调用?

userUtil.js 是实现的实用程序,file1.js 是使用 userUtil 的文件.js

下面给出的是用户实用.js

const promptUserId= (session, args, next) => {
builder.Prompts.text(session, 'Ask UserId');
next();
};
const saveUserId= (session, results, next) => {
if (results.response){  
session.dialogData.loginUserId = results.response;
}else{
session.dialogData.loginUserId ='XYZ12333333333';
}
next();
};

const processUserId = (userId) => {
let userInfo,userObject;
//process the received userId to get 'userObject' and assign it to userInfo 
//userObject = result from api where input is userId and output is userObject    
userInfo=userId;
return userInfo;
};
module.exports = {
promptUserId,
saveUserId,
processUserId
};

这是文件.js

const userUtil = require('../util/userUtil');
module.exports = [
(session, args, next) => {
userUtil.promptUserId(session, args, next);
},
(session, results, next) => {
user.saveUserId(session, results, next);
},
async (session, args, next) => {
session.dialogData.userInfo = await user.processUserId(session.dialogData.loginUserId);
// user is logged in save consent and connect to agent
if (session.dialogData.userData) {
return session.dialogData.userData;
}
}
];

有没有办法在单个瀑布中处理构建器提示或实现返回返回 session.dialogData.userData 的函数?

您可以将它们组合到类似于此示例的对话框中。

话虽如此,如果这是一个较新的机器人,我强烈建议不要在 v3 中构建它。请改用机器人框架 v4。即使这不是较新的机器人,我也建议迁移到 v4。您将获得的一个主要好处是使用瀑布对话框,它可以轻松完成您想要的操作。

最新更新