我有一个基于用户提示获取新闻文章的简单机器人。整个流程在本地使用模拟器工作正常,但在部署到服务器后,僵尸程序在遇到builder.Prompts.text块时失败。下面是我的代码,您将看到"询问文章计数"提示它在流程中停止的地方。
Bot在交互后也为每个频道显示0个问题
var bot = new builder.UniversalBot(connector);
var intents = new builder.IntentDialog();
bot.dialog('/', intents);
var HHCC = require('./hhcc.js');
intents.matches(/^news/i, [
function(session) {
console.log("Intent Given!");
session.beginDialog('/news');
},
function(session, results) {
session.send('Enjoy reading!');
}
]);
bot.dialog('/news', [
function(session) {
console.log("Asking article count");
builder.Prompts.text(session, 'How many articles would you like to see?');
},
function(session, results) {
session.sendTyping();
session.conversationData.count = results.response;
HHCC.getNews(session.conversationData.count, session, function(newsArticles) {
newsArticles.forEach(function(newsCard) {
session.send(newsCard);
});
session.conversationData.news = newsArticles;
console.log(newsArticles);
session.endDialog();
});
}
]);
server.post('/api/messages', connector.listen());
我检查了所有日志,但似乎无法找到任何线索,因为它失败了。
答案 0 :(得分:0)
您是否尝试过使用builder.Prompts.number()而不是.text()?它只接受数字并且(我猜测你正在做这个)你不必解析结果。回复一个数字。如果没有提供错误消息或日志,则很难提供帮助。
您可能需要注意的一件事(如果使用builder.Prompts.number)是用户提供小数,因为提示将接受此输入,要求机器人舍入到最接近的整数。
此外,如果您已将results.response保存到会话对象中,则无需将session.conversationData.count作为另一个参数传递给HHCC.getNews()。您可以在函数中从会话中访问它。