协调Kubernetes上的节点红色副本访问IBM Watson Assistant时出现问题

协调Kubernetes上的节点红色副本访问IBM Watson Assistant时出现问题,kubernetes,ibm-cloud,load-balancing,node-red,watson-conversation,Kubernetes,Ibm Cloud,Load Balancing,Node Red,Watson Conversation,我对IBM Watson Assistant有一些问题。我在Kubernetes上创建了1个节点的红色容器和2个副本(因此我有2个节点的红色容器)。在一个节点内,我访问了Watson Assistant 有一个负载平衡器处理两个副本之间的负载,但存在一个问题:两个副本的会话id不同,就像我在一个副本中有两个打开的聊天(我有两个不同的上下文) 我不明白如何只与一个上下文进行一次对话。有没有一种方法可以使用自定义id强制对话\u id 在我的节点红色逻辑中,没有任何东西可以用来控制对话的开始。我让W

我对IBM Watson Assistant有一些问题。我在Kubernetes上创建了1个节点的红色容器和2个副本(因此我有2个节点的红色容器)。在一个节点内,我访问了Watson Assistant

有一个负载平衡器处理两个副本之间的负载,但存在一个问题:两个副本的会话id不同,就像我在一个副本中有两个打开的聊天(我有两个不同的上下文)

我不明白如何只与一个上下文进行一次对话。有没有一种方法可以使用自定义id强制对话\u id


在我的节点红色逻辑中,没有任何东西可以用来控制对话的开始。我让Watson Assistant处理并创建初始id。

当应用程序/客户端通过联系Watson Assistant服务开始对话时,会有。在Watson Assistant的响应中,上下文对象中包含一个对话id。然后,客户端在每次消息调用时将上下文对象传递回Watson Assistant。所有通信都是无状态的,在使用多个副本的高可用性应用程序中工作。通常,会话上下文由应用程序/客户端持久化,因此可供所有副本使用


在我看来,一个流有两个副本,但没有处理公共上下文的逻辑。如何识别不同的用户并将其映射到对话?两个副本如何知道正在进行的对话?默认情况下,该状态保留在内存中。在开始任何新的对话之前,您需要添加数据库、存储上下文并查找现有对话。

当应用程序/客户端通过联系Watson Assistant服务开始对话时,会出现以下情况。在Watson Assistant的响应中,上下文对象中包含一个对话id。然后,客户端在每次消息调用时将上下文对象传递回Watson Assistant。所有通信都是无状态的,在使用多个副本的高可用性应用程序中工作。通常,会话上下文由应用程序/客户端持久化,因此可供所有副本使用


在我看来,一个流有两个副本,但没有处理公共上下文的逻辑。如何识别不同的用户并将其映射到对话?两个副本如何知道正在进行的对话?默认情况下,该状态保留在内存中。在开始任何新的对话之前,您需要添加数据库、存储上下文并查找现有对话。

谢谢您的回复!我试图迫使谈话内容保持不变。问题是,当我这样做时,我会收到一条“覆盖上下文”消息,因此这就像在同一个聊天中为每条消息创建一个新的对话。如果沃森每次都覆盖我,我怎么能传递上下文呢?谢谢你的回复!我试图迫使谈话内容保持不变。问题是,当我这样做时,我会收到一条“覆盖上下文”消息,因此这就像在同一个聊天中为每条消息创建一个新的对话。如果Watson每次都覆盖我,我如何传递上下文?