在小程序的语音交互中,某些时候语料中的参数取值范围不是固定的,而是由页面上展示的内容动态确定。这个时候该参数就不能关联自定义实体了,而是需要将其设置为所见即可说参数,其参数的取值由页面动态赋值。这就是所见即可说的使用场景。
一、创建应用
按照小程序接入流程文档,创建智能应用语音小程序。
二、配置语音交互模型
2.1 引用 sys.select 公共实体
点击 语音交互模型创建 --> 实体 进入实体配置页面,点击 引用公共实体。
在公共实体列表中,找到实体标识 sys.select 公共实体,打开实体后的引用按钮,即可引用此公共实体。
2.2 创建所见即可说参数
返回意图列表页面,可以看到已经存在一个默认意图。点击 编辑 进入默认意图配置页面,配置意图参数和语料。
所见即可说参数可以创建多个,参数名称可以根据业务需要自定义。这里定义两个参数为:category 和 item,所见即可说参数需要关联前面引用的 sys.select公共实体。参数名称可以根据自己的业务需要起名称,不要求和示例一致;参数数量也可以自己决定。但这里的参数名称和小程序内设置动态参数的参数名称要一致。
然后添加一些使用了所见即可说参数的语料,意图需要语料才能进入。
2.3 将意图设为动态意图
返回 意图 列表,将意图设为动态意图。
2.4 配置页面意图(新建pageId)
进入 配置页面意图,点击新增配置。
为pageId绑定动态意图。
三、 绑定真机测试设备
在小程序IDE中,绑定真机测试设备。
四、在小程序项目中设置参数动态内容
在页面 js文件 Page中的 onShow() 方法中注册语音能力和设置所见即可说参数的取值内容:
my.call('useCustomSkill', { skillName: '2021002102611878',//小程序id secretKey: 'aafb8a16-ef4c-4bf0-b5dd-5d6a4ec2769f',//小程序应用的secretKey pageId: 'pages/index/index'//配置页面意图中定义的页面地址 }); my.call("setSelectContent", { content: { //所见即可说的参数名, 支持多个(这里是catetroy和item),需要和意图配置的参数名称一致 category: { 'C0': ['宠物', '小动物'], 'C1': ['玩具', '毛绒绒玩具'] }, item: { 'IA': ['狗', '小狗', '汪星人'], //数组内的内容,会归一为Key值IA 'IB': ['猫', '小猫', '喵星人'] } }, success: function(res) { console.log("setSelectContent complete " + JSON.stringify(res)) }, fail: function(res) { console.log("setSelectContent fail " + JSON.stringify(res)) }, })
五、测试语料
参数动态内容设置好之后,可以通过Page中的 onVoiceEvent (event) 方法接收语音回调:
Page({ //Page中的onShow()等方法; onVoiceEvent(event){ my.alert({content: "onVoiceEvent = " + JSON.stringify(event)}); } });
此时说“天猫精灵,小狗”, 则会获取到如下结果:
{ "domain": "AliGenie.Text", "command": "NluResult", "param": { "slots": [ { "domainSlot": "item:sys.select", "liveTime": 0, "name": "item", "norm": "IA", "value": "小狗" } ], "domain": "所见即可说", "query": "小狗", "intent": "default" } }
说“天猫精灵,选择玩具中的小猫” 则会获取如下结果:
{ "domain": "AliGenie.Text", "command": "NluResult", "param": { "slots": [ { "domainSlot": "category:sys.select", "liveTime": 0, "name": "category", "norm": "C1", "value": "玩具" }, { "domainSlot": "item:sys.select", "liveTime": 0, "name": "item", "norm": "C1", "value": "小猫" } ], "domain": "所见即可说", "query": "选择玩具中的小猫", "intent": "default" } }