【问题标题】:builder.Prompts.text not working after being hosted remotelybuilder.Prompts.text 远程托管后无法正常工作
【发布时间】:2017-03-06 15:29:47
【问题描述】:

我有一个简单的机器人,可以根据用户提示获取新闻文章。整个流程使用模拟器在本地运行良好,但在部署到服务器后,机器人在遇到 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());
    

我检查了所有日志,似乎找不到任何线索,因为它的失败非常安静。

【问题讨论】:

    标签: node.js botframework botbuilder


    【解决方案1】:

    您是否尝试过使用 builder.Prompts.number() 而不是 .text()?它只接受数字并且(我猜你正在这样做)你不必将 results.response 解析为数字。如果没有提供错误消息或日志,就很难提供帮助。

    您可能需要注意的一件事(如果使用 builder.Prompts.number)是用户是否提供小数,因为提示将接受此输入,要求机器人四舍五入到最接近的整数。

    此外,如果您已将 results.response 保存到会话对象中,则无需将 session.conversationData.count 作为另一个参数传递给 HHCC.getNews()。您可以改为从函数中的会话访问它。

    【讨论】:

    • 您好,感谢您的回答!到目前为止,我什至没有得到返回任何平台的提示,而且由于我们无法访问 Botframework 日志,我无法看到下降发生在哪里。因此,当我输入“新闻”时,它会触发意图,并且我在我们的服务器日志上都看到了 console.logs,但没有响应返回到我正在使用的任何客户端。
    • console.logs 是用于测试目的吗?我想知道他们是否会干扰(尽管我无法想象他们为什么会这样做);你说机器人使用模拟器在本地工作,但在通过 WebChat 和 Slack 部署和访问时不能。如果您使用console.logs 是为了开发人员的利益,那么我会在它们之后添加一些良性的东西,例如session.send 并寻找更改。如果session.sends 发生相同的事件,我会通过将这些日志更改为session.send 来查找更改。
    • 刚刚尝试过,session.send 也没有向客户端返回任何内容,也用 session.sends 替换了 console.logs。 :( 不知道发生了什么
    • 呸 :( 我想我已经没有什么可尝试的了……不是真正的“修复”,但是,你尝试过使用 Azure Bot Service 吗?
    • 没有,让我尝试在 Azure 上运行该应用程序,目前正在使用 Rackspace。
    猜你喜欢
    • 1970-01-01
    • 2020-02-07
    • 2013-11-10
    • 2017-04-30
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多