首页 > 解决方案 > 无法使用 Watson Assistant API v2 修改 user_defined 上下文

问题描述

我正在尝试迁移聊天机器人以使用新引入的Assistant API v2

我的聊天机器人基础设施包括中间件服务,它在从 Watson 获得响应后修改上下文。在某些情况下,我曾经从上下文中删除特定属性,并且效果很好。但是我注意到,在迁移到API v2之后,这种方法不再起作用,因为已删除的属性以某种方式存储在Watson端。

例如,我从 Watson收到以下上下文:

{
    "assistantId": "---",
    "sessionId": "---",
    "messageInput": {
        "Text": "Some text",
        "Options": {
            "Debug": "true",
            "ReturnContext": "true",
            "Restart": "false"
        }
    },
    "context": 
    {
        "Global": "null",
        "Skills": {
            "AdditionalProperties": {
                "main skill": {
                    "user_defined": {
                        "id": "23",
                        "description": "Dont know"
                    },
                    "system": {---}
                }
            }
        }
    }
}

然后我从上下文中删除“描述”并再次向 Watson 发送请求。令人惊讶的是,“描述”仍然具有相同的值(“不知道”)。

可能的解决方案不是删除属性,而是将其值设置为空字符串。但即使在这种情况下,我的对话也无法正常工作,因为 Watson 会以某种方式将它之前访问的对话点存储在对话中(或者不是,这些都是我的猜测)。我认为它可能与 system.state 属性有关,该属性存储对话框的编码状态(再次 - 或不)。

我的问题是为什么对话会这样?它如何存储上下文信息,因此我无法从用户定义的上下文中删除属性?以及如何将对话状态重置为初始保持相同的conversation_id ( session_id )?

PS 我正在使用Watson API v2:2020-04-01

标签: ibm-cloudibm-watsonwatson-assistant

解决方案


推荐阅读