我有一个简单的机器人,可以根据用户提示获取新闻文章.整个流程在本地使用模拟器工作正常,但在部署到服务器后,僵尸程序在遇到builder.Prompts.text块时失败.下面是我的代码,你会看到一
>在BOT框架页面上进行测试时,Bot显示已被接受
> Bot正在通过WebChat和Slack接收消息
> 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());
我已经检查了所有日志,似乎无法找到任何线索,因为它失败了相当默默.
您是否尝试过使用builder.Prompts.number()而不是.text()?它只接受数字和(我猜你这样做)你不必解析结果.回复一个数字.如果没有提供错误消息或日志,则很难提供帮助.您可能需要注意的一件事(如果使用builder.Prompts.number)是用户提供小数,因为提示将接受此输入,要求机器人舍入到最接近的整数.
此外,如果您已将results.response保存到会话对象中,则无需将session.conversationData.count作为另一个参数传递给HHCC.getNews().您可以在函数中从会话中访问它.