Bot连接器-直线API交叉对话

Bot Connector - Direct Line API cross conversation?

本文关键字:对话 API 直线 连接器 Bot      更新时间:2023-09-26

我编写了一个简短的JavaScript聊天程序来使用直连API。为了保持我的应用程序秘密安全,js对我的服务器进行ajax调用,在那里我使用秘密进行服务器端API调用以生成令牌并将其传递回js。当用户提交消息时,js发布消息以启动对话(如果我还没有一个conversationID),然后发布消息,然后执行get操作以获得响应。

幸运的是,当我开始这个时,我搜索了一些东西,并浏览了一些关于在发布时在消息对象中包含"from"值的帖子,或者它只是开始每个帖子。但现在一切都很好,没有问题。

然后我注意到奇怪的事情。如果我打开一个浏览器,开始聊天,它会从另一个浏览器停止的地方开始。

我很快意识到这是因为我在js中硬编码了一个"from"值。但这似乎仍然很奇怪……2个不同的令牌,2个不同的conversationid, 2个不同的浏览器和1个会话。对话真的是由消息中的from字段连接起来的吗?

如果是,有一个conversationID的意义是什么?他们是否以某种方式将IP和/或MAC地址与from属性结合使用?

我仍然在本地主机上工作,所以我还没有测试它来自2个不同的ip。

我知道这很容易通过让js为"from"生成一个随机值来将对话限制到js的生命周期来固定,但这仍然看起来很奇怪。这是一个很好的理由还是一个bug?

UPDATE参见github问题的答案:https://github.com/Microsoft/BotBuilder/issues/1307 issuecomment - 249187807

您应该在客户端加载时生成一个随机ID。(或者,您可以在应用程序中使用现有的用户ID,比如设备ID。)自动分配行为一直是一个混乱的来源,将不会存在于下一个版本的直线。