"간단한"PoC 봇을 만들기 위해 Microsoft bot 프레임 워크를 사용합니다. 나는 tutorial을 기초로 사용하고 그것을 확장했다.node.js 약속 및 반환 값을 확인하십시오.
나는 differet 의도 (greetings, goodbye 등)를위한 몇 가지 기본적인 기능을 가지고 있으며, 하나의 로직에 대해서는 몇 가지 더 있습니다 (reqstatus).
단순한 응답 (예 : greeting.js)은 응답을 멋지게 반환하지만 더 복잡한 응답 (reqstatus.js)은 응답을 반환하지 않습니다. 독립적 인 스크립트에서 첫 번째 "const getReqStatus = (entity) => {")없이 reqstatus.js의 주 코드를 실행하면 작동합니다.
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은 -> 확인 캐릭터 라인을 돌려줍니다
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);은 (resolve) 만 필요합니다. –
@Sergeon은 빠른 답장을 보내 주셔서 감사합니다. Unfortunetly 그것도 작동하지 않습니다 ... 또한 Jaromanda X에서 제안 된 조정 X – DPM
그것은 잘 작동합니다.주요 문제는 내 메인 스크립트가 전달해야하는 변수가 좋지 않다는 것입니다. 너의 supprot을 위해 고마워한다. – DPM