# SparkChain 实时语音转写 Linux SDK集成文档
# 1. 实时语音转写简介
实时语音转写(Real-time ASR)基于深度全序列卷积神经网络框架,通过 WebSocket 协议,建立应用与语言转写核心引擎的长连接,开发者可实现将连续的音频流内容,实时识别返回对应的文字流内容。 支持的音频格式: 采样率为16K,采样深度为16bit,单声道的pcm音频
注意:在使用该能力前,需要开通相应的授权。
# 2. 兼容性说明
类别 | 兼容范围 |
---|---|
系统 | 支持x86,x86_64,arm和arm64架构,支持交叉编译,适配常见芯片型号。 |
开发环境 | 建议使用 VS Studio 进行开发 |
# 3. SDK集成包目录结构
将SDK zip包解压缩,得到如下文件:
├── Demo SparkChain的使用DEMO,DEMO中已经集成了SDK,您可以参考DEMO,集成SDK。集成前,请先测通DEMO,了解调用原理。
├── ReleaseNotes.txt SDK版本日志
├── SDK SparkChain SDK
│ └── libSparkChain.so (opens new window)
└── SparkChain 实时语音转写 Linux SDK集成文档.pdf SparkChain集成指南
# 4. SDK工程配置
# 4.1 导入SDK库
将SDK/libs文件夹、头文件文件夹include存放到项目中,并在环境变量里添加库路径;
#include "../../include/sparkchain.h"
#include "../../include/sc_rtAsr.h"
# 4.2 配置权限
如果需要存储日志,SDK日志路径需要读写权限,缺少读写权限,日志将无法正常存储。
# 5. 接口流程调用图
# 6. SDK 初始化
在使用SparkChain 实时语音转写功能前,需要首先开通实时语音转写功能授权并获取已开通授权的应用信息(appId、apiKey、apiSecret)。SDK全局只需要初始化一次。 初始化时,开发者需要构建一个SparkChainConfig实例config,把相关的appid信息以及日志设置等传入config中,然后再通过SparkChain::init(config)方法把config实例设置到SDK中。SparkChainConfig 结构如下:
class SPARKCHAIN_API SparkChainConfig {
public:
static SparkChainConfig* builder();
virtual ~SparkChainConfig();
//配置appid
virtual SparkChainConfig* appID(const char* appid) = 0;
//配置apiKey
virtual SparkChainConfig* apiKey(const char* apiKey) = 0;
//配置apiSecret
virtual SparkChainConfig* apiSecret(const char* apiSecret) = 0;
//配置用户自定义标识
virtual SparkChainConfig* uid(const char* uid) = 0;
//配置SDK工作路径
virtual SparkChainConfig* workDir(const char* workDir) = 0;
//配置日志等级
virtual SparkChainConfig* logLevel(int logLevel ) = 0;
//配置日志存储路径
virtual SparkChainConfig* logPath(const char* logPath) = 0;
};
初始化参数说明:
接口名称 | 含义 | 参数类型 | 限制 | 是否必填 |
---|---|---|---|---|
appID | 创建应用后,生成的应用ID | const char* | 与平台生成的appID完全一致 | 是 |
apiKey | 创建应用后,生成的唯一应用标识 | const char* | 与平台生成的apiKey完全一致 | 是 |
apiSecret | 创建应用后,生成的唯一应用秘钥 | const char* | 与平台生成的apiSecret完全一致 | 是 |
logLevel | 日志等级 | int | 枚举,0:VERBOSE,1:DEBUG,2:INFO,3:WARN,4:ERROR,5:FATAL,100:OFF | 否 |
logPath | 日志存储路径,设置则会把日志存在该路径下,不设置则会把日志打印在终端上 | const char* | 设置的路径需要有读写权限 | 否 |
uid | 用户自定义标识 | const char* | 否 |
初始化返回值:0:初始化成功,非0:初始化失败,请根据具体返回值参考错误码章节查询原因。
具体示例如下:
SparkChainConfig* config = SparkChainConfig::builder();
config->appID("$appId")
->apiKey("$apiKey")
->apiSecret("$apiSecret");//从平台获取的授权appid,apikey,apisecrety
int ret = SparkChain::init(config);
# 7. 实时语音转写初始化
在使用实时语音转写功能前,需先通过其构造方法RTASR()方法构建其实例,然后用该实例调用相应的方法去设置转写参数。
实时语音转写构造方法如下:
class SPARKCHAIN_API RTASR {
public:
RTASR(const string apiKey);
}
构造方法参数说明:
方法名 | 参数名 | 类型 | 说明 |
---|---|---|---|
RTASR | apikey | const string | apikey,用于建立链接时鉴权。可从开放平台 (opens new window)查看。 注意,该值与SDK初始化时传入apiKey不同。 |
具体示例如下:
RTASR rtasr(RTAsrAPIKey);//RTASR 初始化
# 8. 功能参数配置
SDK支持用户根据自身需求,通过构建的RTASR实例访问相关方法配置转写参数。具体方法说明如下:
方法名 | 形参名 | 形参类型 | 说明 | 是否必填 | 默认值 |
---|---|---|---|---|---|
lang | lang | string | 实时语音转写语种,不传默认为中文。若未授权无法使用会报错10110 | 否 | cn |
transType | transType | string | normal表示普通翻译。注意:需控制台开通翻译功能 | 否 | normal |
transStrategy | transStrategy | int | 策略1,转写的vad结果直接送去翻译; 策略2,返回中间过程中的结果; 策略3,按照结束性标点拆分转写结果请求翻译; 建议使用策略2。 注意:需控制台开通翻译功能 | 否 | 2 |
targetLang | targetLang | string | 目标翻译语种:控制把源语言转换成什么类型的语言; 请注意类似英文转成法语必须以中文为过渡语言,即英-中-法,暂不支持不含中文语种之间的直接转换; 中文:cn 英文:en 日语:ja 韩语:ko 俄语:ru 法语:fr 西班牙语:es 越南语:vi 广东话:cn_cantonese | 否 | 如果不传,则默认不使用翻译,即没有翻译结果返回 |
punc | punc | string | 标点过滤控制,默认返回标点,punc=0会过滤结果中的标点 | 否 | 不传则默认返回标点 |
pd | pd | string | 垂直领域个性化参数: 法院: court 教育: edu 金融: finance 医疗: medical 科技: tech 运营商: isp 政府: gov 电商: ecom 军事: mil 企业: com 生活: life 汽车: car | 否 | 不设置参数默认为通用 |
vadMdn | vadMdn | int | 远近场切换,不传此参数或传1代表远场,传2代表近场 | 否 | 不传默认为远场 |
roleType | roleType | int | 是否开角色分离,默认不开启,传2开启 (效果持续优化中) | 否 | 不开启 |
engLangType | engLangType | int | 语言识别模式,默认为模式1中英文模式: 1:自动中英文模式 2:中文模式,可能包含少量英文 4:纯中文模式,不包含英文 | 否 | 1 |
具体配置示例如下:
rtasr.transType("normal");
rtasr.transStrategy(2);
...
rtasr.lang("cn");
rtasr.targetLang("en");
# 9. 注册结果监听回调
实时语音转写运行结果通过RTASRCallbacks异步返回,接口定义如下:
class SPARKCHAIN_API RtAsrCallbacks {
public:
virtual void onResult(RtAsrResult* result, void* usrTag) = 0;
virtual void onError(RtAsrError* error, void* usrTag) = 0;
};
RtAsrCallbacks数据结构说明:
onResult为实时语音转写结果回调方法,参数说明如下:
参数 类型 说明 result RtAsrResult* 实时语音转写结果实例 usrTag void* 用户自定义标识 RtAsrResult结构说明:
方法 返回值类型 说明 data() string 转写结果 rawResult() string 云端下发的原始json结果 status() int 数据状态:
0:此次返回翻译结果。(此时仅翻译有结果,data无结果)
1:流式识别结果
2:子句plain结果
3:endsid() string 本次交互的sid transResult().src() String 翻译的源文本 transResult().dst() String 翻译结果 transResult().status() int 翻译状态:
2:翻译的plain结果onError为实时语音转写错误回调,参数说明如下:
参数 类型 说明 error RtAsrError 错误信息结果实例 usrTag void* 用户自定义标识 RtAsrError结构说明:
方法 返回值类型 说明 code() int 错误码 errMsg() string 错误信息 sid() string 交互的Sid
具体示例如下:
class RtAsrCallbacksImpl :public RtAsrCallbacks{
void onResult(RtAsrResult* result, void* usrTag){
int status = result->status();//数据状态。0:此次返回翻译结果;1:流式结果;2:子句plain结果;3:end结束
string sid = result->sid();//本次交互的sid
string rawResult = result->rawResult();//云端下发的原始json结果
string data = result->data();//转写结果
string src = result->transResult()->src();//翻译源文本
string dst = result->transResult()->dst();//翻译结果
}
void onError(RtAsrError* error, void* usrTag){
string sid = error->sid();//本次交互的sid
int code = error->code();//错误码
string errMsg = error->errMsg();//错误信息
}
};
RtAsrCallbacksImpl *mRTASRCallbacks = new RtAsrCallbacksImpl();
rtasr.registerCallbacks(mRTASRCallbacks);
# 10. 请求调用
# 10.1 开启会话
开发者注册完监听回调后,可通过mRTASR.start()方法开启会话。请求调用接口如下:
class SPARKCHAIN_API RTASR {
public:
int start(void* usrTag = nullptr);
}
start方法结构说明:
参数 | 类型 | 说明 |
---|---|---|
usrTag | void* | 用户自定义标识 |
具体示例如下:
rtasr.start();
# 10.2 送入数据
启动会话后,开发者可通过rtasr.write()方法送入要识别的音频,然后异步从监听回调中获取识别结果。write方法调用接口如下:
class SPARKCHAIN_API RTASR {
public:
int write(const char* data, size_t len);
}
write方法参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | const char* | 识别音频 注意: 1.建议音频流每40ms发送1280字节,发送过快可能导致引擎出错; 2.音频发送间隔超时时间为15秒,超时服务端报错并主动断开连接。 |
具体示例如下:
char * data = new char[1280];
...//省略获取音频的过程
rtasr.write(data,1280);
# 10.3 结束会话
当开发者送完数据后,需要调用rtasr.stop()方法通知SDK层以及云端数据已传完。之后云端则会下发最终的识别结果,然后结束本轮交互。stop方法调用接口如下:
class SPARKCHAIN_API RTASR {
public:
int stop();
}
具体示例如下:
rtasr.stop(); //停止
# 11. 逆初始化
当SDK需要完整退出时,需调用逆初始化方法释放资源,示例代码如下:
SparkChain::unInit(); //SDK逆初始化
# 12. SDK API介绍
# 12.1 SparkChainConfig API
返回值类型 | 方法说明 |
---|---|
SparkChainConfig* | virtual SparkChainConfig* appID(const char* appid) = 0 设置用户的appID |
SparkChainConfig* | virtual SparkChainConfig* apiKey(const char* apiKey) = 0 设置用户的apiKey |
SparkChainConfig* | virtual SparkChainConfig* apiSecret(const char* apiSecret) = 0 设置用户的apiSecret |
SparkChainConfig* | virtual SparkChainConfig* uid(const char* uid) = 0 设置用户自定义标识 |
SparkChainConfig* | virtual SparkChainConfig* workDir(const char* workDir) = 0 设置SDK工作路径 |
SparkChainConfig* | virtual SparkChainConfig* logLevel(int logLevel ) = 0 设置日志等级 |
SparkChainConfig* | virtual SparkChainConfig* logPath(const char* logPath) = 0 设置日志保存路径 |
SparkChainConfig* | static SparkChainConfig* builder() 构建SparkChain实例 |
# 12.2 SparkChain API
返回值类型 | 方法说明 |
---|---|
int32_t | SPARKCHAIN_API int32_t init(SparkChainConfig* config) SDK初始化 |
int32_t | SPARKCHAIN_API int32_t unInit() SDK逆初始化 |
# 12.3 RTASR API
返回值类型 | 方法说明 |
---|---|
int | int start(void* usrTag = nullptr) 启动会话 |
int | int write(const char* data, size_t len) 输入数据 |
int | int stop() 结束会话 |
void | void lang(string lang) 设置识别的语种 |
void | void transType(string transType) 设置翻译类型 |
void | void transStrategy(int transStrategy) 设置翻译策略 |
void | void targetLang(string targetLang) 设置翻译方向的语种 |
void | void punc(string punc) 标点过滤控制 |
void | void pd(string pd) 垂直领域个性化参数 |
void | void vadMdn(int vadMdn) 远近场切换 |
void | void roleType(int roleType) 是否开角色分离 |
void | void engLangType(int engLangType) 语言识别模式 |
void | void registerCallbacks(RtAsrCallbacks* cbs) 注册实时语音转写的结果监听回调 |
# 12.4 RTASRResult API
返回值类型 | 方法说明 |
---|---|
string | virtual string rawResult() = 0 云端返回的原始结果 |
RtTransResult | virtual RtTransResult* transResult() = 0 获取翻译结果实例 |
string | virtual string data() = 0 获取识别结果 |
int | virtual int status() = 0 获取数据状态 |
string | virtual string sid() = 0 获取交互sid |
# 12.5 RTASRError API
返回值类型 | 方法说明 |
---|---|
int | virtual int code() = 0 获取错误码 |
string | virtual string errMsg() = 0 获取错误信息 |
string | virtual string sid() = 0 获取交互sid |
# 12.6 RTASRTransResult API
返回值类型 | 方法说明 |
---|---|
int | virtual int status() = 0 获取翻译数据状态 |
string | virtual string src() = 0 获取翻译源文本 |
string | virtual string dst() = 0 获取翻译结果 |
# 13. 错误码
错误码包含SDK错误码和云端错误码。
# 13.1 SDK错误码
错误码 | 含义 | 自查指南 |
---|---|---|
0 | 操作成功 | |
18000 | 本地license文件不存在 | 检查工作目录下是否存在license文件,或者该目录是否有读写权限 |
18001 | 授权文件内容非法 | 授权文件存在问题,请联系技术支持询问 |
18002 | 授权文件解析失败 | 授权文件可能存在损坏,请联系技术支持询问 |
18003 | payload内容缺失 | 授权文件存在问题,请联系技术支持询问 |
18004 | signature内容缺失 | 授权文件存在问题,请联系技术支持询问 |
18005 | 授权已过期 | 授权时间过期,请检查系统时间是否是当前时间,并联系技术支持询问 |
18006 | 授权时间错误,比正常时间慢30分钟以上 | 请检查系统时间是否正确 |
18007 | 授权应用不匹配(apiKey、apiSecret) | apiKey、apiSecret 配置有误,请核对项目中配置的 apiKey、apiSecret 。 |
18008 | 授权文件激活过期 | 授权文件已超过15天未激活,需要联系相关人员重新生成离线授权文件 |
18009 | 授权app信息指针为空 | |
18010 | 离线授权激活文件指定平台与设备平台不匹配 | 授权文件里预置的平台架构与实际运行的设备的平台架构不一致 |
18011 | 离线授权激活文件指定架构与设备cpu架构不匹配 | 授权文件里预置的cpu架构与实际运行的设备的cpu架构不一致 |
18012 | 离线授权激活文件中包含License个数异常 | 离线授权文件异常,请联系相关人员重新生成离线授权文件 |
18013 | 离线授权激活文件中未找到当前设备 | 当前运行的设备的设备指纹不在离线授权文件中,请检查该设备的设备指纹是否在提供的指纹池中 |
18014 | 离线授权激活文件中设备指纹安全等级非法 | 请联系技术支持调整该appid的设备指纹等级 |
18015 | 硬件授权验证失败 | 硬件授权验证失败,请联系相关人员处理 |
18016 | 离线授权激活文件内容非法 | 离线授权文件被修改,请联系相关人员重新生成离线授权文件 |
18017 | 离线授权激活文件中协议头非法 | 离线授权文件被修改,请联系相关人员重新生成离线授权文件 |
18018 | 离线授权激活文件中指纹组成项个数为0 | 离线授权文件生成异常,请联系相关人员重新生成离线授权文件 |
18019 | 资源已过期 | 资源的时间校验已过期,请联系相关人员增加授权时间 |
18100 | 资源鉴权失败 | 资源鉴权失败,请联系相关人员处理 |
18101 | 资源格式解析失败 | 资源格式解析失败,请联系相关人员处理 |
18102 | 资源(与引擎)不匹配 | 资源(与引擎)不匹配,请检查资源是否用错,如果未用错,请联系相关人员处理 |
18103 | 资源参数不存在(指针为NULL) | 资源参数不存在,请检查资源是否正确 |
18104 | 资源路径打开失败 | 资源路径打开失败,请检查工作目录下是否存在该资源,或者该资源是否存在读写权限 |
18105 | 资源加载失败,workDir内未找到对应资源 | 请检查workDir中是否存在此资源,或者resDir是否设置正确,或者app是否有改路径的读写权限 |
18106 | 资源卸载失败, 卸载的资源未加载过 | 资源卸载失败, 卸载的资源未加载过 |
18200 | 引擎鉴权失败 | 引擎鉴权失败,引擎存在问题。请联系技术支持询问 |
18201 | 引擎动态加载失败 | 引擎动态加载失败,请联系技术支持询问 |
18202 | 引擎未初始化 | 引擎在使用前,需要调用engineInit初始化 |
18203 | 引擎不支持该接口调用 | 引擎不支持该接口调用,请查询对应的能力文档,使用正确的方法调用 |
18204 | 引擎craete函数指针为空 | 引擎存在问题,请联系技术支持询问 |
18300 | SDK不可用 | SDK存在异常,请联系技术支持询问 |
18301 | SDK未初始化 | 在使用大模型前请先初始化 SDK,如果有调用 uninit 方法,再次使用大模型交互时需要重新初始化。 |
18302 | SDK初始化失败 | 请根据init接口回调中返回的错误码参考此文档做对应检查 |
18303 | SDK 已经初始化 | 重复初始化导致,使用能力时,SDK 只需要初始化一次,请检查 SDK 初始化逻辑是否存在多次初始化。 |
18304 | 不合法参数 | 请参考demo及集成文档仔细检查所传参数是否正确。 |
18305 | SDK会话handle为空 | 请检查代码逻辑,handle是否被释放 |
18306 | SDK会话未找到 | SDK会话未找到 |
18307 | SDK会话重复终止 | SDK会话重复终止,请检查代码逻辑 |
18308 | 超时错误 | 请求超时 |
18309 | SDK正在初始化中 | SDK正在初始化中,请检查代码逻辑 |
18310 | SDK会话重复开启 | SDK会话重复开启,请检查代码逻辑 |
18311 | sdk同一能力并发路数超出最大限制 | sdk同一能力并发路数超出最大限制 |
18312 | 此实例已处在运行态,禁止单实例并发运行 | SDK同一能力单实例不支持并发 |
18400 | 工作目录无写权限 | 在设置 workDir 时,请确保该工作路径有读写权限。若无法设置读写权限,请修改为有读写权限的工作路径。 |
18401 | 设备指纹获取失败,设备未知 | 采集不到设备指纹 |
18402 | 文件打开失败 | 请检查 日志中所打印的文件是否存在,以及对应路径下是否有读权限。 |
18403 | 内存分配失败 | 请联系技术支持询问 |
18404 | 设备指纹比较失败 | 请联系技术支持询问 |
18500 | 未找到该参数 key | 请参照demo或集成文档仔细检查参数名拼写 |
18501 | 参数范围溢出,不满足约束条件 | 请根据文档检查调用 SDK 方法时所传参数范围,需要确保所传参数符合协议约束要求 |
18502 | SDK 初始化参数为空 | 请根据 SDK 集成文档检查 SDK 初始化代码,确保必填参数有值且合法 |
18503 | SDK 初始化参数中 appId 为空 | appId 为空值,请在 SDK 初始化时传入正确的 appId 值 |
18504 | SDK 初始化参数中 apiKey为空 | apiKey为空值,请在 SDK 初始化时传入正确的 apiKey值 |
18505 | SDK 初始化参数中 apiSecret 为空 | apiSecret 为空值,请在 SDK 初始化时传入正确的 apapiSecret 值 |
18506 | ability参数为空 | 请检查代码逻辑,参数是否未传入 |
18507 | input参数为空 | 请检查代码逻辑,参数是否未传入 |
18508 | 输入数据参数Key不存在 | 请检查代码逻辑,参数key是否不符合该引擎 |
18509 | 必填参数缺失 | 请参考demo或者文档检查是否漏传必填参数 |
18510 | output参数缺失 | 引擎输出参数异常,请联系技术支持询问 |
18520 | 不支持的编解码类型 | 请检查送入的数据是否符合要求 |
18521 | 编解码handle指针为空 | 请检查代码逻辑,handle是否被释放 |
18522 | 编解码模块条件编译未打开 | 请联系技术支持询问 |
18523 | 编码错误 | 请联系技术支持询问 |
18524 | 解码错误 | 请联系技术支持询问 |
18600 | 协议中时间戳字段缺失 | 协议文件异常,请联系技术支持询问 |
18601 | 协议中未找到该能力ID | 调用的能力不在该SDK中,请检查SDK是否使用错误,或者调用能力id是否写错 |
18602 | 协议中未找到该资源ID | appid没有该资源的使用权限 |
18603 | 协议中未找到该引擎ID | 协议存在问题,请联系技术支持询问 |
18604 | 协议中引擎个数为0 | 协议存在问题,请联系技术支持询问 |
18605 | 协议未被初始化解析 | 协议存在问题,请联系技术支持询问 |
18606 | 协议能力接口类型不匹配 | 协议存在问题,请联系技术支持询问 |
18607 | 预置协议解析失败 | 协议存在问题,请联系技术支持询问 |
18700 | 通用网络错误 | 请检查网络连接是否正常 |
18701 | 网络不通 | 请检查网络连接是否正常 |
18702 | 网关检查不过 | 检查设备时间是否正确; 请检查 SDK 初始化时所传 apiKey、apiScrect 是否正确; |
18703 | 云端响应格式不对 | 请检查网络是否可以正常访问外网 |
18704 | 应用未注册 | appid存在问题,请检查 appid 是否正确 |
18705 | 应用 ApiKey & ApiSecret 校验失败 | 请检查 apiKey、apiSecret 是否正确 |
18706 | 引擎不支持的平台架构 | 请检查运行的设备平台引擎是否支持 |
18707 | 授权已过期 | 请检查授权期限 |
18708 | 无可用授权 | 没有授权或者授权已满 |
18709 | 未找到该app绑定的能力 | 请检查该appid是否申请该能力 |
18710 | 未找到该app绑定的能力资源 | 该appid没有该资源的使用权限,请联系技术支持询问 |
18711 | JSON操作失败 | 请联系技术支持询问 |
18712 | 网络请求 404 错误 | 请检查网络是否通畅 |
18713 | 设备指纹安全等级不匹配 | 设备指纹安全等级不符合要求 |
18714 | 应用信息有误 | 服务端无法查询到api_key,请检查api_key和api_secret信息是否填写正确 |
18715 | 未找到该SDK ID | SDK异常,请联系技术支持询问 |
18716 | 未找到该组合能力集合 | 请检查使用的能力是否是该appid所申请的能力 |
18717 | SDK授权不足 | 授权数量已满 |
18718 | 无效授权应用签名 | 应用签名异常,请联系技术支持询问 |
18719 | 应用签名不唯一 | 应用签名异常,请联系技术支持询问 |
18720 | 能力schema不可用 | 请联系技术支持询问 |
18721 | 竞争授权: 未找到能力集模板 | 请联系技术支持询问 |
18722 | 竞争授权: 能力不在模板能力集模板中 | 请联系技术支持询问 |
18801 | 连接建立出错 | 请检查网络是否通畅 |
18802 | 结果等待超时 | 请检查网络是否通畅 |
18803 | 连接状态异常 | 请检查网络是否通畅 |
18902 | 并发超过路数限制 | 不支持并发 |
18903 | 大模型规划步骤为空 | 请检查请求数据的意图是否明确 |
18904 | 插件未找到 | 请检查是否使用了未存在的插件 |
18906 | 与大模型交互次数超限制 | |
18907 | 运行超限制时长 | |
18908 | 大模型返回结果格式异常 | 可能是因为大模型结果太多,导致30秒内没有返回完,从而引起SDK内部认为超时,建议使用异步调用。 |
18951 | 同一流式大模型会话,禁止并发交互请求 | |
18952 | 输入数据为空或异常 | |
19001 | 设备级授权: 设备被禁用 | |
19002 | 设备级授权: 协议解析失败 | |
19003 | 设备级授权: 本地缓存获取失败 | |
19004 | 设备级授权: 无网络 | |
19005 | 设备级授权: 授权未找到 | |
19006 | 设备级授权: 设备授权获取失败 | |
19007 | 设备级授权: 当前设备处于黑名单 | |
19008 | 设备级授权: 当前设备不在白名单 | |
19010 | 设备级授权: 鉴权参数非法 | |
20011 | 设备级授权: 不匹配的appid |
# 13.2 部分云端错误码
备注:如出现下述列表中没有的错误码,可到 这里 (opens new window) 查询。
错误码 | 描述 | 说明 | 处理方式 |
---|---|---|---|
0 | success | 成功 | |
10105 | illegal access | 没有权限 | 检查apiKey,ip,ts等授权参数是否正确 |
10106 | invalid parameter | 无效参数 | 上传必要的参数, 检查参数格式以及编码 |
10107 | illegal parameter | 非法参数值 | 检查参数值是否超过范围或不符合要求 |
10110 | no license | 无授权许可 | 检查参数值是否超过范围或不符合要求 |
10700 | engine error | 引擎错误 | 提供接口返回值,向服务提供商反馈 |
10202 | websocket connect error | websocket连接错误 | 检查网络是否正常 |
10204 | websocket write error | 服务端websocket写错误 | 检查网络是否正常,向服务提供商反馈 |
10205 | websocket read error | 服务端websocket读错误 | 检查网络是否正常,向服务提供商反馈 |
16003 | basic component error | 基础组件异常 | 重试或向服务提供商反馈 |
10800 | over max connect limit | 超过授权的连接数 | 确认连接数是否超过授权的连接数 |