Heroku托管Microsoft Bot框架Chatbot无法正常工作

时间:2017-07-18 07:41:30

标签: node.js git heroku github botframework

我使用Microsoft Bot Framework完成了一个Chat-bot。机器人在模拟器上完美运行。但是我想把它寄给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:

  1. git remote rm heroku
  2. git init
  3. 创建了一个.gitignore文件,并在其中创建了node_modules /
  4. git add。
  5. git commit -m"完成基本机器人设置"
  6. Procfile并添加了代码 web:node index.js
  7. heroku create
  8. heroku git:remote -a app name
  9. git push heroku master
  10. heroku open
  11. 我还通过消息传递端点更新到Messaging Endpoint: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在页面上设置chat-bot。如何从这里开始,让机器人工作?

2 个答案:

答案 0 :(得分:3)

我有同样的问题,通过这样做修复它。 在app文件夹中打开terminal / powershell并输入以下内容

heroku config:set MICROSOFT_APP_ID=YOUR_APP_ID MICROSOFT_APP_PASSWORD=YOUR_APP_PASSWORD

答案 1 :(得分:0)

这意味着您的机器人已托管并正常工作。您的机器人基本上是一个只接受帖子请求的API:

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

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

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

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