0
点赞
收藏
分享

微信扫一扫

一个安卓App,如何成为DuerOS 上的技能应用呢?


我们经常谈到的移动互联网是与智能手机密不可分的,iPhone 这样的智能手机改变了人们使用手机的交互方式——由功能机(feature phone)的按键式交互变成了触控式交互。对于开发者而言, 意味着嵌入式应用框架的转变,详情可以参考《​​探索嵌入式应用框架(EAF)​​》。

一个安卓App,如何成为DuerOS 上的技能应用呢?_物联网

Android 和 iOS 成为了移动互联网上的两大主流开发环境,大多数的开发者和企业都有着自己的Android App,那么,如何让这些安卓App 成为DuerOS 上支持语音交互的多模态技能呢?

DBP 上的 App 技能

App技能同样是一种DBP的自定义技能,与其他自定义技能的区别在于需要开发者开发或调整自己的安卓App。DBP 平台上 APP技能的推出使得Android App 可以很快地成为DuerOS 设备上的技能,使安卓系统的App生态能够与DuerOS的技能生态水乳交融,为用户带来更多的价值。

一个安卓App,如何成为DuerOS 上的技能应用呢?_区块链_02正像老码农在以往技术大会上所讲的那样,APP技能的接入和DBP自定义技能的开发类似,同样遵循六个步骤:


  1. 开发者认证
  2. 技能创建
  3. 技能开发
  4. 技能调试
  5. 技能审核
  6. 技能上线

目前,DBP 平台推出的App技能作为Preview feature 开放给广大企业开发者,遵循预览版的相关审核和流程规范。

1. 开发者认证

开发者需要在DBP平台上传身份证、个人邮箱、手机号等信息,通过审核后成为认证开发者。目前DBP 平台采用了百度AI的证照自动识别技术,可以实现分钟级的身份认证,使开发者能够迅速成为DuerOS 的认证开发者。当然,非认证开发者同样可以创建并调试自定义技能,但只有认证开发者才能完成技能的上线。

对应企业开发者而言,还要上传企业的营业执照扫描件,通过审核后成为认证开发者。

需要注意的是,当前,DBP平台APP 技能的开发只对认证的企业开发者开放。

一个安卓App,如何成为DuerOS 上的技能应用呢?_区块链_03

2. APP技能创建

APP 技能目前作为Preview feature 开放,开发者在创建APP 技能的时候首先要阅读并确认《DBP应用开发者协议》。

然后,填写技能名称等相关信息,提交后,等候Preivew 的审核。

在Preview 审核通过后,即表示APP 技能创建完成,可以对技能的意图/槽位/词典等进行配置操作了,详情参见《​​感知自然语言理解(NLU)​​》。

一个安卓App,如何成为DuerOS 上的技能应用呢?_区块链_04

3. APP技能的开发

APP 技能开发包括两部分:技能(bot) 服务的开发和 APP 客户端的开发。

3.1 技能服务的开发

APP 技能的bot 服务开发与DBP 上其他自定义技能的开发类似,尤其与交互模型的建立,关于意图、槽位、词典、常用表达等参考《技能交互模型》。

目前,多数APP 技能都采用了DBP 平台的代理服务AVC(App Voice Control),这样无需独立部署服务器即可使用语音交互的能力。简单地说, 设计并填写完交互模型,就可以认为是开发完成了。AVC 将语音交互的结果以结构化数据返回给APP 客户端,由客户端完成对应的操作。

对于复杂交互的APP 技能而言,同样可以部署自己的物理bot,在自己的技能服务中实现更复杂的逻辑。

3.2 APP 客户端的开发

针对语音交互的复杂程度,APP 客户端的开发可以分为4个等级:


  • L1: 只支持打开/退出的语音指令
  • L2: 支持有限的语音指令
  • L3: 支持多种意图\槽位\词典\常用表达的语音指令
  • L4: 支持用户话术的内容直达以及使用自己的物理bot处理更复杂的语音指令

从客户端的维度看,可以分为集成Bot App SDK 的APP 技能和未集成Bot App SDK 的APP 技能。L1等级的APP技能没有集成Bot APP SDK,L2/L3/L3等级的APP技能集成了Bot APP SDK。

3.2.1 L1 APP 技能的开发

在DBP 平台的控制台,依次选择 【创建技能】->【自定义技能】->【Android App 技能】, 填写技能名称和APP 包名,如图所示:

一个安卓App,如何成为DuerOS 上的技能应用呢?_人工智能_05

一步完成,待开发者App自身完成开发后,即可进入L1 APP 技能的调试阶段。

3.2.2 L2 APP 技能的开发

L2 技能使用了本地自定义交互模型,意思就是用户语音指令和意图匹配关系,定义在本地代码中。

参考示例代码(https://github.com/dueros/AndroidBotSdkDemo)将Bot App SDK 集成到开发者的APP 技能中。

开发者只需要参考代码组装UIContextPayload对象,就可以完成本地自定义交互模型的构建,示例代码如下:

// 1.创建UIContextPayload对象开始组装
UiContextPayload payload = new UiContextPayload();
// 2.定义用户语音意图集合(尽可能丰富的收集用户表达,常用同音异字表达都加上,比如“登录”&“登陆”)
String[] loginWords = {"开始","点击开始","开始游戏","启动游戏","进行游戏"};
// 3.可以定义支持的话术
payload.addHyperUtterance(“sdkdemo://startGame”, Arrays.asList(loginWords), null, null);
// 重复步骤2.3 可以添加多个交互组件。比如开始,退出,登录,注册......
BotSdk.getInstance().updateUiContext(payload);

用户的语音表达,命中自定义交互组件中定义的具体话术后,云端匹配成功,并封装url为ClickLink指令下发到设备端。设备端收到ClickLink指令,通过回调方法onClickLink,把匹配结果分发给App,示例代码如下:

/**
* 云端返回的UIContext匹配结果
* @param url 自定义交互描述中的url
* @param paramMap 对于系统内建类型,参数列表。参数就是从query中通过分词取得的关键词。这个参数配合type,params字段使用
*/
@Override
public void onClickLink(String url, HashMap<String, String> paramMap) {
if ("sdkdemo://startGame".equals(url)) {
//TODO 执行开始游戏逻辑,比如是startGameBtn.performClick()
}
}

开发者完成Android App开发后,即可进入L1 APP 技能的调试阶段。

3.2.3 L3 APP 技能的开发

L3技能使用了DBP 平台的自定义交互模型,关于如何构建交互模型,可以参考《技能交互模型》。

参考示例代码(https://github.com/dueros/AndroidBotSdkDemo)将Bot App SDK 集成到开发者的APP 技能中。

在客户端APP 中, 会通过Bot App SDK的 回调方法handleIntent在App中处理意图的内容,示例代码如下:

/***
* 云端意图返回结果
* @param intent 意图内容,参考{@link BotIntent} 包含意图名称和槽位参数结构如下
* {@link BotIntent#name} 意图名称,对应于云端创建意图的 意图标识名
* {@link BotIntent#slots} 槽位列表 对应于云端创建意图的 槽位信息,数量(0~n)
* 槽位信息结构如下:
* {@link com.baidu.duer.botsdk.BotIntent.Slot#name} 槽位名称
* {@link com.baidu.duer.botsdk.BotIntent.Slot#value} 槽位值
* @param customData 自定义数据,暂时不用
*/
@Override
public void handleIntent(BotIntent intent, String customData) {

String intentResult = "\n指令名称:%s\n槽位信息:%s";
Log.i("HandleIntentTAG", "intent result:" + intentResult);
if ("queryWeather".equals(intent.name)) {
String loactionOfWeather;
if (intent.slots != null) {
for (BotIntent.Slot slot : intent.slots) {
// 遍历槽位列表,找到需要的槽位值
if ("sys.city".equals(slot.name)) {
loactionOfWeather = slot.value;
}
}
}
// TODO 使用localtionOfWeather 参数查询天气
}
}

开发者完成Android App开发后,即可进入L3 APP 技能的调试阶段。

3.2.4 L4 APP 技能的开发

L4 的APP 技能还在内测阶段,需要联系DBP 的产品经理进行完整的接入流程。

一个安卓App,如何成为DuerOS 上的技能应用呢?_物联网_06

4. APP技能调试

目前,APP 技能还处于Preview feature 阶段,因此只能在真机上进行技能调试。

4.1 真机调试开发环境的安装

创建好APP技能后,点击【测试验证】 → 点击【真机测试】→ 点击【新增设备SN】,添加自己的小度设备SN。

一个安卓App,如何成为DuerOS 上的技能应用呢?_大数据_07

开发者在配置好设备SN之后,可以对真机设备说,“小度小度,打开技能开发助手”,在技能的菜单中选择【升级为开发版ROM】,根据语音提示进行后续操作即可。

注意:如果以上操作都完成还是提示申请升级失败,请确认设备上的账号和DBP平台登录的账号是否一致,要确保使用相同的账号。

4.2 真机调试密钥的获取和使用

在开发环境安装成功之后, 需要下载开发环境的密钥本地。

一个安卓App,如何成为DuerOS 上的技能应用呢?_大数据_08

真机调试密钥的使用方法如下:

1)替换到设备本地的 ~/.android 目录中

2)执行命令重启adb:

adb kill-server

adb start-server

4.3 在真机上安装目标应用

在真机的调试环境和调试密钥都安装成功后, 就可以使用 adb 命令安装目标APP了。

4.4 在技能Debug 模式下进行调试

在保持开发者账号和小度设备账号一致的前提下,开启技能调试模式的按钮,对设备说,“开启技能调试”。

在技能调试模式下, 开发者就可以使用语音交互来调试APP 技能了。

一个安卓App,如何成为DuerOS 上的技能应用呢?_人工智能_09

5. APP 技能审核

为了确保用户体验,APP 技能需要通过严格审核才能发布上线。

5.1 技能审核的一般规则

APP 技能申请上线的方式与一般的自定义技能类似,具体可以参考《技能发布》。

APP 技能与一般的自定义技能区别在于要明确客户端APP 的版本号(形如a.b.c.d),并上传APP 的客户端包。

5.2 APP技能审核的特殊性

APP 技能的审核遵从DuerOS 技能审核的一般原则,包括技能元数据审核,功能性测试和技能交互信息测试等,具体可以参考《技能审核规范》。

5.3 开发者申请上线审核

APP 技能的审核还包括了客户端的安全检查和性能压测等验证方式。

同时,APP 还涉及权限申请,例如camera、录音、手势等,在审核的时候会分别给予确认。

5.4 开发者对审核结果的解读

开发者在【发布管理】->【版本管理】中可以看到审核的结果,如果没有通过审核的话,可以查看失败的原因。

一个安卓App,如何成为DuerOS 上的技能应用呢?_java_10

另外,开发者也可以在【个人中心】->【消息中心】中查看审核的相关信息。

一个安卓App,如何成为DuerOS 上的技能应用呢?_大数据_11

6. APP 技能上线与升级

技能审核通过后,即处于上线状态,全网上线在2个工作日内完成。

6.1 首次上线

APP 技能在首次上线的时候,需要上传客户端的APP包,并明确APP技能的客户端版本(形如a.b.c.d), 并明确技能交互的模型的版本,这对APP技能的后续升级至关重要。

6.2 APP 技能升级

APP 技能升级一般包括3种情况:


  • 只升级APP 客户端
  • 只升级技能交互模型
  • 既升级APP 客户端又升级技能交互模型

6.2.1 只升级APP 客户端

如果只是客户端APP的升级,需要重新上传APP包,更新版本号,即可申请上线审核。

6.2.2 只升级技能交互模型

如果只升级交互模型,无需重新上传APP包,只需要更新交互模型的版本号,即可申请上线审核。

6.2.3 既升级APP 客户端又升级技能交互模型

对于升级APP 客户端又升级技能交互模型的情形,需要对APP客户端的版本号和交互模型的版本号,同时上传更新的APP包,形同初次上线。

一个安卓App,如何成为DuerOS 上的技能应用呢?_人工智能_12

小结

综上所述,App 技能的接入与开发流程同样分为6个阶段,开发者认证->技能创建->代码开发->技能调试->技能审核->上线商用。如果开发者的Android App 自身没有什么问题的话(例如,安全问题,内测泄露等等),一般可以在3~5天内完成App技能的上线,进而使开发者的App迅速地使用DuerOS 的多模态交互能力, 在数千万DuerOS 设备上为广大用户带来更丰富的用户体验。

【参考资料】


  • ​​https://dueros.baidu.com/dbp​​

  • ​​https://dueros.baidu.com/didp/doc/dueros-bot-platform/dbp-apk-skill/app​​skilldevelopment_markdown

  • ​​多模态交互之DPL 2.0​​

  • ​​聊聊“全双工”​​

  • ​​调试DuerOS的智能语音技能​​

  • ​​DuerOS的零编程技能实现​​

  • ​​揭秘“语音交互”背后的AI硬核黑科技!​​

  • ​​《智能语音时代》的读书笔记​​

  • ​​再看语音交互设计​​

  • ​​语音交互设计的一点认知​​

  • ​​百度AI开发者大会之DuerOS 回顾​​

  • ​​AI开发者大会中的公开课解读——DuerOS技能开发与CFC编程​​

  • ​​AI开发者大会中的公开课解读——如何在DuerOS技能中实现用户支付购买​​

  • ​​DPL 来了——百度2019AI开发者大会DuerOS公开课解读之三​​

  • ​​故事工厂在DuerOS技能开发中的应用——百度2019AI开发者大会DuerOS公开课解读之四​​

  • ​​企业赋能  AI 服务生活​​

  • ​​DuerOS 走进初夏的成都​​

  • ​​放心用吧!浅谈DuerOS的安全性​​

  • ​​智能音箱场景下的性能优化​​

  • ​​在校大学生能成为DuerOS 的独立开发者吗?​​

  • ​​生动化你的表达——DuerOS中的SSML应用​​

  • ​​用JavaScript打造AI应用-从Nodejs SDK 看DuerOS的技能开发​​

  • ​​从Java SDK看DuerOS的技能开发​​

  • ​​面向接口/协议?看DuerOS的技能开发​​

  • ​​感知自然语言理解(NLU)​​

  • ​​感知人工智能操作系统​​




举报

相关推荐

0 条评论