设备激活接口

一、设备激活接口

如果您需要获取DeviceName,就需要走设备激活流程,请求设备激活接口。

 

1.1 设备激活接口简介

设备使用前必须的鉴授权环节,设备通过此接口,与DUI产品绑定并获得鉴权秘钥(device profile),后续基于鉴权秘钥与云端进行语音对话请求。设备方需要妥善保管鉴权秘钥,如丢失可调用此接口进行重新获取,重新获取的秘钥与原来的秘钥不相同,且原秘钥会失效。

1.2 接口详情

1.2.1 请求地址

https://auth.dui.ai/auth/device/register

1.2.2 请求类型

接口请求类型为:POST

1.2.3 请求参数

Headers

参数名 参数值 是否必须
Content-Type application/json

Query

参数名

是否必须

示例 备注
productKey 0d397453dd94dd87788888888260c8cb 来自dui控制台,产品授权管理页面
format

plain

传入plain即可
productId 100000001 产品id,来自dui控制台,产品授权管理页面
timestamp 1546059559999 unix时间戳(毫秒)
nonce bf7c8674 随机字符串,32字符以内
sig 0ddddddddd94dd87788888888260c8ab 签名,对query parameter中的参数按照预先约定的顺序排序 (productKey + format+ nonce + product id + timestamp),然后基于product secret对参数做签名:hmacsha1(productSecret,productKey + format+ nonce + product id + timestamp) ,本文末尾有签名示例代码。

Request Body

request body中通过json格式上报设备信息,上报到思必驰的设备信息有三个作用:
1)确认设备的唯一性(针对各种设备的必填字段)
2)方便后续针对不同类型的设备进行优化(针对各种设备的选填字段)
3)查询统计分析,方便客户按照不同维度统计自己设备的激活情况

 

1.2.4 android设备

名称 类型

是否必须

字段说明

示例
platform string

平台类型,android设备填android即可

android
deviceId string 设备ID 5235894f-3028-33f4-a948-c86549cc4808
packageName string 包名 com.aispeech.dui.demo
applicationLabel string 应用名称 DUI Demo
applicationVersion string 版本 0.1.0-20171031163815
buildVariant string 构建类型: debug 或 release release
buildSdkInt string framework level 19
displayMatrix string 屏幕分辨率 720*1280
buildModel string 型号 Coolpad 8675
buildManufacture string 制造商 XiaoMi
buildDevice string 设备名称 8675
imei string IMEI号 356704081123748
mac string MAC地址 44:45:53:54:00:00
androidId string Android ID 9774d56d682e549c

1.2.5 iOS设备

名称 类型 是否必须

字段说明

备注
platform string

平台类型,ios设备填ios即可

ios
deviceId string 设备ID 0060D69C-AB7A-44E9-8754-7A12EC2AEDAD
packageName string 包名 com.aispeech.dui.demo
applicationLabel string 应用名称 DUI Demo
applicationVersion string 版本 0.1.0-20171031163815
buildSdkInt string framework level level 19
displayMatrix string 屏幕分辨率 750x1334
buildModel string 型号 iPhone 6
buildManufacture string 制造商 Apple
buildDevice string 设备名称 iPhone

1.2.6 嵌入式

名称

类型

是否必须

字段说明

备注
platform string

平台类型,嵌入式设备填嵌入式操作系统或芯片型号即可

linux
deviceName string 设备名称,要求是接入方所有设备中唯一的一个字段,比如mac地址、uid号等 0060D69C-AB7A-44E9-8754-7A12EC2AEDAD
instructionSet string 指令集 armv6
chipModel string 芯片型号 RK3308

 

1.2.7 正确返回示例

{
    "deviceInfo": {
        ......
    },
    "deviceName": "0000-0001",
    "deviceSecret": "1518b5f911864150a092ba6952be534d",
    "productId": "666666"
}

1.2.8 错误返回示例

{
    "errId": 401,
    "error": "signature mismatch."
}

1.2.9 通用http status解释

  • 200 ok
  • 400 请求错误
  • 401 因为权限问题激活失败
  • 500 内部系统错误

1.2.10 特别说明

嵌入式设备的请求body里,deivceName字段,需要有唯一性保证,否则如不同设备使用相同的deviceName,第二个激活的设备会使第一个激活设备的设备秘钥失效,可能会对用户体验造成不确定的影响。

 

1.2.11 附录 签名代码示例

JAVA

String content = productKey + format + nonce + productId + timestamp;
String signature = SecureUtil.hmacSha1(productSecret).digestHex(content);