问题标签 [direct-line-botframework]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - 如何使用 Bot Framework 自动将用户添加到对话中?
conversationUpdate()
一旦网页加载了我的聊天机器人,我就会让我的机器人自动向用户打招呼。然后它启动带有选项菜单的根对话框。请参阅下面的代码片段。
问题在于,一旦用户加入对话,/
对话框就会自动再次调用,并且用户会看到重复的菜单选项对话框。
用户加入对话后,如何停止根对话的启动?如果我不能,我该如何解决这个问题?
我的想法是强制将用户与机器人同时添加到对话中。不确定这是否有意义。
第一个机器人在这里,所以不知道如何做到这一点。
swagger - client.clientAuthorizations.add 在 Directline API 中未定义
我正在尝试运行此标准直线示例。我在 Directline 网站上生成了密钥并输入了它。我不断收到此错误
这是我的完整代码,带有用于说明目的的虚拟键。我没有修改示例中的任何内容。client.clientAuthorizations 为空,任何建议,在此先感谢
c# - 如何在 IIS 管理器中本地托管 Microsoft Bot
我有一个我想在本地托管的机器人,并且我已经通过letsencrypt将该机器人托管在具有有效SSL证书的域上。绑定到 bot 所在域的证书由 IdenTrust (DST Root CA X3) 提供,它是 Microsoft 根认证计划的参与者。
机器人连接的数据库是服务器中的本地数据库。但是,机器人所在的域可以通过网络调用访问。也可以通过托管在机器人所在的同一站点下的另一个应用程序访问数据库。
但是,我无法访问该机器人,并且不断收到以下错误:[向您的机器人发送此消息时出错:HTTP 状态代码 InternalServerError]
请帮忙!谢谢!
botframework - 了解活动的名称
我有一个试图模仿反向通道示例的聊天机器人。
一切大部分都是正确的,除了我无法理解下面的代码应该如何工作。
我假设我可能需要在我的机器人中命名一些 changeBackground ?activity.type 也不应该是“消息”而不是事件吗?
当我执行 console.log 向我显示 activity.name 时,我传递的每条消息都是“未定义的”。我究竟在哪里设置活动的名称,以便我可以触发更改背景?
python - 使用 Microsoft Bot Emulator 运行 chatterbot - 连接被拒绝错误
我一直在努力理解 Microsoft Bot Emulator 如何根据其侦听的端口工作。
问题 - 我正在尝试使用 Chatterbot(一个 python 包)构建一个将在模拟器上运行的玩具机器人。Chatterbot 具有 Microsoft 的输入和输出适配器(使用 Directline)。根据他们的教程,我创建了一个看起来像这样的玩具示例:
我的问题:
- 这个代码片段可以在模拟器上运行吗?或者,这是否需要托管在 Azure 上的机器人?
现在,如果我运行此代码并启动模拟器,我要么遇到“连接被拒绝错误”,要么模拟器说找不到端点。
- 在该行
directline_host = "http://localhost:3979"
中,端口号是否应该是模拟器所需的端点?或者,它应该是模拟器正在监听的端口吗?(每次模拟器启动时都会更改的 5 位数字)
c# - 在机器人中实现 IActivitySource 以检索活动历史记录
我正在尝试在我的机器人中实现Microsoft.Bot.Builder.History.IActivitySource以检索之前保存在我的 SQL 数据库中的活动(我之前使用IActivityLogger来保存它们)。问题是:这个接口在 bot 框架中用于调用我的类并返回对话活动的历史记录?
我正在使用 Directline 来调用我的机器人,但是当我通过“id”加载对话时,它是从 de DL caché 中检索到的,甚至没有调用我的机器人......
botframework - MS Bot,Direct line API,无法发送活动,如何解决?
我一直在尝试在应用程序中设置 MS Bot。到目前为止,我做了以下工作。
为 Bot 设置一个 REST 端点,该连接器会监听它。
/li>获取 APP_ID 和 APP_PASSWORD,模拟器成功连接如下,
这是成功的,机器人按预期回复。
尝试使用 Direct Line API 与 Bot 对话。成功开始对话。响应之一如下。
正如文档所述,我使用“node-fetch”包来发出 POST 请求。
但是,我无法使用 Direct Line API 发送活动,收到
文档说 POST 请求应该如下所示。
这非常适合开始对话,但不适用于发送活动。
我发送的活动是:
我不认为“id”很重要,所以这就是我发布的内容
我使用了从开始对话时收到的 conversationId。我用谷歌搜索,但找不到我的问题的答案。此外,我有几个问题,也许他们的回答会对我有所帮助。
Q1:使用 Direct Line API 的每个人的网址“ https://directline.botframework.com/v3/directline/ ”都一样吗?当我用机器人的端点“ http://localhost:3000/botapi/messages/conversations ”替换它时,我什至无法开始对话,没有任何效果。
Q2:Direct Line API 是如何工作的?我用我的 API 秘密发布 POST,那么 API 如何找到我的机器人?Bot 和 API 如何通信?我在这里错过了什么吗?
Q3:当我发出 POST 发送活动时,我遵循了文档。在授权中,我尝试了我的秘密和从开始对话中获得的令牌,两者都不起作用。我相信两者都应该起作用。我错了吗?
Q4:我需要对Bot Connector Service做些什么吗?我读了这篇文章,但我不知道它是为了什么。我错了吗?
那么,我在这里缺少什么?如何发送活动?
注意:我的机器人没有部署到 azuri 或 aws,它只在我的 Mac 上。但是,按照文档说明,我得到了 DirectLine 的 APP_ID、APP_PASSWORD 和 SECRET。
node.js - Microsoft Bot:离线 DirectLine GSS 无法发布活动并接收回数据
我已经创建了一个内部部署的 Microsoft 机器人(即 IIS 中的托管机器人并使用离线 Directline 进行仿真,使用节点包离线-直接线-gss)。
我可以与该服务聊天,但我面临的问题是,由于“ConversationUpdate”在网络聊天中不起作用,我在页面加载和机器人中发布“conversationupdate”类型的活动、文本“conversationupdate”解决方案的 Post 方法,我写了一个条件来检查 activity.text 是否等于 'conversationupdate' 并编写代码来发送欢迎消息。但这并没有发生。
在运行 index.js 的命令提示符中,我可以看到发布的活动,但机器人解决方案没有返回任何(或)东西。
这是html页面代码:
这是 index.js 代码:
指示发布消息成功的命令提示符:
任何人都可以请阐明这可能是什么原因。谢谢你!
javascript - Javascript 调用失败并出现 Uncaught ReferenceError BotChat 未在基于 Web 的 Javascript 组件中定义
语境 -
我正在为我们的一个 BI 应用程序构建一个基于 Javascript 的自定义组件。它是一个简单的基于 Web 的组件,允许用户使用 DirectLine 通道与 Microsoft bot 聊天。
经过一番努力,我能够在我正在构建的自定义组件中加载 botchat 库(Javascript 文件),但是对库的调用总是抛出错误“Uncaught ReferenceError: BotChat is not defined”
这是我用来通过 DirectLine 通道调用 botchat 库的代码-
如果我在 HTML 网页上运行代码没有问题,它可以完美运行。在调用 javascript 组件时,它会抛出“Uncaught ReferenceError: BotChat is not defined”。
我可以看到该库已正确加载-请参阅 chrome 的网络资源屏幕截图-
这是 CDN - https://cdn.botframework.com/botframework-webchat/latest/botchat.js
botchat.js 中的代码定义如下 -
我已经尝试了多种方法 - 我没有引用外部库,而是复制了整个 botchat.js 代码并粘贴到我调用 BotChat.App 的同一个组件函数中
还尝试使用“this.BotChat.App({..});” 它仍然失败。
但是,对于同一组件 js 文件中的外部 javascript 文件/函数,示例测试函数调用都可以使用相同的方法。
尝试实例化 BotChat,但失败并出现错误 - BotChat 不是构造函数。它基本上是对象类型。
你能帮我用其他方式调用 BotChat 吗?可能在 Jquery 中?或者我做错了什么?
node.js - 使用 botbuilder 切换时从 DirectLine 获取 401 错误
我正在开发一个新的机器人并尝试实现人工切换。我正在使用 Directline 3.0 在 BotFramework-WebChat 客户端和我的机器人之间进行通信,该机器人托管在 Azure 机器人服务上。
我的问题是当我的机器人尝试将消息从用户发送到代理或代理到用户时,我从 Directline API 收到 401 错误。
为了进一步解释这个问题,我们只需要讨论Watching状态。在代码中,客户消息通过中间件被截获。如果状态被确定为Watching,客户消息将被路由到机器人和观察代理。
从 bot 到用户的消息发送session.send('foo')
正常,但从 bot 到代理的消息发送如下:
useAuth
除非我添加一个标志,否则它不起作用。我在 ChatConnector.js 实现中找到了这个标志,它似乎决定(正如您猜想的那样)消息在发送时是否使用授权请求。你可以在我上面的代码中看到我可以自己设置这个标志,但这是一个 hacky 解决方案,它似乎绕过了真正的应用程序逻辑。
这整个事情感觉不对,我觉得我错过了一些东西,但我无法弄清楚如何在不useAuth
直接设置的情况下使这些请求工作。
这是我的移交客户端的一些相关代码。我从下面删除了一些代码,以便仅在对话处于等待状态时关注来自客户的消息。