我在使用IBM Watson Assistant时遇到了一些问题。我在Kubernetes上创建了2个副本的1个节点红色容器(所以我有2个节点红色容器)。在节点红流内部,我访问了Watson Assistant。
有一个负载均衡器可以处理两个副本之间的负载,但是有一个问题:两个副本的session_id不同,就像我在一个副本中有两个打开的聊天记录(我有2个不同的上下文)。
我不知道如何只有1个conext的1个session_id。有没有一种方法可以用一个自定义ID来强制session_id?
在我的节点红色逻辑中,没有什么东西可以控制对话的开始。我让Watson Assistant处理它并创建初始ID。
答案 0 :(得分:2)
当应用程序/客户端通过联系Watson Assistant服务开始对话时,将显示no conversation_id transferred as part of the message API call。在Watson Assistant的响应中,context_id被包含在上下文对象中。然后,客户端在每次消息调用时将上下文对象传递回Watson Assistant。所有通信都是无状态的,并且可以在使用多个副本的高可用性应用程序中使用。会话上下文通常由应用程序/客户端持久保存,从而可用于所有副本。
在我看来,您具有流的两个副本,但是没有逻辑来处理公共上下文。您如何识别不同的用户并将其映射到对话?两个副本如何知道正在进行的对话?默认情况下,该状态保留在内存中。在开始任何新操作之前,您将需要添加数据库,存储上下文并查找现有对话。