语音审核 API 参考
调用说明
以下说明适用于所有语音审核 RESTful API。
请求结构
- 仅支持 HTTPS 协议。
- 请求头的
Content-type
为application/json;charset=utf-8
。 - 请求头的
Authorization
字段需要你自行生成,生成方法参考 HTTP 基本认证。
公共参数
本节介绍语音审核 RESTful API 的公共参数。
公共请求参数
每次请求都需要传入以下参数:
参数 | 类型 | 描述 | 备注 |
---|---|---|---|
appid | String | 你的声网 App ID。必须使用待审核的频道所对应的 App ID。 | 路径参数 |
cname | String | 待审核的频道名。 | Body 参数 |
uid | String | 标识语音审核服务(相当于频道内一个不发流的客户端)的 UID,例如
| Body 参数 |
公共响应参数
每次发送请求后,响应 Header 中都会返回响应状态码。
配额限制
每秒钟的请求数限制(QPS)为 10 次。如需提高此限制,请联系技术支持。
获取审核资源
接口原型
-
请求方法:POST
-
请求 URL:
https://api.sd-rtn.com/v1/apps/{appid}/cloud_recording/acquire
请求参数
Body 参数
除公共参数外,请求 Body 中还需要传入以下参数:
参数 | 类型 | 描述 |
---|---|---|
clientRequest | Object | 客户请求参数,使用语音审核时你需要设置该对象的
|
响应参数
响应 Body 中包含以下字段:
resourceId
:String 类型,审核资源 ID。一个审核资源 ID 只能用于开启一个审核任务。
- 调用该接口获取的
resourceId
时效为 5 分钟,你需要在 5 分钟内使用该resourceId
调用/start
接口开启审核任务,如果超时则需要重新获取。 - 如需开启多个审核任务,声网建议你按照先
/acquire
后/start
的调用顺序逐个开启,请勿多次调用/acquire
获取多个resourceId
而导致资源过期。
示例
请求行
POST https://api.sd-rtn.com/v1/apps/{yourappid}/cloud_recording/acquire HTTPS/1.1
请求 Body
{
"clientRequest": {
"resourceExpiredHour": 24
},
"cname": "httpClient463224",
"uid": "527841"
}
响应 Body
{
"resourceId": "JyvK8nXHuV1BE64GDkAaBGEscvtHW7v8BrQoRPCHxmeVxwY22-x-kv4GdPcjZeMzoCBUCOr9q-k6wBWMC7SaAkZ_4nO3JLqYwM1bL1n6wKnnD9EC9waxJboci9KUz2WZ4YJrmcJmA7xWkzs_L3AnNwdtcI1kr_u1cWFmi9BWAWAlNd7S7gfoGuH0tGi6CNaOomvr7-ILjPXdCYwgty1hwT6tbAuaW1eqR0kOYTO0Z1SobpBxu1czSFh1GbzGvTZG"
}
开启审核任务
接口原型
-
请求方法:POST
-
请求 URL:
https://api.sd-rtn.com/v1/apps/{appid}/cloud_recording/resourceid/{resourceid}/mode/{mode}/start
请求参数
路径参数
除公共参数外,请求 URL 中还包含以下参数:
参数 | 类型 | 描述 |
---|---|---|
resourceid | String | 通过 /acquire 请求获取的审核资源 ID。 |
mode | String | 审核模式,支持以下模式:
|
Body 参数
除公共参数外,请求 Body 中还需要传入以下参数:
参数 | 类型 | 描述 |
---|---|---|
clientRequest | Object | 特定的客户请求参数,对于该请求包含以下参数:
|
-
channelType
:Number 类型,频道场景。频道场景必须与声网 RTC SDK 的设置一致,否则可能导致问题。0
:(默认)通信场景1
:直播场景
-
streamTypes
:Number 类型,订阅的媒体流类型。使用语音审核时,你需要将其设置为0
,即仅订阅音频。0
:仅订阅音频1
:仅订阅视频2
:(默认)订阅音频和视频
-
streamMode
:(选填)String 类型,单流模式下(mode
为individual
),媒体流的输出模式。default
:默认模式。审核过程中音频转码。
-
decryptionMode
:(选填)Number 类型,解密方案。如果频道设置了加密,该参数必须设置。解密方式必须与频道设置的加密方式一致。0
:(默认)不加密。1
:AES_128_XTS 加密模式。128 位 AES 加密,XTS 模式。2
:AES_128_ECB 加密模式。128 位 AES 加密,ECB 模式。3
:AES_256_XTS 加密模式。256 位 AES 加密,XTS 模式。4
:SM4_128_ECB 加密模式。128 位 SM4 加密,ECB 模式。5
:AES_128_GCM 加密模式。128 位 AES 加密,GCM 模式。6
:AES_256_GCM 加密模式。256 位 AES 加密,GCM 模式。7
:AES_128_GCM2 加密模式。128 位 AES 加密,GCM 模式。 相比于 AES_128_GCM 加密模式,AES_128_GCM2 加密模式安全性更高且需要设置密钥和盐。8
:AES_256_GCM2 加密模式。256 位 AES 加密,GCM 模式。相比于 AES_256_GCM 加密模式,AES_256_GCM2 加密模式安全性更高且需要设置密钥和盐。
-
secret
:(选填)String 类型,启用解密模式后,设置的解密密码。 -
salt
:(选填)Base64 编码、32 位字节。启用解密模式后,设置解密的盐。如果decryptionMode
为 7 或 8,则需要设置该值。 -
audioProfile
:(选填)Number 类型,设置输出音频的采样率,码率,编码模式和声道数。目前仅适用于合流模式。0
:(默认)48 kHz 采样率,音乐编码,单声道,编码码率约 48 Kbps1
:48 kHz 采样率,音乐编码,单声道,编码码率约 128 Kbps2
:48 kHz 采样率,音乐编码,双声道,编码码率约 192 Kbps
-
maxIdleTime
:(选填)Number 类型,最长空闲频道时间。默认值为 30 秒,该值需大于等于 5,且小于等于 (232-1)。如果频道内无用户的状态持续超过该时间,审核服务会自动退出。- 通信场景下,如果频道内有用户,但用户没有发流,不算作无用户状态。
- 直播场景下,如果频道内有观众但无主播,一旦无主播的状态超过
maxIdleTime
,审核服务会自动退出。
-
subscribeAudioUids
:(选填)JSONArray 类型,由 UID 组成的数组,指定订阅哪几个 UID 的音频流。数组长度不得超过 32,不推荐使用空数组。 -
unSubscribeAudioUids
: (选填)JSONArray 类型,由 UID 组成的数组,指定不订阅哪几个 UID 的音频流。审核服务会订阅频道内除指定 UID 外所有 UID 的音频流。数组长度不得超过 32,不推荐使用空数组。subscribeAudioUids
和unSubscribeAudioUids
不能同时设置。 -
subscribeUidGroup
: (选填)Number 类型,预估的订阅人数峰值。在单流模式下,为必填参数。举例来说,如果subscribeAudioUids
为["100","101","102"]
,则订阅人数为 3 人,该参数需要设置为1
。0
: 1 到 2 人1
: 3 到 7 人2
: 8 到 12 人3
: 13 到 17 人
-
errorHandlePolicy
:(选填)String 类型,错误处理策略。目前仅可设为:"error_abort"
:(默认)当扩展服务发生错误后,订阅等其他服务均停止。
-
apiVersion
:(选填)String 类型,语音审核 RESTful API 的版本号,默认为"v1"
。 -
extensionServices
:JSONArray 类型,由每个扩展服务的设置组成的数组。使用语音审核时需要设置以下参数:-
serviceName
:String 类型,扩展服务的名称。可设为:shumei_voice_scan
:数美语音审核。yitu_voice_async_scan
:依图语音审核。tupu_voice_scan
:图普语音审核。
-
errorHandlePolicy
:(选填)String 类型。错误处理策略。目前仅可设为:"error_abort"
:(默认)当扩展服务发生错误后,订阅等其他服务均停止。
-
streamTypes
:Number 类型,要审核的媒体流类型。使用语音审核时,你需要将其设置为0
,即仅审核音频。0
:仅订阅音频1
:仅订阅视频2
:(默认)订阅音频和视频
-
serviceParam
:JSON Object 类型,扩展服务的具体参数设置。当使用语音审核时,你需要设置以下字段:- 数美
- 依图
- 图普
字段 类型 描述 accessKey
String 访问密钥中的 Key ID,用于识别访问者的身份。 appId
String 数美项目使用的 App ID,用于标识你的项目应用。该 appId
是向数美获取的项目 ID,请勿使用声网的 App ID。callback
String 接收语音审核结果回调的服务器地址。 type
String 识别类型,包含如下类型:
PORN
:色情ABUSE
:辱骂AD
:广告AUDIOPOLITICAL
:一号领导人声纹POLITICAL
:涉政MOAN
:娇喘ANTHEN
:国歌SING
:唱歌LANGUAGE
:语种MINOR
:未成年人BANEDAUDIO
:违禁歌曲VOICE
:人声属性AUDIOSCENE
:声音场景 如需组合以上类型,你可以将类型用下划线连接,例如:POLITICAL_PORN_MOAN_AD
,表示用于广告、色情、涉政和娇喘审核。
businessType
String 识别业务类型,包含如下类型:
SING
:唱歌LANGUAGE
:语种GENDER
:性别TIMBRE
:音色MINOR
:未成年VOICE
:人声属性AUDIOSCENE
:声音场景 如需组合以上类型,你可以将类型用下划线连接,例如:SING_LANGUAGE_GENDER
,表示用于唱歌、语种、性别审核。 注意:必须设置type
和businessType
其中一个。
eventId
String 识别场景,包含如下场景:
audiobook
:有声书education
:教育音频game
:游戏语音房live
:秀场直播ecommerce
:电商直播voiceroom
:交友语聊房private
:私密语聊default
:默认other
:其他
returnAllText
Int (选填) 返回全量或特定的审核结果:
0
:(默认)返回有风险的音频流片段识别结果和文本内容1
:返回全量的音频流片段识别结果和文本内容
returnPreText
Int (选填) 返回违规片段的文本内容:
0
:(默认)返回违规音频片段的文本内容1
:返回违规音频前 10 秒片段的文本内容
returnPreAudio
Int (选填) 返回违规片段的音频链接:
0
:返回违规音频片段的音频链接1
:返回违规音频前 10 秒片段的音频链接
字段 类型 描述 callbackAddr
String 接收语音审核结果的 HTTP 服务器地址。 apiData
Object 向语音审核服务传入的字段值,包含以下字段。 apiData.accessKey
String 依图的 Dev ID。 apiData.secretKey
String 依图的 Dev Key。 apiData.bizType
String 依图的 App ID。在依图后台内容审核 > 记录查询页面创建 App,然后在同页面右上角点击复制 ID 获取该 App ID。 apiData.callbackSeed
String 默认为空。随机字符串,用于回调通知请求中的签名。 字段名称 类型 是否必须 描述 secretId
String 是 图普控制台开通的审核应用 id。 callback
String 是 接收审核结果的回调地址。 timestamp
Number 是 时间戳,用于签名。 nonce
Number 是 随机数,用于签名(整数或浮点数)。 signature
String 是 签名。 callbackRules
Number 否 回调规则,默认为 0(有违规才回调),需要回调所有结果可设置为 1。 roomId
String 否 可选参数,用于透传回去。 userId
String 否 可选参数,用于透传回去。 forumId
String 否 可选参数,用于透传回去。 图普采用的数字证书签名算法是:
RSA-SHA256
,签名输出类型是:base64
,生成签名的具体步骤如下:- 把所有参与签名的参数
secretId
、timestamp
、nonce
用英文半角逗号,
相连,得到sign_string
; - 利用你的私钥,使用算法
RSA-SHA256
签名,输出为base64
格式,得到参数signature
的值。
点击管理公钥证书查看如何生成私钥,及如何上传你的公钥用于数字签名的认证。
-
响应参数
响应 Body 中包含以下字段:
cname
:String 类型,待审核的频道名。uid
:String 类型,字符串内容为审核服务在 RTC 频道内使用的 UID,用于标识该审核服务。resourceId
:String 类型,该审核任务使用的审核资源 ID。sid
:String 类型,该审核任务的唯一标识。
示例
请求行
POST https://api.sd-rtn.com/v1/apps/{yourappid}/cloud_recording/resourceid/{resourceid}/mode/{mode}/start HTTPS/1.1
请求 Body
以单流模式为例:
- 依图示例
- 数美示例
- 图普示例
{
"uid": "527841",
"cname": "httpClient463224",
"clientRequest": {
"token": "<token if any>",
"recordingConfig": {
"channelType": 1,
"maxIdleTime": 30,
"streamTypes": 0,
"subscribeUidGroup": 0
},
"extensionServiceConfig": {
"apiVersion": "v1",
"errorHandlePolicy": "error_abort",
"extensionServices": [
{
"errorHandlePolicy": "error_abort",
"serviceName": "yitu_voice_async_scan",
"serviceParam": {
"apiData": {
"accessKey": "xxxx",
"bizType": "xxxx",
"callbackSeed": "xxxx",
"secretKey": "xxxx"
},
"callbackAddr": "http://xxxx"
},
"streamTypes": 0
}
]
}
}
}
{
"uid": "527841",
"cname": "httpClient463224",
"clientRequest": {
"token": "<token if any>",
"recordingConfig": {
"channelType": 1,
"maxIdleTime": 30,
"streamTypes": 0,
"subscribeUidGroup": 0
},
"extensionServiceConfig": {
"apiVersion": "v1",
"errorHandlePolicy": "error_abort",
"extensionServices": [
{
"errorHandlePolicy": "error_abort",
"serviceName": "shumei_voice_scan",
"serviceParam": {
"accessKey": "xxxx",
"appId": "xxxx",
"callback": "xxxx",
"type": "xxxx",
"businessType": "xxxx",
"eventId": "xxxx"
},
"streamTypes": 0
}
]
}
}
}
{
"cname": "{cname}",
"requestId": 10000,
"uid": "{uid}",
"clientRequest": {
"recordingConfig": {
"channelType": 0,
"maxIdleTime": 30,
"streamTypes": 0
},
"extensionServiceConfig": {
"errorHandlePolicy": "error_abort",
"extensionServices": [
{
"serviceName": "tupu_voice_scan",
"errorHandlePolicy": "error_abort",
"streamTypes": 0,
"serviceParam": {
"secretId": "secretid",
"timestamp": 0,
"nonce": 0.1,
"signature": "signature",
"callback": "callback"
}
}
]
}
}
}
响应 Body
{
"cname": "httpClient463224",
"uid": "527841",
"resourceId": "JyvK8nXHuV1BE64GDkAaBGEscvtHW7v8BrQoRPCHxmeVxwY22-x-kv4GdPcjZeMzoCBUCOr9q-k6wBWMC7SaAkZ_4nO3JLqYwM1bL1n6wKnnD9EC9waxJboci9KUz2WZ4YJrmcJmA7xWkzs_L3AnNwdtcI1kr_u1cWFmi9BWAWAlNd7S7gfoGuH0tGi6CNaOomvr7-ILjPXdCYwgty1hwT6tbAuaW1eqR0kOYTO0Z1SobpBxu1czSFh1GbzGvTZG",
"sid": "38f8e3cfdc474cd56fc1ceba380d7e1a"
}
查询审核状态
接口原型
-
请求方法:GET
-
请求 URL:
https://api.sd-rtn.com/v1/apps/{appid}/cloud_recording/resourceid/{resourceid}/sid/{sid}/mode/{mode}/query
请求参数
路径参数
除公共参数外,请求 URL 中还包含以下参数:
参数 | 类型 | 描述 |
---|---|---|
resourceid | String | 通过 /acquire 请求获取的审核资源 ID。 |
sid | String | 通过 /start 请求获取的审核任务 ID。 |
mode | String | 审核模式,支持以下模式:
|
响应参数
响应 Body 中包含以下字段:
resourceId
:String 类型,语音审核的审核资源 ID。sid
:String 类型,通过/start
请求获取的审核任务 ID。serverResponse
:JSON Object 类型,服务器返回的具体信息。subServiceStatus
:JSON Object 类型,子模块的服务状态。extensionServiceState
:JSONArray 类型,由各个扩展服务的当前状态组成的数组。serviceName
:String 类型,扩展服务的名称:shumei_voice_scan
:数美语音审核。yitu_voice_async_scan
:依图语音审核。
streamState
:JSONArray 类型,该扩展服务的状态。当选择数美或依图语音审核时,返回以下参数:uid
:Number 类型,用户 UID,表示审核的是哪个用户的媒体流。合流模式下,uid
总为0
。streamType
:String 类型,审核的内容类型。"audio"
指纯音频。status
:审核的状态。"inProgress"
:审核正在进行中。"failed"
:审核发生错误。
示例
请求行
GET https://api.sd-rtn.com/v1/apps/{yourappid}/cloud_recording/resourceid/{resourceid}/sid/{sid}/mode/{mode}/query HTTPS/1.1
响应 Body
以单流模式为例:
{
"resourceId": "Etkl6g-zSB7EpP-Da1zN67U-tt4soO0PZ0SW6nl1EGu8MSTU96ioRjKOO-3PgKb-TBNM_pEudbZ3Udy2wxOZRNgb3dpH__glt5_D-6ikPjkde3CfHeZtsa5fffoZjnfk865Q271HRmP--p8RZm0A-7S39HFBJIPtugfjyzocNzTTw2_xttK97rKU-B1wl1uurKmiRj4453L7ETNLeM6NKskNqYZ0holdfQs3ijC7WNNgdlWVeYTBKT83G6jC99eXKBnBqs-6Lu1_C9S9qprRIE7js-xgLLX3TIEwi69milO8b-I958yKyn6fLX3PNSNshZZUVUfIlqMPYbe7NtRXC-HRY2YM3xq0K-4-wPVPfCA",
"sid": "e36fb8add64933c71c315784b93ca5cb",
"serverResponse": {
"extensionServiceState": [
{
"serviceName": "yitu_voice_async_scan", // 或 shumei_voice_scan
"streamState": [
{
"status": "inProgress",
"streamType": "audio",
"uid": "0"
}
]
}
],
"subServiceStatus": {
"recordingService": "serviceInProgress",
"mediaDistributeService": "serviceInProgress"
}
}
}
更新音频流订阅
接口原型
-
请求方法:POST
-
请求 URL:
https://api.sd-rtn.com/v1/apps/{appid}/cloud_recording/resourceid/{resourceid}/sid/{sid}/mode/{mode}/update
请求参数
路径参数
除公共参数外,请求 URL 中还包含以下参数:
参数 | 类型 | 描述 |
---|---|---|
resourceid | String | 通过 /acquire 请求获取的审核资源 ID。 |
sid | String | 通过 /start 请求获取的审核任务 ID。 |
mode | String | 审核模式,支持以下模式:
|
Body 参数
除公共参数外,请求 Body 中还需要传入以下参数:
参数 | 类型 | 描述 |
---|---|---|
clientRequest | Object | 客户请求参数,对于该请求仅包含 streamSubscribe 字段。该字段为 JSON Object 类型,用于更新音频流的订阅名单。 |
streamSubscribe
包含以下成员:
audioUidList
:(选填)JSON Object 类型。音频订阅名单。如果recordingConfig
中的streamTypes
为1
(只订阅视频),设置该参数会报错。
响应参数
响应 Body 中包含以下字段:
resourceId
:String 类型,语音审核的审核资源 ID。sid
:String 类型,通过/start
请求获取的审核任务 ID。
示例
请求行
POST https://api.sd-rtn.com/v1/apps/{appid}/cloud_recording/resourceid/{resourceid}/sid/{sid}/mode/{mode}/update HTTPS/1.1
请求 Body
{
"uid": "527841",
"cname": "httpClient463224",
"clientRequest": {
"streamSubscribe": {
"audioUidList": {
"subscribeAudioUids": ["#allstream#"]
}
}
}
}
响应 Body
{
"resourceId": "JyvK8nXHuV1BE64GDkAaBGEscvtHW7v8BrQoRPCHxmeVxwY22-x-kv4GdPcjZeMzoCBUCOr9q-k6wBWMC7SaAkZ_4nO3JLqYwM1bL1n6wKnnD9EC9waxJboci9KUz2WZ4YJrmcJmA7xWkzs_L3AnNwdtcI1kr_u1cWFmi9BWAWAlNd7S7gfoGuH0tGi6CNaOomvr7-ILjPXdCYwgty1hwT6tbAuaW1eqR0kOYTO0Z1SobpBxu1czSFh1GbzGvTZG",
"sid": "38f8e3cfdc474cd56fc1ceba380d7e1a"
}
停止审核
接口原型
-
请求方法:POST
-
请求 URL:
https://api.sd-rtn.com/v1/apps/{appid}/cloud_recording/resourceid/{resourceid}/sid/{sid}/mode/{mode}/stop
请求参数
路径参数
除公共参数外,请求 URL 中还包含以下参数:
参数 | 类型 | 描述 |
---|---|---|
resourceid | String | 通过 /acquire 请求获取的审核资源 ID。 |
sid | String | 通过 /start 请求获取的审核任务 ID。 |
mode | String | 审核模式,支持以下模式:
|
Body 参数
除公共参数外,请求 Body 中还需要传入以下参数:
参数 | 类型 | 描述 |
---|---|---|
clientRequest | Object | 特定的客户请求参数,对于该接口无需填入任何内容,为一个空的 JSON Object。 |
响应参数
响应 Body 中包含以下字段:
resourceId
:String 类型,语音审核使用的审核资源 ID。sid
:String 类型,审核任务 ID。成功开始语音审核后,你会得到一个sid
, 是该审核任务的唯一标识。
示例
请求行
POST https://api.sd-rtn.com/v1/apps/{yourappid}/cloud_recording/resourceid/{resourceid}/sid/{sid}/mode/{mode}/stop HTTPS/1.1
请求 Body
{
"cname": "httpClient463224",
"uid": "527841",
"clientRequest": {}
}
响应 Body
{
"sid": "38f8e3cfdc474cd56fc1ceba380d7e1a",
"resourceId": "JyvK8nXHuV1BE64GDkAaBGEscvtHW7v8BrQoRPCHxmeVxwY22-x-kv4GdPcjZeMzoCBUCOr9q-k6wBWMC7SaAkZ_4nO3JLqYwM1bL1n6wKnnD9EC9waxJboci9KUz2WZ4YJrmcJmA7xWkzs_L3AnNwdtcI1kr_u1cWFmi9BWAWAlNd7S7gfoGuH0tGi6CNaOomvr7-ILjPXdCYwgty1hwT6tbAuaW1eqR0kOYTO0Z1SobpBxu1czSFh1GbzGvTZG"
}
审核结果回调
语音审核结果会以 HTTP 请求的形式直接发送到你在 extensionServiceConfig
中设置的回调地址。回调参数详见对应的第三方官方文档:
- 依图音频流审核接口 的 3.3 回调参数一节
- 数美音频流识别回调返回结果
- 图普语音流接口文档 1.音频流提交接口一节的末尾
除此之外,回调还可能包含以下字段:
channelName
:String 类型,此次审核的声网频道名。uid
:String 类型,语音审核的用户所属 UID。uid
为 0 表示语音审核为合流模式。streamType
:String 类型,语音审核所审核的内容类型。"audio"
表示纯音频。
错误码和状态码
本文仅列出使用云端录制 RESTful API 过程中常见的错误码和状态码。如果遇到其他错误,请联系技术支持。
错误码
2
:参数不合法,请确保参数类型正确、大小写正确、必填的参数均已填写。7
:审核已经在进行中 ,请勿用同一个resourceId
重复/start
请求。8
:HTTP 请求头部字段错误,有以下几种情况:Content-type
错误,请确保Content-type
为application/json;charset=utf-8
。- 请求 URL 中缺少
cloud_recording
字段。 - 使用了错误的 HTTP 方法。
- 请求 Body 不是合法的 JSON 格式。
- 请求 URL 中缺少
49
:使用同一个审核资源 ID(resourceId
) 和审核任务 ID(sid
)重复/stop
请求。53
:审核已经在进行中。当采用相同参数再次调用/acquire
获得新的resourceId
并用于/start
请求时,会发生该错误。如需发起多路审核,需要在/acquire
方法中填入不同的 UID。62
:调用/acquire
请求时,如果出现该错误,表示你填入的 App ID 没有开通第三方语音审核服务,或者没有开通云录制服务。65
:多为网络抖动引起。当调用/start
收到该错误码时,需要使用同一 Resource ID 再次调用start
。建议使用退避策略重试两次,如第一次等待 3 秒后重试、第二次等待 6 秒后重试。109
:加入 RTC 频道的鉴权 Token 过期,你需要获取新的 Token。110
:加入 RTC 频道的鉴权 Token 错误,你需要确认你是否获取了正确的 Token。432
:请求参数错误。请求参数不合法,或请求中的 App ID,频道名或用户 ID 与 Resource ID 不匹配。433
:Resource ID 过期。获得resourceId
后必须在 5 分钟内开始审核。请重新调用/acquire
获取新的resourceId
。435
:频道内没有用户加入,无审核对象。501
:审核正在退出。该错误可能在调用了/stop
接口后再调用/query
时发生。1001
:Resource ID 解密失败。请重新调用/acquire
获取新的 Resource ID。1003
:声网 App ID 或者审核任务 ID(sid
)与审核资源 ID(resourceId
) 不匹配。请确保在一个审核周期内声网 App ID、resourceId
、sid
一一对应。1013
:频道名不合法。频道名必须为长度在 64 字节以内的字符串。以下为支持的字符集范围(共 89 个字符):- 26 个小写英文字母 a-z
- 26 个大写英文字母 A-Z
- 10 个数字 0-9
- 空格
- "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " , ", "|", "~", ","
- 26 个小写英文字母 a-z
"invalid appid"
:无效的声网 App ID。请确保声网 App ID 填写正确。如果你已经确认 App ID 填写正确,但仍出现该错误,请联系技术支持。"no Route matched with those values"
:该错误可能由 HTTP 方法填写错误导致,例如将GET
方法填写为POST
;也可能由请求 URL 填写错误导致。"Invalid authentication credentials"
:该错误可能由以下原因导致。如果你已经排除以下原因,但仍出现该错误,请联系技术支持。- 客户 ID 或客户密钥填写错误。
- App ID 没有开通第三方语音审核服务或开通云端录制服务。
- HTTP 请求头的认证信息有误,如
Authorization
字段的值Basic <Authorization>
缺少Basic
。 - HTTP 请求头的格式不正确,如
Content-type
字段的值application/json;charset=utf-8
大小写不正确或包含空格。
响应状态码
状态码 | 描述 |
---|---|
200 | 请求成功。 |
201 | 录制已经在进行中 ,请勿用同一个 Resource ID 重复 start 请求。 |
206 | 整个录制过程中没有用户发流,或部分录制文件没有上传到第三方云存储,或录制进程还未结束。 |
400 | 请求的语法错误(如参数错误)。如果你填入的声网 App ID 没有开通第三方语音审核服务,也会返回 400。 |
401 | 未经授权的(客户 ID/客户密钥匹配错误)。 |
404 | 服务器无法根据请求找到资源(网页)。 |
500 | 服务器内部错误,无法完成请求。 |
504 | 服务器内部错误。充当网关或代理的服务器未从远端服务器获取请求。 |
服务状态
状态 | 描述 |
---|---|
"serviceIdle" | 子模块服务未开始。 |
"serviceStarted" | 子模块服务已开始。 |
"serviceReady" | 子模块服务已就绪。 |
"serviceInProgress" | 子模块服务正在进行中。 |
"serviceCompleted" | 审核内容已全部上传至语音审核。 |
"servicePartialCompleted" | 审核内容部分上传至语音审核。 |
"serviceValidationFailed" | 语音审核验证失败。例如 extensionServiceConfig 中 apiData 填写错误。 |
"serviceAbnormal" | 子模块状态异常。 |