通过 Annyang 语音识别库输入超过 1 个参数 (*val) 的最佳/建议方法是什么?

What is the best / suggested method to input more than 1 parameter (*val) through Annyang speech recognition library?

Annyang 命令使用 *val 将值输入回调函数。如果我要输入多个项目怎么办?

例如,我想根据用户输入更新表单。所以我可以有一个像

这样的命令
set Name *val

然后 val 将包含我随后可以分配给该字段的名称值。但是,如果我的表单有很多字段,那么为所有字段编写这样的命令可能会很乏味。相反,我可以

set *FieldName *FieldVal

这个命令,会return两个参数代替FieldName和FieldVal。如果 FieldName 是页面上可用字段的有效名称,那么我可以使用 FieldVal 更新值,或者忽略该命令。

实现此目的的一种方法当然是解析 val 以首先获取 FieldName,然后从类似

的命令中获取 FieldVal
set *val

但我不认为它总能产生干净的解决方案。

是否有建议的方法来实现此目的?

您要查找的不是 "splat" 运算符 (*),而是 "named-variable" 运算符 (:)。

你的命令看起来像

var commands = {
    'set :FormId with :Value':setForms,
}
annyang.addCommands(commands);

function setForm(formId, value){
    if(isValidForm(formId)){
        forms[formId].value = value;
    }
}

现在说 "Set foo with bar" 会将表格 ["foo"] 的值设置为 "bar"。