我寫的用玩笑我的機器人的考驗,我有以下代碼:調用而processMessage()從bot.on(「發送」)
let bot;
let conn;
let index = 0;
let responses = [];
let expectedResponses = [];
beforeEach(() => {
let connector = new builder.ConsoleConnector();
bot = new builder.UniversalBot(connector);
conn = connector;
});
test('test case 1 jeff',() => {
bot.library(require('../dialogs/inputRecognizer').createLibrary());
// the main dialog "/" should start "inputRecognizer:/"
// as it can be seen [https://github.com/Microsoft/BotBuilder/blob/858aad96cdd1fabbf7f9a29ee797eb03111d7cba/Node/core/tests/Dialogs.js][1] the code below seems to be identical to the one shown in examples
bot.dialog('/', [
(session) => {
session.beginDialog('inputRecognizer:/');
}
]);
basicMessages.forEach(o => {if (o.in) {expectedResponses.push(o.in)}});
bot.on('send', function (message) {
responses.push(message.text);
index++;
if (index < testMessages.length) {
conn.processMessage(basicMessages[index].out);
} else {
expect(responses).toEqual(expectedResponses);
}
});
conn.processMessage(basicMessages[0].out);
});
的代碼運行正常,我的所有郵件投入連接器。但是,第二條消息被視爲一個新對話框,以下所有消息都將被視爲新對話框。所以我得到的是對話開始一遍又一遍。
我查看了GitHub上的BotFramework測試,看起來他們使用了類似的方法(觸發'send'事件處理程序之外的第一個processMessage,並從處理程序中調用下一個)。
如何讓processMessage每次都不重啓我的對話框?我認爲這是我的對話的問題,也許?
我的對話框代碼( 「inputRecognizer:/」):
lib.dialog('/', [
function (session) {
// it always executes this part
builder.Prompts.text(session,
`Please type your inquiry!`);
},
(session, result) => {
if (result.response) {
// and it never gets to here
編輯:basicMessages
是這樣的:
module.exports = [
{
out: 'hi',
in: 'Please type your inquiry!',
},
{
out: 'aaa',
in: 'Please type your inquiry!'
},
{
out: 'aaa',
in: 'Please type your inquiry!'
},
{
out: 'aaaa',
in: 'Please type your inquiry!'
},
{
out: 'aa',
in: 'Please type your inquiry!'
}
];
我對你發佈的代碼感到困惑。我看到一個正在測試的'/'對話框,然後用兩步瀑布顯示另一個瀑布,你說沒有達到第二步。你可以分享你的完整測試用例嗎? –
第一個對話框調用'inputRecognizer:/'對話框。第二塊代碼是inputRecognizer對話框本身。 – faso
「basicMessages」中有什麼? –