全部产品
云市场

API 调用说明

更新时间:2019-03-20 10:48:07

智能对话分析服务提供java和python 2种版本的SDK(3.0.0+),若您使用这2种开发语言,请直接使用SDK(参见SDK参考),可以免去自己拼接URL以及签名等易出错的问题;若以上2版本SDK不满足您的需求,可以使用API直接调用。

http访问各接口完成地址组成如下

完整地址示例
参数含义
http://qualitycheck.cn-hangzhou.aliyuncs.com/
?JsonStr={"appKey":1933149043164104,"taskId":"B8578666-7136-49A9-9DA0-3B3732DAFF62"}
&SignatureVersion=1.0
&Action=GetAudioDataStatus
&Format=JSON
&SignatureNonce=1c550238-8a54-46a0-b8c4-666237b1e399
&Version=2016-08-01
&AccessKeyId=lFKEO3Q10JCIGvNv
&Signature=TfxhzLRdTzjBmHeMRJWrMDhOzMM=
&SignatureMethod=HMAC-SHA1
&RegionId=cn-hangzhou
&Timestamp=2018-02-06T08:09:12Z
JsonStr 业务参数json字符串,具体值参见各接口
SignatureVersion固定值为1.0
Action为活动业务码。具体值参见下面给出的表格
Format接口返回的格式,共有2种JSON, XML
SignatureNonce为唯一的uuid值
Version固定值为2016-08-01
AccessKeyId为调用者的accesskey
Signature为签名,生成方式见下面的详细说明
SignatureMethod为签名方法,固定值为HMAC-SHA1
RegionId固定值为cn-hangzhou
Timestamp为调用的时间

Signature签名生成方法

  • 请求参数排序

    按照参数名称的字典顺序对请求中的参数进行排序。(请求参数有:AccessKeyId、Action、Format、JsonStr、RegionId、SignatureMethod、SignatureNonce、SignatureVersion、Timestamp、Version)

  • 对每个请求参数的名称和值进行编码 名称和值要使用UTF-8字符集进行URL编码(需要编码的字段至少包括:JsonStr、Timestamp),URL编码的编码规则是:

    • 对于字符 A-Z、a-z、0-9以及字符“-”、“_”、“.”、“~”不编码;
    • 对于其他字符编码成“%XY”的格式,其中XY是字符对应ASCII码的16进制表示。比如英文的双引号(”)对应的编码是%22
    • 对于扩展的UTF-8字符,编码成“%XY%ZA…”的格式;
    • 需要说明的是英文空格( )要被编码是%20,而不是加号(+)。

    注:一般支持URL编码的库(比如Java中的java.net.URLEncoder)都是按照“application/x-www-form-urlencoded”的MIME类型的规则进行编码的。实现时可以借助该方法,把编码后的字符串中加号(+)替换成%20、星号(*)替换成%2A、%7E替换回波浪号(~),即可得到上述规则描述的编码字符串。

    参考代码(java):

    1. public String percentEncode(String o) throws UnsupportedEncodingException {
    2. return URLEncoder.encode(o, "utf8").replace("+", "%20")
    3. .replace("*", "%2A")
    4. .replace("%7E", "~");
    5. }
  • 对编码后的参数名称和值使用英文等号(=)进行连接。
  • 将英文等号连接得到的字符串按参数名称的字典顺序依次使用&符号连接,即得到规范化请求字符串。

    编码后的字符串( CanonicalizedQueryString )如下:

    &AccessKeyId=lFKEO3Q10JCIGvNv&Action=GetAudioDataStatus&Format=JSON&JsonStr=%7B%22appKey%22%3A1733149043164104%2C%22taskId%22%3A%22B8578666-7136-49A9-9DA0-3B3732DAFF62%22%7D&RegionId=cn-hangzhou&SignatureMethod=HMAC-SHA1&SignatureNonce=1c550238-8a54-46a0-b8c4-666237b1e399&SignatureVersion=1.0&Timestamp=2018-02-06T08%3A50%3A58Z&Version=2016-08-01

  • 计算签名签名 ( StringToSign )的构造规则为:

    HTTPMethod + “&” + percentEncode(“/”) + ”&” + percentEncode(CanonicalizedQueryString)

    其中,

    • HTTPMethod是提交请求用的HTTP方法,比如:GET、POST。
    • percentEncode(“/”)是按照URL编码规则对字符“/”进行编码得到的值,即“%2F”。
    • percentEncode(CanonicalizedQueryString)是对上步中CanonicalizedQueryString的字符串按URL编码规则编码后得到的字符串。

    按照RFC2104的定义,使用上面用于签名的字符串计算签名HMAC值。

    注意:计算签名时使用的Key就是用户持有的Access Key Secret并加上一个“&”字符(ASCII:38),使用的哈希算法是SHA1。

    按照Base64编码规则把上面的HMAC值编码成字符串,即得到签名值(Signature)。

    示例代码

Java:

  1. public String signString(String StringToSign, String accessSecret)
  2. {
  3. Mac mac = Mac.getInstance("HmacSHA1");
  4. mac.init(new SecretKeySpec(
  5. accessSecret.getBytes("UTF-8"),"HmacSHA1"));
  6. byte[] signData = mac.doFinal(StringToSign.getBytes("UTF-8"));
  7. return Base64Helper.encode(signData);
  8. }

python2:

  1. import hashlib
  2. import string
  3. from hashlib import sha1
  4. import base64
  5. import hmac
  6. from hmac import new as hmac
  7. def hash_hmac(ac_key, text):
  8. h = hmac(ac_key, text, sha1)
  9. d = h.digest()
  10. print 'd: ' + d
  11. return str(d.encode('base64'))

python3:

  1. import base64
  2. import hmac
  3. from hashlib import sha1
  4. def hash_hmac(code, key, sha1):
  5. hmac_code = hmac.new(key.encode(), code.encode(), sha1).digest()
  6. return base64.b64encode(hmac_code).decode()

将得到的签名值作为Signature参数添加到请求参数中,即完成对请求签名的过程。

注意:得到的签名值在作为最后的请求参数值提交时,要和其他参数一样,按照RFC3986的规则进行URL编码)。

示例

签名前的请求URL为:

  1. http://qualitycheck.cn-hangzhou.aliyuncs.com/?JsonStr={"appKey":1733149043164104,"taskId":"B8578666-7136-49A9-9DA0-3B3732DAFF62"}&SignatureVersion=1.0 &Action=GetAudioDataStatus&Format=JSON&SignatureNonce=1c550238-8a54-46a0-b8c4-666237b1e399 &Version=2016-08-01&AccessKeyId=testid&SignatureMethod=HMAC-SHA1&RegionId=cn-hangzhou &Timestamp=2018-02-06T08:50:58Z

那么StringToSign为:

  1. GET&%2F&AccessKeyId%3Dtestid&Action%3DGetAudioDataStatus&Format%3DJSON&JsonStr%3D%257B%2522appKey%2522%253A%25221733149043164104%2522%252C%2522taskId%2522%253A%2522B8578666-7136-49A9-9DA0-3B3732DAFF62%2522%257D&RegionId%3Dcn-hangzhou&SignatureMethod%3DHMAC-SHA1&SignatureNonce%3D1c550238-8a54-46a0-b8c4-666237b1e399&SignatureVersion%3D1.0&Timestamp%3D2018-02-06T08%253A50%253A58Z&Version%3D2016-08-01

如使用的Access Key Id是“testid”,Access Key Secret是“testsecret”,用于计算HMAC的Key就是“testsecret&”,则计算得到的签名值是:

  1. MQIWlE70sNCpDsRRKTpOvdQcME8=

签名后的请求URL为(注意增加了Signature参数):

  1. http://qualitycheck.cn-hangzhou.aliyuncs.com/ ?JsonStr={"appKey":1733149043164104,"taskId":"B8578666-7136-49A9-9DA0-3B3732DAFF62"}&SignatureVersion=1.0 &Action=GetAudioDataStatus&Format=JSON&SignatureNonce=1c550238-8a54-46a0-b8c4-666237b1e399 &Version=2016-08-01&AccessKeyId=testid&SignatureMethod=HMAC-SHA1&RegionId=cn-hangzhou &Timestamp=2018-02-06T08:50:58Z&Signature=MQIWlE70sNCpDsRRKTpOvdQcME8=

Action业务码

接口名称 Action业务码
上传分析规则 UploadRule
获取用户规则 GetRule
获取规则明细 GetRuleDetail
删除用户规则 InvalidRule
上传待检数据(语音) UploadAudioData
上传待检数据(文本) UploadData
指定规则上传待检数据(语音) UploadAudioDataWithRules
指定规则上传待检数据(文本) UploadDataWithRules
获取分析结果数 GetResultCount
获取分析结果 GetResult
获取语音处理状态 GetAudioDataStatus
获取数据集基础信息 GetDataSetList
获取评分设置信息 GetScoreInfo
复核提交 SaveReviewResult
修改用户规则 UpdateRule
获取热词词表 GetAsrVocab
创建语音热词 CreateAsrVocab
更新语音热词 UpdateAsrVocab
删除热词词表 DeleteAsrVocab