BotFramework WebChat没有收到消息。

时间:2016-08-12 21:48:50

标签: node.js azure botframework

我有一个在使用模拟器时在本地工作的机器人,但是如果我尝试使用WebChat或Skype。它只会以一种方式工作(意思是,请求来自网络聊天和Skype,但回复它们的响应不会发生)。我的代码更复杂,但是当我使用下面的代码时,我得到相同的响应。

   var restify = require('restify');
var builder = require('botbuilder');

//=========================================================
// 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: process.env.MICROSOFT_APP_ID,
    appPassword: process.env.MICROSOFT_APP_PASSWORD
});
var bot = new builder.UniversalBot(connector);
server.post('/api/messages', connector.listen());

server.get('/', restify.serveStatic({
 directory: __dirname,
 default: '/index.html'
}));

//=========================================================
// Bots Dialogs
//=========================================================

bot.dialog('/', function (session) {
    session.send("Hello World");
}); 

我正在使用NGrok指向我的本地计算机并使用Ngrok网址作为消息传递端点。正如您所看到的,测试机器人会被接受。

BotFramework Screen 1

我在调试模式下使用VSCode并附加,以便我可以单步执行。如果我从模拟器运行,它被捕获,我可以通过调试并接收" Hello World"从

发送
session.send("Hello World");

如果我尝试使用Skype或网络聊天频道。它命中端点,像模拟器一样运行代码。但session.send不会向Skype或网络聊天返回任何内容(至少没有显示任何内容)

如果我看一下流量。两者(模拟器与其他人)之间的区别在于

1)我得到202接受和100继续(从Skype或网聊继续100) 2)授权承载有一个令牌。如果我将它加载到azure并从那里运行它也会发生同样的事情。

任何帮助将不胜感激。

enter image description here

2 个答案:

答案 0 :(得分:3)

the BotBuilder Gitter Channel处理完问题后,我们解决了这个问题。事实证明MICROSOFT_APP_ID和MICROSOFT_APP_PASSWORD环境变量未正确设置。

我想我会在这里发帖,因为这对于遇到同样问题的其他人来说可能是有用的信息。

BotBuilder SDK没有告知您这个丢失的配置这一事实是一个错误,我正在为它编写一个错误报告。

答案 1 :(得分:1)

首先,我强烈建议在机器人注册中为您的Bot挂钩Azure App Insights。我们在那里记录了很多,而且它是免费的,我相信每月前500万个数据点。

在我们的日志中,我看到从机器人到Skype的呼叫被403拒绝。可能您的MSAAppID和MSAAppPassword没有正确设置,因此您对服务的请求不会被拒绝。正确签署。

如果您在调查中找不到任何内容,请告诉我们。