【发布时间】:2016-12-19 23:55:36
【问题描述】:
我有一个机器人在使用模拟器时可以在本地工作,但如果我尝试使用 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 url 作为消息传递端点。如您所见,测试机器人返回为已接受。
我在调试模式下使用 VSCode 并附加,以便我可以逐步完成。如果我从模拟器运行,它被捕获,我可以调试并接收从
发送的“Hello World”session.send("Hello World");
如果我从 Skype 或网络聊天频道尝试。它到达端点,像模拟器一样运行代码。但是 session.send 不会向 Skype 或网络聊天返回任何内容(至少没有任何显示)
如果我查看交通情况。两者(模拟器与其他)的区别在于
1) 我得到一个 202 Accepted 和一个 100 Continue (没有 100 从 Skype 或网络聊天继续) 2)授权承载中有一个令牌。如果我将它加载到 azure 并从那里运行它,也会发生同样的事情。
任何帮助将不胜感激。
【问题讨论】:
标签: node.js azure botframework