通过 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"。
Annyang 命令使用 *val 将值输入回调函数。如果我要输入多个项目怎么办?
例如,我想根据用户输入更新表单。所以我可以有一个像
这样的命令set Name *val
然后 val 将包含我随后可以分配给该字段的名称值。但是,如果我的表单有很多字段,那么为所有字段编写这样的命令可能会很乏味。相反,我可以
set *FieldName *FieldVal
这个命令,会return两个参数代替FieldName和FieldVal。如果 FieldName 是页面上可用字段的有效名称,那么我可以使用 FieldVal 更新值,或者忽略该命令。
实现此目的的一种方法当然是解析 val 以首先获取 FieldName,然后从类似
的命令中获取 FieldValset *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"。