2

我写了一个简短的 JavaScript 聊天来使用直线 API。为了保证我的 App Secret 安全,js 对我的服务器进行 ajax 调用,在该服务器上我使用密钥进行服务器端 API 调用以生成令牌并将其传递回 js。当用户提交消息时,js 会发布一个帖子以开始对话(如果我还没有对话 ID),然后发布消息,然后获取响应。

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

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

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

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

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

我知道通过让 js 为“from”生成一个随机值来将对话限制在 js 的生命周期内,这很容易解决,但这似乎仍然很奇怪。它有充分的理由还是一个错误?

更新请参阅 github 问题以获取答案: https ://github.com/Microsoft/BotBuilder/issues/1307#issuecomment-249187807

4

1 回答 1

1

您应该在客户端加载时生成一个随机 ID。(或者,您可以在您的应用程序中使用现有的用户 ID,例如设备 ID。)自动分配行为一直是混乱的根源,并且在 Direct Line 的下一版本中将不存在。(见GitHub 讨论

于 2016-09-29T21:06:04.710 回答