我写了一个简短的 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