我一直在尝试寻找一种替代方法,以使用 Microsoft/Azure 注册和托管我的Microsoft机器人。我知道我可以在本地托管机器人,只需向Microsoft注册即可访问各种可用通道,但我希望托管我的机器人与Microsoft的注册完全分开。
我的基本目标是公开一个可以直接与我的机器人通信的终结点/api,而无需向Microsoft注册所述机器人。我相信这可以通过某种中间件来完成,但我很难找到有用的资源。我试图使用nodejs包,离线直接,但没有成功。我相信该软件包已过时,不再按预期工作。目前,我使用此软件包作为参考,以尝试炮制自己的解决方案,但任何替代资源都会有所帮助。
关于这个项目的一些最后细节。该机器人是利用Microsoft的机器人框架在.Net中编写的。我[需要]一个专门适用于.Net机器人的解决方案,但我对一个可以与.Net[和] Nodejs机器人一起使用的解决方案持开放态度。感谢您的任何帮助,我很乐意回答任何其他问题。
关于离线直线存储库,以下是我的设置的当前状态。我正在尝试通过利用Microsoft的 EchoBot 样本来获得准系统版本。我使用此网址 http://localhost:8080/?domain=http://localhost:3000/directline 连接到网络聊天。以下是我的 nodejs 应用程序和客户端网络聊天的代码片段。
应用.js
const directline = require("offline-directline");
const express = require("express");
const app = express();
directline.initializeRoutes(app, 3000, "http://127.0.0.1:3978/api/messages");
索引.html
<!DOCTYPE html>
<html>
<body>
<div id="webchat" role="main"></div>
<script src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"></script>
<script>
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
let params = getUrlVars();
console.log(params);
window.WebChat.renderWebChat({
directLine: window.WebChat.createDirectLine({
token: params['s'],
secret: params['t'],
domain: params['domain'],
webSocket: false
}),
},
document.getElementById('webchat')
);
</script>
</body>
</html>
错误
控制台错误
不确定您需要多少重构,但 Botkit 可能会为您提供所需的内容。
Botkit 只是更多开发人员工具和 SDK 的一部分 包含Microsoft机器人框架。机器人框架 SDK 提供构建 Botkit 的基础。它适用于 多种编程语言!
或者,如果你足够大胆,你可以问问Microsoft opencode@microsoft.com 的人是否可以拉出他们的机器人框架SDK并撕掉Azure位?
关于"离线直接"包,它并没有过时。我怀疑您没有正确配置它。下面的代码示例足以使包运行。然后,只需将机器人指向它。
const directline = require('offline-directline');
const express = require('express');
const app = express();
directline.initializeRoutes(app, 4000, "http://127.0.0.1:3978/api/messages");
如果您继续挣扎,另一种选择是"浏览器机器人",您可以在 Botbuilder-Samples 存储库中找到它 此处.在此设置中,机器人完全托管在浏览器中,不需要使用直线。设置只是略有不同,因此需要您使用一些配置。但是,值得一看。
希望有帮助!