语音审核 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 类型,扩展服务的具体参数设置。当使用语音审核时,你需要设置以下字段:- 数美
- 依图
- 图普
字段 类型 描述 accessKeyString 访问密钥中的 Key ID,用于识别访问者的身份。 appIdString 数美项目使用的 App ID,用于标识你的项目应用。该 appId是向数美获取的项目 ID,请勿使用声网的 App ID。callbackString 接收语音审核结果回调的服务器地址。 typeString 识别类型,包含如下类型:
PORN:色情ABUSE:辱骂AD:广告AUDIOPOLITICAL:一号领导人声纹POLITICAL:涉政MOAN:娇喘ANTHEN:国歌SING:唱歌LANGUAGE:语种MINOR:未成年人BANEDAUDIO:违禁歌曲VOICE:人声属性AUDIOSCENE:声音场景 如需组合以上类型,你可以将类型用下划线连接,例如:POLITICAL_PORN_MOAN_AD,表示用于广告、色情、涉政和娇喘审核。
businessTypeString 识别业务类型,包含如下类型:
SING:唱歌LANGUAGE:语种GENDER:性别TIMBRE:音色MINOR:未成年VOICE:人声属性AUDIOSCENE:声音场景 如需组合以上类型,你可以将类型用下划线连接,例如:SING_LANGUAGE_GENDER,表示用于唱歌、语种、性别审核。 注意:必须设置type和businessType其中一个。
eventIdString 识别场景,包含如下场景:
audiobook:有声书education:教育音频game:游戏语音房live:秀场直播ecommerce:电商直播voiceroom:交友语聊房private:私密语聊default:默认other:其他
returnAllTextInt (选填) 返回全量或特定的审核结果:
0:(默认)返回有风险的音频流片段识别结果和文本内容1:返回全量的音频流片段识别结果和文本内容
returnPreTextInt (选填) 返回违规片段的文本内容:
0:(默认)返回违规音频片段的文本内容1:返回违规音频前 10 秒片段的文本内容
returnPreAudioInt (选填) 返回违规片段的音频链接:
0:返回违规音频片段的音频链接1:返回违规音频前 10 秒片段的音频链接
字段 类型 描述 callbackAddrString 接收语音审核结果的 HTTP 服务器地址。 apiDataObject 向语音审核服务传入的字段值,包含以下字段。 apiData.accessKeyString 依图的 Dev ID。 apiData.secretKeyString 依图的 Dev Key。 apiData.bizTypeString 依图的 App ID。在依图后台内容审核 > 记录查询页面创建 App,然后在同页面右上角点击复制 ID 获取该 App ID。 apiData.callbackSeedString 默认为空。随机字符串,用于回调通知请求中的签名。 字段名称 类型 是否必须 描述 secretIdString 是 图普控制台开通的审核应用 id。 callbackString 是 接收审核结果的回调地址。 timestampNumber 是 时间戳,用于签名。 nonceNumber 是 随机数,用于签名(整数或浮点数)。 signatureString 是 签名。 callbackRulesNumber 否 回调规则,默认为 0(有违规才回调),需要回调所有结果可设置为 1。 roomIdString 否 可选参数,用于透传回去。 userIdString 否 可选参数,用于透传回去。 forumIdString 否 可选参数,用于透传回去。 图普采用的数字证书签名算法是:
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" | 子模块状态异常。 |