私はMicrosoftボットフレームワークを使って、「シンプルな」PoCボットを作り上げました。私はtutorialを基礎として使用し、それを拡張しました。node.js約束と戻り値を解決する
私はdifferetインテント(greetings、goodbyeなど)のための基本的な機能とそれにいくつかのより多くのロジック(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(出力);'は解決(出力)のみである必要があります。 –
@Sergeonはあなたの早い返信にとても感謝しています。 Unfortunetlyそれは動作しません...また、Jaromandaからの提案された調整X – DPM
それは今うまく動作します。主な問題は、メインスクリプトが渡さなければならなかった変数が正常ではないということでした。あなたのsupprotのために多くのありがとう。 – DPM