我们如何从后端为IBM Watson设置上下文变量

问题描述 投票:2回答:3

我想通过我的Node应用程序以IBM Watson中的上下文变量的形式将一些值传递给前端。我该如何实现?

我试图将要添加的值添加到当前上下文变量对象中,并将其发送回去。仍然没有帮助。有什么办法可以做到吗?


编辑:

现在,我将所需的值作为新的键值对添加到Node应用程序的上下文对象中,如下所示。

...
let user_name = "MJ"
context.user_name = user_name
response.send({
    output: output,
    context: JSON.stringfy(context)
})
...

并且在Watson Console中,在我曾经使用过的其中一个对话节点中,

Hey $user_name, How are you?

但是我得到的输出是,

Hey , How are you?

我可以在上下文对象中看到user_name值,但是我不能以上面提到的方式使用它。还有其他方法吗?


感谢您的帮助。预先感谢!

ibm-watson watson-conversation watson-dialog
3个回答
1
投票

我遇到了同样的问题。当您调用IBM服务器并请求.json:

时,我的解决方案是更改代码。
...
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      text,
      context: {username :  variable}, 
...

我在Watson Assistant中设置的username以及上下文,我使用一个函数通过Query获取名称的变量(因为在我的应用程序中,我通过IFrame调用了聊天机器人。),但是您可以使用在javascript上设置的任何变量。


0
投票

您可以将任何值添加到Context对象中,可以在Node.JS应用程序中访问该值,如果将该值发送到前端,那么它也应该可以在UI中访问。

[下面,我提到了对话服务的欢迎样本。您可以从对话服务的响应访问Context对象,并向该对象添加新的键值对。在响应中,您将看到我正在访问具有值MJ的上下文变量username,该变量已动态添加到上下文中。

`

{
"intents": [],
"entities": [],
"input": {
    "text": ""
},
"output": {
    "text": ["Hello MJ! How can I help you today?"],
    "nodes_visited": ["Conversation Start"],
    "log_messages": []
},
"context": {
    "username": "MJ",
    "conversation_id": "5835fa3b-6a1c-4ec5-92f9-22844684670e",
    "system": {
        "dialog_stack": [{
            "dialog_node": "Conversation Start"
        }],
        "dialog_turn_counter": 1,
        "dialog_request_counter": 1,
        "_node_output_map": {
            "Conversation Start": [0]
        }
    }
}

`

现在更新上下文,获取响应并添加新的键值对

`

var convResponse = <responseObj from Conversation call>;
var context = convResponse.context;
//add new value to context
context["new_key"] = "new value";

`

现在,您对会话的下一个呼叫,请使用此更新的上下文,而不是从上一个呼叫中收到的上下文。您也可以将响应从“对话”发送回前端,然后可以显示给用户。


0
投票
var payload = {
    assistantId: assistantId,
    sessionId: req.body.session_id, 
    context: {
        skills: {
           "main skill": {
              user_defined: {
                 username: 'John Doe'
               }
            }
         }
    },
    input: {
      message_type: 'text',
      text: "blah",
    },
  };

为我工作。在这里看到:https://medium.com/@pranavbhatia_26901/watson-assistant-v2-context-sharing-3ca18626ed0d

© www.soinside.com 2019 - 2024. All rights reserved.