我对Watson Conversations专家提出了另一个问题;)我有一个新问题。我需要将一个字符串计算为一个变量名:我创建了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) ?>"
}
但Eval函数无法识别,我无法找到任何文档,允许将变量值计算为变量名的值,如python:
a = 3
b ='a'
print(eval(b))
3
我可以使用多个节点做一个if ifif-like-like块,但如果用户的输入开始变得很重要,那么它所需的节点数量将成倍增长。 有没有办法在App构建器管道中找到的app.js src代码中使用它?
答案 0 :(得分:1)
I tested something similar and came up with the following workaround:
<? ?>
)答案 1 :(得分:0)
虽然@data_henriks回答是在对话中执行此操作的正确方法,但有时您需要在应用程序层执行此操作。
因此,您将每个项的值作为上下文变量返回,然后创建一个上下文变量,如"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"
}
在您的应用程序层,您将解析出run_eval
,这样您最终会得到类似的结果(5项,每项10美元)。
10 * 5
然后eval(),然后返回会话,如下所示:
"context": {
"Pmarguerita": 9,
"Pregina": 10,
"Pcarne": 10,
"PEVEA": 12,
"PiPrice": "10",
"Items": "5"
"total": "50"
}
不言而喻,你需要处理运行eval的危险。