【问题标题】:How to check if the user has the webchat window open?如何检查用户是否打开了网络聊天窗口?
【发布时间】:2020-05-15 14:20:53
【问题描述】:

我正在使用带有 nodeJS 和 directline API 3.0 的 Ms botframework v4 创建一个客户支持机器人。客户将与机器人交谈,并根据要求将对话移交给代理。如果客户请求与机器人交谈,客户将等到代理可用。我想在代理向他/她发送消息之前检查客户是否仍然处于活动状态。

wireframe of the bot and the webiste 正如您在图像中看到的,Jack 在队列中,我想找到一种方法来检查 Jack 是否仍在等待,或者他是否关闭了窗口并且不再等待。

【问题讨论】:

  • 接受/投票支持更大的 Stack Overflow 社区和任何有类似问题的人。如果您觉得我的回答足够,请“接受”并点赞。如果没有,请告诉我我还能提供哪些帮助!

标签: node.js express botframework session-cookies direct-line-botframework


【解决方案1】:

查看我提供的这个 SO solution。该请求与您的请求相似,因为 OP 想知道在用户退出时如何通知机器人。

简短的回答是使用事件监听器。在窗口(包含网络聊天实例)关闭之前,会触发一个事件。此事件由网络聊天接收,网络聊天发送活动(消息、事件或其他)以通知该机器人。

此时,您只需将用户退出对话的通知转发给代理即可。

希望有帮助!

【讨论】:

  • 那么当用户断开连接时会发生什么?该事件永远不会被触发,用户仍然存在......
  • 从技术上讲,OP 没有问这个问题,所以我没有为这种情况提供解决方案。话虽如此,网络聊天不提供检查用户是否仍然在线的功能。仅当用户重新连接时(假设主机的网络聊天代码说明了这一点),在商店操作 DIRECT_LINE/DISCONNECTED 上触发事件才会被机器人捕获,这主要是因为用户在任何客户端可以触发以通​​知机器人之前断开连接。跨度>
  • 最简单的解决方案是询问用户是否仍然登录,如果他们没有响应,则终止会话并通知机器人。或者,设置一个计时器,如果在设定的时间内没有发生任何用户活动,则假设他们不存在并终止会话。这可能有点矫枉过正,但也可以使用 toast notification 之类的东西来通知用户,他们将在一段时间内没有活动的情况下被注销。
猜你喜欢
  • 2021-09-20
  • 2020-03-30
  • 2016-12-14
  • 2017-07-10
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
  • 2012-02-14
相关资源
最近更新 更多