协调访问IBM Watson Assistant的Kubernetes上的节点Red副本时遇到问题

时间:2018-10-19 08:03:25

标签: kubernetes ibm-cloud load-balancing node-red watson-conversation

我在使用IBM Watson Assistant时遇到了一些问题。我在Kubernetes上创建了2个副本的1个节点红色容器(所以我有2个节点红色容器)。在节点红流内部,我访问了Watson Assistant。

有一个负载均衡器可以处理两个副本之间的负载,但是有一个问题:两个副本的session_id不同,就像我在一个副本中有两个打开的聊天记录(我有2个不同的上下文)。

我不知道如何只有1个conext的1个session_id。有没有一种方法可以用一个自定义ID来强制session_id?

在我的节点红色逻辑中,没有什么东西可以控制对话的开始。我让Watson Assistant处理它并创建初始ID。

1 个答案:

答案 0 :(得分:2)

当应用程序/客户端通过联系Watson Assistant服务开始对话时,将显示no conversation_id transferred as part of the message API call。在Watson Assistant的响应中,context_id被包含在上下文对象中。然后,客户端在每次消息调用时将上下文对象传递回Watson Assistant。所有通信都是无状态的,并且可以在使用多个副本的高可用性应用程序中使用。会话上下文通常由应用程序/客户端持久保存,从而可用于所有副本。

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