此方案不再开放,新方案见:https://doc-bot.tmall.com/docs/doc.htm?spm=0.7629140.0.0.55dc1780u4Ph1I&treeId=566&articleId=118044&docType=1
要使用天猫精灵语音服务 (TmallGenie Voice Service; TVS),你的精灵设备需要先取得 精灵access token ,并在每一次对TVS的请求之中都附上此token以进行授权验证。如果你的设备是没有任何图形化界面的,那用户的登录与授权操作必须要在与设备对应的app中进行相关操作以取得此token。本文将说明该如何进行取得精灵access token的操作与流程。
目前天猫精灵语音服务尚未完全对外开放,大部分的应用创建、权限申请等工作需要由天猫精灵窗口人员协助于线下完成。
首先需要准备一个经过支付宝实名认证的淘宝帐户,并以此淘宝帐号登录淘宝开放平台申请成为开发者。
淘宝帐户与支付宝帐户的绑定可以在淘宝官网的帐号管理中的支付宝绑定设置页面中完成。
成为淘宝开放平台开发者后,请提供以下信息给天猫精灵同学:
redirect_uri
地址。若无回调地址可先填写 open.taobao.com
,后续可随时在开放平台控制台中变更)约0.5到1个工作天内天猫精灵同学会协助完成应用的建立。在收到天猫精灵同学的回复后,可在淘宝开放平台控制台页面看到该新建立的应用。
进入应用详情页,可以看到关于此应用的重要信息,包含: app key
、app secret
以及可以使用的API权限包等。此时请将该应用的识别码 (即app key
) 告知天猫精灵窗口,协助申请 天猫精灵语音服务 (TVS) API 权限包。完成申请后,可以在应用详情页的 功能场景 表格中看到此应用已获得 天猫精灵语音服务 (TVS) API 权限。此时可开始进行实际的登录流程开发工作。
client_id
: 创建TOP应用时获得的app key。client_secret
: 创建TOP应用时获得的app key所对应的app secret。redirect_uri
: 用户完成授权后会跳转过去的页面位址,应与创建应用时所注册的回调地址相同。alibaba.ailabs.tvs.genietoken.get(DSN)
接口,激活设备并取得之后用以访问TVS API的精灵服务access token,之后用户可以在天猫精灵app的”我的“页面上看到新创建的设备。
上述最关键的一步在于需要用户在完成淘宝授权取得淘宝token,使用精灵服务所提供的接口换取精灵token。换取精灵token的接口 alibaba.ailabs.tvs.genietoken.get()
透过淘宝开放平台 (Taobao Open Platform; 简称TOP) 进行开放。因此需要使用TOP的API访问方式来进行调用,相关说明可见API调用方法详解与SDK使用说明等文档。
以下是取得精灵token的示例代码:
// 所使用的TOP URL endpoint依环境而有区别 // 1. 沙箱环境: https://gw.api.tbsandbox.com/router/rest // 2. 正式环境: https://eco.taobao.com/router/rest String url = "https://eco.taobao.com/router/rest"; String appkey = "25712328"; String secret = "dc7b472d123abc7894a7c58bf3e3d1e1b0"; TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret); String dsn = "abc-123-xyz-789" AlibabaAilabsTvsGenietokenGetRequest req = new AlibabaAilabsTvsGenietokenGetRequest(); req.setDsn(dsn); AlibabaAilabsTvsGenietokenGetResponse resp = client.execute(req); System.out.println(resp.getBody());
以上代码的执行结果应该类似于:
{ "alibaba_ailabs_tvs_genietoken_get_response": { "status_code": "OK", "is_success": true, "expires_in": 1551774157, "access_token": "URdJTwpyMSkjDHp0.......PAMxGjQtUyAeN1A0Pg" } }
回复报文中的 access_token
即为所取得的精灵token,需附在每一个TVS事件的 Authorization
标头中以进行效验。
为了方便目前正在联调测试的厂商或开发者进行调适,可以使用以下mock token先进行接口的测试与验证:
URdJTwpyMSkjDHp0RX56UVopIBZVPAMxGjQtUyAeN1A0PgxLKzshc1RiKBs5bTwBDT9RKzAyKT8cKxMdAyg4MSUiKTk2ZlFmYCwXKwAyNA4ebWlBAXELOzcmJwYOIQwQITQANzAydg8HDAQKBTVcVGU1PARGCB1MPiQCJxw2NTI7NiIcNCQ1Ew4xIQRkfBRwICMSVR8gOBBKeGNAVX8EDiQzMVdUCj0QNANEPEBuOiI7PStbUn91flw5LW48PzIVUyISRhwkHw0eOFoACicAIyUqVQhedG02JA5/PgsmFmRvZXh8aCc8Ch4kKDxtLC4ONyUfSEwvLg5DNQgWXmBRHDk0WlgAPRpSVygcMwUmIDwoKSYjISYEMS4iaGdbVydCPHAuUzEfe0p4cXJwLTANK1QsIRMnNAdXCwk/bQY6PCg4PQRva340BwV0GV4SHFQCGCAwICEhFFxfNjIfJyksBDdyQEthJj0/SSYEMzZqf05yfHNSEicNKzQiODkQAycKDSUZVkkHFwYBFhsUFQkKCkpcCEJMWlcUTwATEB9CDA0WVkdXBFFbUFUBTlZEEGMCR15bZFwaSAMLWw5VU19XVlE4RFIBVEE/RQgOWVlQV0wWSl1QBQtOVw==
调用alibaba.ailabs.tvs.device.unregister接口即可完成TVS设备解绑。