我使用Microsoft bot框架來創建一個「簡單」的PoC bot。我用一個tutorial作爲基礎並對其進行擴展。node.js解析承諾並返回值
我有幾個不同的意圖(即問候,再見等)和一個有更多的邏輯(reqstatus)的基本功能。
簡單的(即greeting.js)很好地返回答案,但更復雜的答案不會(reqstatus.js)。在獨立腳本中運行reqstatus.js的主代碼(沒有第一個「const getReqStatus =(entity)=> {」)。
server.js(主) - >查看通話中 「如果(意圖){」 ...
const getFeelings = require('./intents/feelings.js')
const getGoodbyes = require('./intents/goodbyes.js')
const getGreetings = require('./intents/greetings.js')
const getHelp = require('./intents/help.js')
const getReqStatus = require('./intents/reqstatus.js')
...
const bot = new builder.UniversalBot(connector)
// Intents based on definitions on recast
const INTENTS = {
feelings: getFeelings,
goodbyes: getGoodbyes,
greetings: getGreetings,
help: getHelp,
reqstatus: getReqStatus,
}
// Event when Message received
bot.dialog('/', (session) => {
recastClient.textRequest(session.message.text)
.then(res => {
const intent = res.intent()
const entity = res.get('request_number')
console.log(`UserName: ${session.message.user.name}`)
console.log(`Msg: ${session.message.text}`)
console.log(`Intent: ${intent.slug}`)
if (intent) {
INTENTS[intent.slug](entity)
.then(res => session.send(res))
.catch(err => session.send(err))
}
})
.catch(() => session.send('Sorry I didn\'t get that. '))
})
...
greetings.js - >返回字符串OK
const getGreetings =() => {
const answers = ['Hi, my name is SuperBot. Nice to meet you!', ]
return Promise.resolve((answers))
}
module.exports = getGreetings
reqstatus.js - >不返回任何
const getReqStatus = (entity) => {
var request = require('request');
var request_number = entity.toLowerCase()
var output = [];
// Processing
var lineReader = require('readline').createInterface({
input: fs.createReadStream('netreqs.csv')
});
lineReader.on('line', function (line) {
var jsonFromLine = {};
var lineSplit = line.split(';');
jsonFromLine.req = lineSplit[0];
jsonFromLine.req_count = lineSplit[1];
jsonFromLine.req_type = lineSplit[2];
//...
var req_lowever = jsonFromLine.req.toLowerCase()
if (req_lowever == request_number) {
output.push(`Your request ${jsonFromLine.req} was received`);
// simplified
}
});
// Output
lineReader.on('close', function (line) {
if (output == '') {
output.push(`I was not able to find a request like ${request_number}.`);
}
console.log(output); // list output
return Promise.resolve(output);
});
}
module.exports = getReqStatus
我也試圖把getReqStatus放在一個函數中,但這也沒有奏效。 經過很多嘗試和谷歌搜索,我仍然卡住,想問問這裏的專家。提前致謝。
'return resolve(output);'只需要解析(輸出);' –
@Sergeon非常感謝您的快速回復。不幸的是,這不起作用...也沒有從Jaromanda建議的調整X – DPM
它現在工作正常。主要問題是我的主要腳本必須傳遞的變量不正確。非常感謝您的支持。 – DPM