当前位置: 首页 > 知识库问答 >
问题:

Botframework WebChat:无法在其他聊天室/浏览器上启动新的和干净的对话

洪彬
2023-03-14

我正在使用webchat为我的机器人制作一个简单的web界面。我的bot具有使用BotAuth连接到Azure Active Directory的身份验证。当我登录时,它可以正常工作,但当我在另一台设备上开始新的对话时,它会在应该是新的干净对话时继续我的对话。

我用过这个https://github.com/Microsoft/BotFramework-WebChat但我不工作

 $.ajax({
            type: "POST",
            headers: {
                "Authorization": "Bearer " + "yupOGxl-odA.cwA.USk.zul_EXUwk54fWqKT_N8hmsWyXSWo5DHMYj0r7DQjaZI"
            },
            url: "https://directline.botframework.com/v3/directline/tokens/generate",
        }).done(function (response) {
            console.log(response)
            BotChat.App({
                directLine: {
                    token: response.token
                },
                user: { id: 'userid' },
                bot: { id: 'botid' },
                resize: 'detect'
            }, document.getElementById("bot"));
        });

共有1个答案

聂和宜
2023-03-14

当我在另一台设备上开始一个新的对话时,它会在应该是一个新的干净的对话时继续我的对话。

似乎您希望生成并传递一个直连令牌来启动BotChat。在本节“机密和令牌”中,您可以找到“直连令牌是可用于访问单个会话的密钥””。

如果您通过Ajax请求生成一个新令牌,并在每次新用户登录时使用它启动BotChat,则应使用该令牌启动一个新的对话,您可以使用浏览器网络工具检查对话ID以响应启动对话。

另一方面,如果您在另一个设备/浏览器客户端(或选项卡)上使用相同的直连令牌,它将访问相同的会话。

我有2个用户在我的机器人和不知何故当我使用它我登录在另一个人

正如JasonSowers在评论中提到的,当您启动BotChat时,您指定的是相同的用户id,您最好获取当前登录用户的id,并将其动态传递给BotChatuserproperty。

注意:在代码中,根据JavaScript客户端上的直连密码发出ajax请求以生成令牌,这仍然会暴露直连密码。其他人可以通过检查您的JavaScript代码,然后将您的机器人放在他们的网站上,轻松获得您的直连密码。如果可能,您可以创建一个后端服务,并将生成令牌的代码逻辑放在服务器端,这将有助于在客户端隐藏您的秘密。

 类似资料:
  • 问题内容: 我刚接触selenium。我生成了我的第一个Javaselenium测试用例,它已成功编译。但是当我运行该测试时,我得到了以下RuntimeException 请告诉我如何解决此错误。 这是我要运行的Java文件。 我首先通过命令提示符启动了selenium服务器,然后通过另一个命令提示符执行了上述java文件。 第二个问题:我可以右键单击包含selenium的网页上的指定位置。 问题

  • TLDR:由于UserNotFound错误(未找到的用户来自旧安装),我无法使用空数据目录启动Mongo的干净安装(从ZIP)。 更详细地说:我最初的Mongo数据库运行良好。出于测试目的,我移动了当前的数据目录,并创建了一个新目录。所以我停止了运行Windows服务 创建一个新的数据目录并尝试在noauth模式下启动一个新的MongoDB 麻烦就从这里开始了:MongoDB试图从我的旧数据库中连

  • 我对詹金斯真的很陌生。今天我安装并尝试玩。当然我丢了一把钥匙。 我的环境:java-version java version“1.6.0\u 24”OpenJDK Runtime environment(IcedTea6 1.11.4)(rhel-1.49.1.11.4.el6\u 3-x86\u 64)OpenJDK 64位服务器虚拟机(构建20.0-b12,混合模式) tomcat6型 Cen

  • 问题内容: 从Jenkins构建后通过调用rake任务触发黄瓜测试时,我无法启动CI服务器上的浏览器(在我的情况下为Linux上的本地主机)。Jenkins控制台日志如下。我很确定所有设置都正确,因为我可以通过命令行在服务器上成功运行它。 问题答案: 事实证明,Jenkins用户的帐户性质不允许其在Jenkins服务器内运行GUI测试。 Firefox是GUI应用程序,它需要连接到X服务器以发送命

  • 我无法启动CI服务器上的浏览器(localhostLinux在我的情况下)当触发cucumber测试通过调用rake任务后从Jenkins构建。詹金斯控制台日志如下。我很确定一切都设置正确,因为我可以通过命令行在服务器上成功运行它。

  • 本示例通过两种形式展示了如何实现一个在线聊天室应用: 使用长轮询模式。 使用 WebSocket 模式。 以上两种模式均默认将数据存储在内存中,因此每次启动都会被重置。但您也可以通过修改 conf/app.conf 中的设置来启用数据库。 以下为项目组织大纲: WebIM/ WebIM.go # main 包的文件 conf app.conf