我有一个简单的聊天机器人,它接受用户的名字并回复询问它如何帮助他们。它在模拟器和网络聊天中工作得很好,但是当我通过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)
为什么要发送未定义的消息?我怎么能阻止它?
答案 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文档主题。