Javascript 沃森谈话的评价方法?

Javascript 沃森谈话的评价方法?,javascript,spring-el,watson-conversation,Javascript,Spring El,Watson Conversation,我还有一个问题要问沃森对话专家;)我有一个新问题。我需要将字符串求值为变量名:我创建4个静态值: { "Pmarguerita": 9, "Pregina": 10, "Pcarne": 10, "PEVEA": 12 } 当我解析用户的输入时,我会这样连接: { "PiPrice": "<? 'P'+entities['name_pizza'][0].value ?>" "total" :"<?entities['sys-number'][0].va

我还有一个问题要问沃森对话专家;)我有一个新问题。我需要将字符串求值为变量名:我创建4个静态值:

{ "Pmarguerita": 9,
    "Pregina": 10,
    "Pcarne": 10,
    "PEVEA": 12
}
当我解析用户的输入时,我会这样连接:

{
"PiPrice": "<? 'P'+entities['name_pizza'][0].value ?>"
"total" :"<?entities['sys-number'][0].value.toInt() * eval(PiPrice) ?>"
}
我可以用多个节点做一个if-elif类似的块,但是如果用户的输入开始变得重要,那么它所需要的节点数量将是指数级的巨大。
在app builder管道中的app.js src代码中是否有使用此功能的方法

我测试了一些类似的东西,并提出了以下解决方法:

  • 我将节点一分为二,每个节点使用一个求值(
  • 第一个节点的输出为空,但将上下文变量设置为计算值。该节点被配置为跳转到另一个节点(第二个节点)
  • 第二个节点具有最终评估并生成输出(响应)

虽然@data\u henriks answer是在对话中进行对话的正确方法,但有时您需要在应用程序层执行此操作

因此,您可以将每个项目的值作为上下文变量返回,然后创建一个上下文变量,如
“run_eval”
,并使其值与要使用上下文变量名称执行的eval语句匹配。使用设置的上下文变量作为返回值

例如:

"context": {
  "Pmarguerita": 9, 
  "Pregina": 10,
  "Pcarne": 10,
  "PEVEA": 12,
  "PiPrice": "<? 'P'+entities['name_pizza'][0].value ?>",
  "Items": "<?entities['sys-number'][0].value.toInt() ?>"
  "run_eval" : "$PiPrice * $Items",
  "run_eval_return_field": "total"
}
然后eval()并返回如下对话:

"context": {
  "Pmarguerita": 9, 
  "Pregina": 10,
  "Pcarne": 10,
  "PEVEA": 12,
  "PiPrice": "10",
  "Items": "5"
  "total": "50"
}
不用说,你需要处理运行eval的危险

10 * 5
"context": {
  "Pmarguerita": 9, 
  "Pregina": 10,
  "Pcarne": 10,
  "PEVEA": 12,
  "PiPrice": "10",
  "Items": "5"
  "total": "50"
}