使用 .js 更新上下文变量。这是可能的?

Update context variables using .js. Its possible?

我正在尝试将用户名发送到我的 WCS,但我不确定如何使用请求来做到这一点。我的会议要求用户提供电子邮件,并使用 js 脚本从我的 sql 服务器 return a json...

我正在做类似的事情:

你的邮箱是多少? // WCS
caique.rodrigues@test.com //用户
Just a minute.<script>getUserInformation('caique.rodrigues@test.com');</script> // WCS
nodeTrue //USER(我是在确认用户存在并获取到用户名后发送的)
Hi <span id='myText'></span><script>document.getElementById('myText').innerHTML = userName;</script>! //WCS

我知道这不是最好的方法,但它确实有效。我正在尝试使用 "output:{'action':}" 之类的方式调用我的 js 函数(并在我的 node.js 中处理它,就像 'car dashboard sample' 一样),但是,有可能从我的 .js 发送一个变量到对话上下文?

几个月前我遇到了同样的问题。在这种情况下,我使用函数来访问客户端的上下文变量(使用来自 Ashley 的 this 示例并访问 context),但是,对于某些公司数据的安全问题,我确实需要在服务器端使用自定义代码...并且,对于这种情况,您可以使用 Watson Conversation 的方法调用,并访问 context variables 并使用您喜欢的自定义代码创建值。

像这样:

conversation.message(payload, function (err, data) {
    data.context.yourValue = returnFromYourDatabase;
    if (err) {
      return res.status(err.code || 500).json(err);
    }
    updateMessage(payload, data, req, res);

  });
}); 

你可以看到函数updateMessage,这个调用是IBM Developers的一个例子,这个函数用于更新每个请求中的消息。你也可以使用这个函数来设置,因为这个函数从调用中获取参数。

例如:

function updateMessage(input, response) {
  response.context.yourValue = returnFromYourDatabase;
  var responseText = null;
  if (!response.output) {
    response.output = {};
  } 
}

有关使用 Node.js 的 Watson Conversation 服务,请参阅 API Reference

查看 IBM Developers 与 Node.js 的 Project