Heroku Hosting Microsoft Bot Framework Chatbot 不工作

Posted

技术标签:

【中文标题】Heroku Hosting Microsoft Bot Framework Chatbot 不工作【英文标题】:Heroku Hosting Microsoft Bot Framework Chatbot not working 【发布时间】:2017-12-22 22:47:21 【问题描述】:

我使用 Microsoft Bot Framework 做了一个聊天机器人。该机器人在模拟器上运行良好。但是我想将它托管到 Heroku。

我的 app.js 代码:

var builder = require('botbuilder');
var restify = require('restify');
var apiairecognizer = require('api-ai-recognizer');
var request = require('request');

//=========================================================
// Bot Setup
//=========================================================

// Setup Restify Server
var server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function () 
   console.log('%s listening to %s', server.name, server.url); 
);

// Create chat bot
var connector = new builder.ChatConnector(
    appId: "xxx", /*changed*/
    appPassword: "xxx" /*changed*/
);

server.post('/api/messages', connector.listen());
var bot = new builder.UniversalBot(connector);


var recognizer = new apiairecognizer("xxx");
var intents = new builder.IntentDialog(
         recognizers: [recognizer]
);

bot.dialog('/',intents);

intents.matches('Intro',function(session, args)
    var fulfillment = builder.EntityRecognizer.findEntity(args.entities, 'fulfillment');
    if (fulfillment)
        var speech = fulfillment.entity;
        session.send(speech);
    else
        session.send('Sorry...not sure how to respond to that');
    
);

intents.matches('Default Fallback Intent',function(session, args)
     var fulfillment = builder.EntityRecognizer.findEntity(args.entities, 'fulfillment');
    if (fulfillment)
        var speech = fulfillment.entity;
        session.send(speech);
    else
        session.send('Sorry...not sure how to respond to that');
    
);

我尝试了以下命令将其推送到 Heroku:

    git remote rm heroku git 初始化 创建了一个文件 .gitignore 并在其中 node_modules/ git 添加。 git commit -m "基本机器人设置完成" Procfile 并添加了代码 web: 节点 index.js heroku 创建 heroku git:remote -a 应用名称 git push heroku master heroku 打开

我还在 Bot 开发门户中通过消息传递端点更新到消息传递端点:http://appname.herokuapp.com/api/messages。

构建成功。如果我打开 http://appname.herokuapp.com/api/messages,我会看到 "code":"MethodNotAllowedError","message":"GET is not allowed" 并打开 "code":"ResourceNotFound","message":"/ does not exist"

我被困在这里。我想使用 Bot 注册门户提供的 I Frame 在页面上显示聊天机器人。如何从这里开始并使机器人工作?

【问题讨论】:

预期会出现 get 错误,因为端点是 POST 路由。注册门户中的聊天是否有效? 您的服务器是否有有效的 SSL 证书?您的消息端点必须通过具有有效证书的 HTTPS 公开。 【参考方案1】:

我遇到了同样的问题,通过这样做解决了它。 在 app 文件夹中打开终端/powershell 并输入以下内容

heroku config:set MICROSOFT_APP_ID=YOUR_APP_ID MICROSOFT_APP_PASSWORD=YOUR_APP_PASSWORD

【讨论】:

【参考方案2】:

这意味着您的机器人已托管并且正在运行。您的机器人基本上是一个只接受发布请求的 API:

server.post('/api/messages', connector.listen());

因此,当您尝试在浏览器中访问 http://appname.herokuapp.com/api/messages 时,您正在发出 GET 请求,您的 API 不接受该请求。

iFrame 将成为您的机器人的前端,它将使用您在 heroku 上托管的机器人 API。设置 iFrame 的说明在这里:https://docs.microsoft.com/en-us/bot-framework/channel-connect-webchat

您可以通过单击右上角的测试按钮来测试 API 是否在机器人门户 https://dev.botframework.com/bots?id=[your-bot-id] 上运行,该按钮将打开网络聊天。

【讨论】:

以上是关于Heroku Hosting Microsoft Bot Framework Chatbot 不工作的主要内容,如果未能解决你的问题,请参考以下文章

访问 Microsoft.Extensions.Hosting 服务时出现问题。使用 AddPooledDbContextFactory

Microsoft.Extensions.Hosting.HostFactoryResolver+HostingListener+StopTheHostException

无法使用单例“Microsoft.AspNetCore.Hosting.Internal.HostedServiceExecutor”中的范围服务“MyDbContext”

命名空间“Microsoft.AspNetCore.Razor”中不存在类型或命名空间名称“Hosting”

.NetCore 3.1API 无法加载文件或程序集“Microsoft.AspNetCore.Hosting.Abstractions”

首次迁移时访问 Microsoft.Extensions.Hosting 服务时出错