我们常说的移动互联网,离不开智能手机。iPhone等智能手机改变了人们与手机交互的方式——从功能手机的基于按钮的交互转变为基于触摸的交互。相互影响。Android和iOS已经成为移动互联网的两大主流开发环境。大多数开发人员和公司都有自己的Android应用程序。那么,这些AndroidApp是如何在DuerOS上变成支持语音交互的多模态技能的呢?App技能上的DBPAppskills也是DBP的自定义技能。与其他自定义技能不同的是,开发者需要开发或调整自己的安卓应用。DBP平台引入APP技能,让AndroidApps快速成为DuerOS设备上的技能,让Android系统的Ap??p生态与DuerOS技能生态融为一体,为用户带来更多价值。老码友在之前的技术大会上说过,APP技能的接入类似于DBP自定义技能的开发,也是遵循六个步骤:开发者认证技能创建技能开发技能调试技能审核技能现已上线,App技能DBP平台推出的功能作为Preview特性向广大企业开发者开放,并遵循预览版的相关审核和流程规范。1、开发者认证开发者需要在DBP平台上传身份证、个人邮箱、手机号等信息,审核通过后成为认证开发者。目前DBP平台采用了百度AI的证书自动识别技术,可以实现分钟级的身份认证,让开发者快速成为DuerOS的认证开发者。当然,非认证开发者也可以创建和调试自定义技能,但只有认证开发者才能完成在线技能。企业开发者还需上传企业营业执照扫描件,审核通过后成为认证开发者。需要说明的是,目前DBP平台的APP技能开发只对通过认证的企业开发者开放。2.APP技能创建APP技能目前以Preview功能开放。开发者在创建APP技能时,必须先阅读并确认《DBP应用开发者协议》。然后,填写技能名称等相关信息,提交,等待Preivew审核。预览通过后,表示APP技能已经创建,可以配置技能的intent/slot/dictionary。详情请见《感知自然语言理解(NLU)》。3、APP技能开发APP技能开发包括技能(bot)服务开发和APP客户端开发两部分。3.1技能服务的开发APP技能机器人服务的开发与DBP上其他自定义技能的开发类似,尤其是交互模型的建立。Intent、slot、字典、常用表达式等,参考《技能交互模型》。目前大部分APP技能使用DBP平台的代理服务AVC(AppVoiceControl),无需单独部署服务器即可使用语音交互能力。简单的说,交互模型设计好,填写好,就可以认为开发完成了。AVC将语音交互结果以结构化数据的形式返回给APP客户端,由客户端完成相应的操作。对于交互复杂的APP技能,您也可以部署自己的实体机器人,在自己的技能服务中实现更复杂的逻辑。3.2APP客户端的开发根据语音交互的复杂程度,APP客户端的开发可以分为4个层次:L1:只支持打开/退出语音指令L2:支持有限的语音指令L3:支持多个intents\slots\Dictionary\CommonExpressionsL4语音指令:支持直接获取用户话语内容,使用自己的实体bot处理更复杂的语音指令从客户端的角度来看,分为集成BotAppSDK的APP技能和那些即不集成BotAppSDKAPP技能。L1应用技能不与BotAPPSDK集成,L2/L3/L3应用技能与BotAPPSDK集成。3.2.1L1APP技能开发在DBP平台控制台,选择【创建技能】->【自定义技能】->【AndroidApp技能】,填写技能名称和APP包名,如图:一步完成,开发者App自身开发完成后,即可进入L1APP技能调试阶段。3.2.2L2APP技能开发L2技能采用本地自定义交互模型,即在本地代码中定义用户语音命令与意图的匹配关系。参考示例代码(https://github.com/dueros/AndroidBotSdkDemo)将BotAppSDK集成到开发者的APP技能中。开发者只需要参考代码组装UIContextPayload对象即可完成本地自定义交互模型的构建。示例代码如下://1.创建UIContextPayload对象开始组装UiContextPayloadpayload=newUiContextPayload();//2.定义用户语音意图集(尽可能丰富地收集用户表达,并添加常见的同音词和表达,例如“登录”&“登录”)String[]loginWords={"开始","点击开始","开始thegame","Startthegame","Playthegame"};//3.可以定义支持的wordspayload.addHyperUtterance("sdkdemo://startGame",Arrays.asList(loginWords),null,null);//重复步骤2.3添加多个交互组件。比如启动、退出、登录、注册...BotSdk.getInstance().updateUiContext(payload);用户语音表情命中自定义交互组件中定义的特定词后,云端匹配成功,封装url向设备端发送ClickLink指令。设备接收到ClickLink指令,通过回调方法onClickLink下发匹配结果给App。示例代码如下:/***云端返回的UIContext匹配结果*@paramurl自定义交互描述url*@paramparamMap为系统内置类型,参数列表。参数为query通过分词得到的关键词。将此参数与类型和参数字段一起使用*/@OverridepublicvoidonClickLink(Stringurl,HashMapparamMap){if("sdkdemo://startGame".equals(url)){//TODO执行启动逻辑游戏,例如startGameBtn.performClick()}}开发者完成AndroidApp开发后,可以进入L1APP技能调试阶段。3.2.3L3APP技能开发L3技能使用DBP平台自定义交互模型。如何搭建交互模型,请参考《技能交互模型》。参考示例代码(https://github.com/dueros/AndroidBotSdkDemo)将BotAppSDK集成到开发者的APP技能中。在客户端APP中,Intent的内容会通过BotAppSDK的回调方法handleIntent在App中进行处理。示例代码如下:/****cloudintent返回结果*@paramintentintent内容,包括intent名称参考{@linkBotIntent}并且slot参数结构如下*{@linkBotIntent#name}intent名称,对应云端创建的intent的intent标识名称*{@linkBotIntent#slots}slotlist对应云端创建的intent的slot信息,编号(0~n)*slot信息结构如下如下:*{@linkcom.baidu.duer.botsdk.BotIntent.Slot#name}槽名*{@linkcom.baidu.duer.botsdk.BotIntent.Slot#value}槽值*@paramcustomData自定义数据,暂时没用*/@OverridepublicvoidhandleIntent(BotIntentintent,StringcustomData){StringintentResult="\n命令名称:%s\n插槽信息:%s";Log.i("HandleIntentTAG","intentresult:"+intentResult);if("queryWeather".equals(intent.name)){StringloactionOfWeather;if(intent.slots!=null){for(BotIntent.Slotslot:intent.slots){//遍历slot列表,找到什么你需要Slotvalueif("sys.city".equals(slot.name)){loactionOfWeather=slot.value;}}}//TODO使用localtionOfWeather参数查询天气}}开发者完成AndroidApp开发后,他可以进入APP技能的L3Debugging阶段。3.2.4L4APP技能开发L4APP技能还在内测阶段,完整的接入流程需要联系DBP产品经理。4、APP技能调试目前APP技能还处于预览功能阶段,技能调试只能在真机上进行。4.1安装真机调试和开发环境创建APP技能后,点击【测试验证】→点击【真机测试】→点击【添加设备SN】添加自己的小度设备SN。配置好设备SN后,开发者可以对真机说“小度小度,打开技能开发助手”,在技能菜单中选择【升级到开发版ROM】,根据语音提示进行后续操作..注意:如果以上操作完成后申请升级失败,请确认设备上的账号与登录DBP平台的账号是否一致,并确保使用同一账号。4.2真机调试密钥的获取和使用开发环境安装成功后,需要在本地下载开发环境的密钥。真机调试密钥使用方法如下:1)在设备本地~/.android目录下替换2)执行命令重启adb:adbkill-serveradbstart-server4.3安装目标应用ontherealmachineDebuggingontherealmachine环境和debugkey安装成功后,就可以使用adb命令安装目标APP了。4.4技能调试模式下调试在保持开发者账号和小度设备账号一致的前提下,打开技能调试模式按钮,对设备说“开始技能调试”。在技??能调试模式下,开发者可以通过语音交互来调试APP技能。5、APP技能审核为了保证用户体验,APP技能需要通过严格的审核才能上线。5.1技能审核通用规则APP技能的申请方式与通用自定义技能类似。详情请参考《技能发布》。APP技能与一般自定义技能的区别在于需要指定客户端APP的版本号(如a.b.c.d),并上传APP的客户端包。5.2APP技能审核的特殊性App技能审核遵循DuerOS技能审核的通用原则,包括技能元数据审核、功能测试和技能交互信息测试等,具体请参考《技能审核规范》。5.3开发者申请在线审核APP技能审核还包括客户端安全检查、性能压力测试等验证方式。同时,APP还涉及权限应用,如摄像、录音、手势等,审核时另行确认。5.4开发者对审核结果的解读开发者可以在【发布管理】->【版本管理】中查看审核结果。如果他们未能通过审核,他们可以检查失败的原因。此外,开发者还可以在【个人中心】->【消息中心】查看审核的相关信息。6、APP技能上线并升级技能审核通过后,进入上线状态,2个工作日内完成全网上线。6.1首次启动APP技能首次上线时,需要上传客户端的APP包,并指定技能APP的客户端版本(如a.b.c.d),并指定技能的版本技能交互模型,对后续APP技能升级至关重要。重要的。6.2APP技能升级APP技能升级一般包括三种情况:只升级APP客户端只升级技能交互模型既升级APP客户端又升级技能交互模型6.2.1只升级APP客户端重新上传APP包并更新申请在线审核的版本号。6.2.2只升级技能交互模型如果只升级交互模型,不需要重新上传APP包,只需要更新交互模型的版本号,即可申请在线审核。6.2.3同时升级APP客户端和技能交互模型升级APP客户端和技能交互模型时,需要同时上传APP客户端版本号和交互模型版本号,和第一次上线一样。总结综上所述,App技能的接入开发过程也分为6个阶段,开发者认证->技能创建->代码开发->技能调试->技能审核->上线商用。如果开发者的AndroidApp本身没有问题(如安全问题、内测泄露等),App技能一般可以在3到5天内上线,让开发者的App可以快速使用DuerOS多模式动态交互能力,为数千万DuerOS设备上的用户带来更丰富的用户体验。【参考】https://dueros.baidu.com/dbphttps://dueros.baidu.com/didp/doc/dueros-bot-platform/dbp-apk-skill/appskilldevelopment_markdown