Bot Connector - Direct Line API交叉对话?

时间:2016-09-22 22:17:40

标签: javascript botframework botconnector direct-line-botframework

我写了一个快速的小JavaScript聊天来使用直接线API。为了保证我的App Secret安全,js对我的服务器进行ajax调用,在那里我使用秘密进行服务器端API调用以生成令牌并将其传递回js。当用户提交消息时,js发布帖子以开始对话(如果我还没有对话ID),则发布消息,获取响应即可获得。

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

然后我注意到了什么似乎很奇怪。如果我打开一个浏览器,并开始聊天,那么它就会从另一个浏览器停止的地方开始。

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

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

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

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

更新有关答案,请参阅github问题: https://github.com/Microsoft/BotBuilder/issues/1307#issuecomment-249187807

1 个答案:

答案 0 :(得分:1)

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