Я разработал служебную функцию для получения пользовательской информации (чтобы проверить, вошел ли пользователь), которая использует три функции в водопаде. Первая функция ( promptUserId ) молча отправляет сообщение в пользовательский интерфейс и ожидает ответ. Вторая функция сохраняет ответ ( saveUserId ) из пользовательского интерфейса, а третья функция (** processUserId **) обрабатывает ответ из пользовательского интерфейса и возвращает значение. Можно ли объединить эти 3 функции в одну функцию, чтобы эту утилиту можно было использовать как однострочный вызов, куда бы я ни захотел?
userUtil. js - реализованная утилита, а file1. js - файл, использующий userUtil. js
Ниже приведен userUtil. 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;
}
}
];
Есть ли способ обработки запросов на сборку в одном водопад или реализовать функцию, которая возвращает return session.dialogData.userData ??