Microsoft Bot Framework多个用户

时间:2019-09-02 12:53:50

标签: node.js botframework

我正在使用使用NodeJS SDK的Microsoft Bot Framework V4开发应用程序。该机器人使用基本的瀑布对话框对用户进行身份验证,并在后端访问microsoft graph api。我使用很多局部变量来存储瞬态数据,并且不需要维护任何状态。我的问题是

  1. 当多个用户使用我的漫游器时,会话会干扰吗? (请注意,我没有使用任何漫游器用户/会话存储。

  2. 由于在Azure中仅运行一个bot实例,我是否需要从一边做任何事情来处理多个用户,否则bot框架会自动为我处理吗?

当多个用户尝试访问该bot时,我看到一些不稳定的行为,但不确定问题可能是什么。

2 个答案:

答案 0 :(得分:1)

  

当多个用户使用我的漫游器时,会话会干扰吗? (请注意,我没有使用任何漫游器用户/会话存储。

不。只要:

  1. 用户具有不同的用户ID
  2. 您遵循良好的编码习惯。 "I use a lot of local variables to store transient data"这部分涉及变量是否全部为“全局”。我肯定已经看到这会引起多用户问题。
  

由于在Azure中仅运行一个bot实例,我是否需要从一边做任何事情来处理多个用户,否则bot框架会自动为我处理吗?

通过用户ID自动处理。大多数通道会自动设置用户ID。较新版本的WebChat应该提供随机的用户ID。但是,请确保您不会意外地设置静态内容,例如:

window.WebChat.renderWebChat(
            {
               directLine: window.WebChat.createDirectLine({
                  token: 'YOUR_DIRECT_LINE_TOKEN'
               }),
               userID: 'A_Static_Id', // DO NOT DO THIS
            },
            document.getElementById('webchat')
         );

如果您认为自己遵循了这些准则,但仍然遇到问题,请发布代码,我们将为您提供进一步的帮助。

答案 1 :(得分:0)

最大的错误可能是使用全局变量。如果您使用的是任何东西,则只需删除它们,然后尝试将这些值传递到step上下文。例如:stepContext.values.yourVariableName =“ value”。

然后您可以在任何步骤中访问它。这样可以解决问题。