当精灵语音能力接入的设备没有屏幕但又需要进行配网操作时,可以使用我们所提供的配网SDK与对应的服务端接口为智能设备进行配网,整体流程如下:
第一步需要您在阿里精灵硬件接入平台建立设备信息,并取得要连网设备的schema key、淘宝开放平台app key与app secret。
为了能够调用阿里的API服务,三方开发者必须在淘宝开放平台中申请应用,并使用该应用的app key与app secret来调用阿里服务的接口。精灵硬件接入平台集成了淘宝开放平台,因此所有在平台中的设备信息在淘宝开放平台中都有一份对应的应用信息,也因此能完成后续的阿里接口调用。如何调用阿里服务端接口,请见淘宝开放平台的相关文档。
建立设备信息后,可以在该设备的设备信息页面取得此设备的shema key与app key (如下图),app secret则需要透过下图链接跳转至app secret页面中取得。
接著需要准备该用户在您的服务中所使用的用户ID,此ID的生成规则、形式不限,对精灵语音服务来说即为一三方帐户ID。设备信息中的schema key是精灵语音服务用来区分帐号体系的工具,因此要求每个用户ID在各别schema key下必须唯一。
所有信息准备妥善后,需使用获取设备授权码接口取得设备验证码。关于如何调用阿里服务端接口,请见淘宝开放平台的相关文档。此接口回传值中的model
字段即为下一步使用配网SDK时须传入的token
参数
在确认取得用户ID、设备授权码后,您的app (或微信公众号) 等与智能设备搭配使用的应用需要透过本地的WiFi/声波等信道或其他方式,将这个用户ID、授权码与网络名称(SSID)与网络密码传到设备端,然后交由阿里提供的设备端SDK发起设备绑定流程。
注意:一般来说,精灵能力接入项目在商务对接后,阿里方面会派出专门的工程同学协助处理设备端上的各类问题。设备端上在收到用户ID与授权码后该如何与网关交互以进行绑定等细节可谘询该设备端同学。
如果你想透过app进行配网,则可使用精灵开发团队所提供的配网SDK完成。此SDK有安卓与iOS版本,且都有提供声波与Smart Config的配网方式,只要将上述的user ID、授权码与网络名称(SSID)与网络密码作为入参调用对应的接口即可。
设备端在接收到信息后,会开始与精灵网端进行设备注册与授权码校验。此时,您的app (或微信公众号) 需要透过轮询设备授权码验证结果接口来确认验证结果是否已经成功。其中的入参auth_codes
需要传入由**3. 获取帐号授权码**步骤中取得的验证码,虽然形式为数组,但里面只需要包含一个值即可。此接口如果成功验证,则会回传不为空的数组uuids
,其中包含精灵语音服务中对于此设备的唯一识别ID,如果后续接口调用需要区分设备,那么请使用这个设备ID进行区分。
一旦设备授权码验证结果接口所回传的uuids不为空,即代表此设备已成功连结精灵语音服务,此时请参照精灵语音服务协议进行后续交互。
首先建立一个名为我的故事机的儿童音箱设备。如下图,可以看到其app key与schema key,app secret则要透过**查看AppSecret**按钮跳转至app secret页面查看。
24979538
da202********de2ee15e
26F6736BCC8AB9D0D126429008CBA402
此schema key作为目前的唯一用户体系,我们为此用户体系设置的第一个用户ID为test0001
。
接著,可以使用以下代码片段取得帐号授权码,并假设model
中的值为abc123
:
// 要使用哪个API endpoint请参照淘宝开放平台文档://open.taobao.com/doc.htm?docId=101617&docType=1 String url = "https://eco.taobao.com/router/rest"; String appkey = "24979538"; String secret = "da202********de2ee15e"; TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret); AilabAicloudTopDeviceAuthcodeGetRequest req = new AilabAicloudTopDeviceAuthcodeGetRequest(); req.setSchema("26F6736BCC8AB9D0D126429008CBA402"); req.setUserId("test0001"); req.setUtdId("deprecated_field"); // 已弃用,无需关注 req.setExt("{\"appType\":\"IOS\",\"appVersion\":\"1.0\"}"); req.setAppkey("24979538"); AilabAicloudTopDeviceAuthcodeGetResponse rsp = client.execute(req); System.out.println(rsp.getBody());
接著,在你的app中集成配网SDK,并使用类似以下代码片段进行声波与Smart Config配网 (此处以安卓SDK为例):
AINetSoundConfig soundConfig = new AINetSoundConfig(); soundConfig.startEncodeAndPlayAudio("网络名称", "网络密码", "test0001", "abc123"); AINetSmartConfig smartConfig = new AINetSmartConfig(); soundConfig.startProvision("网络名称", "网络密码", "test0001", "abc123");
最后,以以下代码进行轮询,确认配网结果:
String url = "https://eco.taobao.com/router/rest"; String appkey = "24979538"; String secret = "da202********de2ee15e"; TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret); AilabAicloudTopDeviceAuthresultGetRequest req = new AilabAicloudTopDeviceAuthresultGetRequest(); req.setSchema("26F6736BCC8AB9D0D126429008CBA402"); req.setUserId("test0001"); req.setUtdId("deprecated_field"); // 已弃用,无需关注 req.setExt("{\"appType\":\"IOS\",\"appVersion\":\"1.0\"}"); req.setAppkey("24979538"); req.setAuthCodes("abc123"); AilabAicloudTopDeviceAuthresultGetResponse rsp = client.execute(req); System.out.println(rsp.getBody());