Bot框架:Bot响应“未定义”

时间:2017-05-29 15:50:27

标签: node.js botframework

我有一个简单的聊天机器人,它接受用户的名字并回复询问它如何帮助他们。它在模拟器和网络聊天中工作得很好,但是当我通过DirectLine尝试将其作为Android应用程序时,我得到了一个空的附加提示。所以我放了一些代码来记录机器人的对话,我发现机器人正在发送一条消息“未定义”以及我编程发送的提示。

我的代码示例

bot.dialog('/', new builder.IntentDialog()
    .matchesAny([/hi/i], [
        function (session) {
            session.send('Hi, I am a chatbot.');
            session.beginDialog('/step2')
        },
        bot.dialog('/step2', [
            function (session) {
                builder.Prompts.text(session, 'What is your name?');
            },
            function (session, args, next) {
                session.send('Hello, ' + args.response + '. How may I help you today?');
                name = args.response;
                session.endConversation();
            }
        ])
    ]));

当我输入一些中间件日志时,我得到以下输出:

  

USER:嗨

     

BOT:嗨,我是聊天机器人。

     

BOT:你叫什么名字?

     

USER:Bob

     

BOT:你好,鲍勃。我今天可以帮你什么?

     

BOT:未定义

即使我的节点控制台显示最后发送了2条消息,而不只是一条

ChatConnector: message received.
UniversalBot("*") routing "Anish" from "emulator"
Library("BotBuilder").findRoutes() explanation:
        ActiveDialog(0.5)
..BotBuilder:prompt-text - Prompt.returning(Anish)
..BotBuilder:prompt-text - Session.endDialogWithResult()
./step2 - waterfall() step 2 of 2
./step2 - Session.send()
./step2 - Session.endConversation()
Session.sendBatch() sending 2 message(s)

为什么要发送未定义的消息?我怎么能阻止它?

1 个答案:

答案 0 :(得分:0)

尝试删除以下行

 session.send('Hello, ' + args.response + '. How may I help you today?');

并将Session.endConversation()来电替换为:

Session.endConversation('Hello, ' + args.response + '. How may I help you today?');

或者,您可以像我在评论中提到的那样删除Session.endConversation()来电

您还可以查看End of Conversation文档主题。