快应用增加了语音接口,支持可见即可说和NLP(自然语言处理)两种能力:
快应用可以灵活使用上述的一种或两种能力,为应用增加语音交互体验。
可见即可说是低成本实现语音交互的方式。只要初始化语音接口(service.vui),并在需要响应语音指令的页面元素上增加vtags和vindex标签,就可以实现很好的体验。
使用可见即可说的步骤如下:
1.在app.ux文件中初始化vui接口
import vui from '@service.vui'
onCreate() {
vui.initialize({
success: function(){
console.log(`初始化成功`)
},
fail: function(err, code){
console.log(`初始化失败, err = ${err}, code = ${code}`)
}
})
}
2.在需要响应语音指令的页面元素上增加vtags和vindex属性
<text onclick="showDetail()" vtags="详情,查看详情,打开详情" vindex="1">详情</text>
无论用户说的是“详情”、“查看详情”、“打开详情”还是“第一个”,都可以触发text组件的click操作,执行showDetail函数。
NLP是语音交互的高级形式,在用户使用语音表达需求后,语音引擎通过自然语言处理,识别出语音中的意图和关键信息,交给快应用处理并返回合适的响应。
由于技术的限制,NLP目前只能解决部分领域的问题。快应用目前支持的NLP领域见意图列表
使用NLP的步骤如下:
1.在app.ux文件中初始化vui接口
import vui from '@service.vui'
onCreate() {
vui.initialize({
success: function(){
console.log(`初始化成功`)
},
fail: function(err, code){
console.log(`初始化失败, err = ${err}, code = ${code}`)
}
})
}
2.增加onNlpResult回调,在回调中对支持的每个意图做响应。如果意图已经处理,回调必须返回true,否则返回false。返回false后,快应用引擎会使用默认逻辑来进行响应。
vui.onNlpResult = function (response) {
const { instructions } = response
console.log('onNlpResult', instructions)
instructions.forEach(instructionItem => {
// 一般不用处理ELEMENT类型,框架会自动触发UI操作
if (instructionItem.type === vui.INSTRUCTION_TYPE.ELEMENT) {
// 识别结果为:UI事件操作
// 触发UI事件操作,如:某个页面中某个元素的点击事件
vui.dispatchEvent(instructionItem)
// 响应语音指令后,如果不需要快应用引擎继续处理,需要返回true
return true
} else if (instructionItem.type === vui.INSTRUCTION_TYPE.INTENT) {
// 识别结果为:意图识别结果
// 开发者根据识别出来的意图结果,完成对应的业务响应;如播放音乐
const { name } = instructionItem
if (name == "intent.music.play") {
playMusic()
// 响应语音指令后,如果不需要快应用引擎继续处理,需要返回true
return true
}
}
// 如果需要快应用引擎继续处理语音指令,需要返回false
return false
}
}
为了减少开发工作量,快应用框架对部分意图做了默认响应,开发者可以不用处理,详情参见意图列表
完整的语音示例,参考Github项目地址。