无法使用Watson Assistant API v2修改user_defined上下文

时间:2020-04-07 09:21:23

标签: ibm-cloud ibm-watson watson-assistant

我正在尝试将聊天机器人迁移为使用新引入的 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": {---}
                }
            }
        }
    }
}

然后我从上下文中删除'description',然后再次向Watson发送请求。出乎意料的是,“描述” 仍然在那里具有相同的值(“不知道”)。

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

我的问题是,为什么对话框具有这种方式? 它如何存储上下文信息,因此我无法从 user_defined 上下文中删除属性? 以及如何将对话框状态重置为最初保持相同的 conversation_id session_id )?

P.S。我正在使用 Watson API v2 :2020-04-01

0 个答案:

没有答案
相关问题