我想开发一种产品,简化使用Microsoft BotFramework SDK创建对话聊天机器人的方式。由于我们可以完全在本地构建和托管 Web 应用程序。
那么我们可以在自托管环境中使用机器人框架构建类似的东西吗?
以下是Microsoft机器人框架的链接:https://dev.botframework.com/
实际上,你可以完全在本地/自承载上构建机器人,前提是你不需要连接到 Teams 等频道。
背景
基本上,机器人通过以下方式进行通信:
User interaction with DirectLine Client (like Web Chat) ->
DirectLine API receives data and sends to bot ->
Bot hosted anywhere receives message
注意:
WebChat只是一个DirectLine客户端。如果要构建自己的 WebChat,可以克隆存储库并自行构建。但是,如果您真的想自托管,那么所有这些都是这样您就可以托管自己的webchat.js
文件。
步骤
考虑到这一点,您所需要的只是:
像 Web Chat 这样的直线客户端(在调用
createDirectLine
时domain
使用自己的终结点指定属性(,或者可以编写自己的客户端你拥有像
offline-directline
这样的直线 API 实现(更多信息(将机器人托管在某个位置
安全
使用此方法,你将无法使用典型的应用 ID/密码设置。
您可以按照此文档手动实施我们的安全协议
即使可以手动实现安全协议,我们也建议重用我们现有的开源库
根据答案,在这里放一个更完整的答案。由于存在具有 Internet 连接的选项,因此我绝对建议使用 Azure 机器人注册将解决方案创建为"常规"机器人框架机器人。重要的是,有两个选项可以执行此操作 - 最明显的一个为机器人创建"注册",但也默认将其托管在 Azure Web 应用中,这会产生相当大的相关成本。但是,还有另一种选择,即仅创建"机器人通道"注册,这意味着可以在 Azure 中注册机器人,但不一定托管在 Azure 中。
我在这篇文章中对此进行了更多描述,你想要在 Azure 中使用"机器人通道注册",而不是"Web 应用机器人"。然后,在"设置"屏幕上,您可以定义机器人的实际地址(有关设置屏幕的视图,请参阅此处(。
因此,总的来说,这应该会有所帮助 - 基本上机器人只需要有一个HTTPS,互联网可访问的端点。但是,也就是说,可以在Azure Functions而不是Azure Web Apps中托管机器人,并且成本要便宜得多(美分与美元,尤其是在低流量的情况下(。这有点工作,特别是当默认示例默认为更标准的选项时,但它运行良好。
顺便说一下,我最近推出了一个新博客,我有一篇文章描述了我迄今为止学到的关于机器人如何工作的一些知识,作为其中的一部分,很高兴知道。了解机器人调用的实际工作原理。
由于 MS Teams 集成的要求,我们正在从具有我们自己的 DirectLine 服务器的完全本地解决方案迁移到 Azure 机器人通道注册。