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

时间:2015-09-07 13:57:23

标签: javascript speech-recognition annyang

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

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

这样的命令
connections = {
    '1': {
        'iphone': ws_connection1,
        'pc': ws_connection2
    },
    '2': {
        'ipad': ws_connection3
    }
}

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

set Name *val

此命令将返回两个参数,而不是FieldName和FieldVal。如果FieldName是页面上可用字段的有效名称,那么我可以使用FieldVal更新该值,或忽略该命令。

实现这一目标的一种方法是,首先解析val以首先从像

这样的命令获取FieldName然后使用FieldVal
set *FieldName *FieldVal

但我认为它不会总能带来干净的解决方案。

是否有建议的方法来实现这一目标?

1 个答案:

答案 0 :(得分:2)

您正在寻找的不是" splat"运算符(*)但是"命名变量" operator(:)。

您的命令将如下所示

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

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

现在说"用条形图设置foo"将表单[" foo"]的值设置为" bar"。