Javascript 使用DirectLine API、.Net和JS创建多个Microsoft Bot实例,轮询它们的可用性?

Javascript 使用DirectLine API、.Net和JS创建多个Microsoft Bot实例,轮询它们的可用性?,javascript,c#,botframework,direct-line-botframework,Javascript,C#,Botframework,Direct Line Botframework,我们已经为我们的网站开发了一个机器人,它被用作一种信使,用户可以选择是否要与我们的支持或聊天团队交谈,并将他们路由到正确的团队。聊天升级和聊天服务由Live Assist提供 在本地开发了bot之后,一切似乎都很好,但是一旦我们启动了它,我们发现bot一次只能通过liveassist进行一次对话。发生的情况是,任何打开聊天室的人,无论是哪种设备,都是同一个单实例会话的一部分。我们联系了Live Assist,他们说我们需要多个机器人来处理多个聊天实例。他们确实将我们链接到了他们的一些在线资源,但

我们已经为我们的网站开发了一个机器人,它被用作一种信使,用户可以选择是否要与我们的支持或聊天团队交谈,并将他们路由到正确的团队。聊天升级和聊天服务由Live Assist提供

在本地开发了bot之后,一切似乎都很好,但是一旦我们启动了它,我们发现bot一次只能通过liveassist进行一次对话。发生的情况是,任何打开聊天室的人,无论是哪种设备,都是同一个单实例会话的一部分。我们联系了Live Assist,他们说我们需要多个机器人来处理多个聊天实例。他们确实将我们链接到了他们的一些在线资源,但他们没有为这个特定的问题提供任何建议(我们认为这是一个常见的问题?)

我一直在琢磨这样的东西是如何实现的,我们可以在Azure上托管多个机器人,但我很难找到一种方法,在不中断特定对话的情况下,干净地轮询一个机器人,查看对话是否正在进行。然而,唯一可以提供帮助的资源是node.js,而我们的解决方案是前端的JavaScript,bot代码是C#.Net

任何指导都将不胜感激。非常感谢


编辑:为了澄清,我们想知道我们想要的是否可能,是否可能有多个azure bot framework实例并通过网页上的javascript访问它们,轮询聊天是否处于活动状态,然后为用户使用免费的bot。

在bot framework中,由于本机bot框架支持跨所有通道的多个并发会话,因此没有内置功能来实现这一点。作为限制Live Assist的一个解决方法,让我分享一个想法


在某种类型的数据存储中,每次发送/接收消息时,您都会有一个时间重置,一旦计时器过期,则会将bot限定为“不在对话中”。在这种情况下,当加载网页时,它将ping您的数据存储以查看哪个bot可用,如果有,则返回可用bot的直连密码令牌。这将导致前端为正确的bot加载聊天。我没有一个实现可以共享,因为我从未见过这样的场景,但我希望这能有所帮助

谢谢你的建议,杰森,这是我走的路线。我建立了一个sql数据库,其中包含关于哪些机器人处于活动状态或未处于活动状态的信息。你知道我将如何“ping”该数据库以查看bot是否处于活动状态吗?前端使用JavaScript,这是我想要保密的地方,这样我就可以在direct line机器人的声明中放置保密信息。我不能(也不想)通过JS连接到数据库来获取值,因为存在安全问题。有可能将字符串从bot发送到JS前端吗?我没有充分考虑并实现它,但是您是否可以存储一个将秘密映射到数字的键值对哈希映射?这样你就可以发送一个号码而不是秘密。只是一个想法。为了继续,我已经成功地从azure表中动态获取了一个秘密(只有在机器人是“免费”的情况下才会提供该秘密),但是我们无法将该秘密动态注入网页。我们不确定如何从这里开始,有人建议我们从一个秘密中获取令牌,但我不知道这是否能解决在网页上动态生成bot实例的问题。