SDK错误代码说明
错误代码:
返回值
说明
建议
10000
请求参数错误
请检查Init接口corpid、secret参数。检查GetChatData接口limit参数是否未填充或大于1000。检查GetMediaData接口sdkfileid是否为空,indexbuf是否正常
10001
网络请求错误
请检查网络是否有异常、波动。使用代理时,请确保代理参数设置了正确的用户名和密码
10002
数据解析失败
建议您重试请求。
若仍失败,可以反馈给企业微信进行查询,请提供sdk接口参数与调用时间点等信息10003
系统调用失败
GetMediaData调用失败,建议重试请求。若仍失败,可以反馈给企业微信进行查询,请提供sdk接口参数与调用时间点等信息
10004
已废弃
目前不会返回此错误码
10005
fileid错误
检查在GetMediaData接口传入的sdkfileid是否正确
10006
解密失败
请检查是否先进行base64decode再进行rsa私钥解密,再进行DecryptMsg调用
10007
已废弃
目前不会返回此错误码
10008
DecryptMsg错误
建议重试请求。若仍失败,可以反馈给企业微信进行查询,请提供sdk接口参数与调用时间点等信息
10009
ip非法
请检查sdk访问外网的ip是否与管理端设置的可信ip匹配,若不匹配会返回此错误码
10010
请求的数据过期
用户欲拉取的数据已过期,仅支持近5天内的数据拉取
10011
ssl证书错误
使用openssl版本sdk,校验ssl证书失败
常见问题解答 Q:是否每次调用都需要new sdk,init sdk? A:不需要,首次new sdk后,可以在多次的拉取会话记录/拉取媒体数据,使用同一个sdk进行处理.
Q:corpid/secret 在哪里获取? A: corpid信息在企业微信管理端--我的企业--企业信息查看,secret在企业微信管理端--管理工具--会话内容存档查看
Q:如何拉取指定seq的消息? A:通过seq跟limit来确认拉取消息的范围,每次拉取的是seq+1开始的limit条消息
Q:拉取消息的时间范围与条数范围? A:企业微信只提供5天内的消息拉取,即:从发起拉取的时候往前推5天的消息。如果传入的seq不属于5天内,则从5天内的第一个消息的seq开始拉取。每次最多提供1000条消息的拉取
Q:服务部署在内网,如何拉取? A:通过参数来设置代理进行拉取。支持http代理与sock5代理
Q:管理端填入的ip地址是否可以不填? A:必须填写,企业微信会对ip地址的访问进行限制。对于使用方而言,需要设置其公网ip,企业微信后台收到的请求,会校验调用方的ip与管理端填写的ip是否匹配。
Q:管理端填入的消息加密公钥格式? A:管理端填入RSA2048产生的公钥,后续使用pkcs1进行加密。每次上传公钥都会生成一个公钥版本号,在后续的拉取消息接口中,每条消息都会指明使用的加密公钥版本号。
Q:拉取的消息如何解密? A:企业微信对待存储的消息使用企业最新上传的公钥进行加密,企业自行使用对应版本的私钥进行解密。对json消息体内的encrypt_random_key,base64处理后首先使用对应版本的私钥进行解密得到字符串内容,将字符串内容与消息体内的encrypt_chat_msg,使用sdk的接口DecryptData,得到真正的明文消息。
Q:如何生成秘钥对? A:建议使用openssl 来生成rsa pkcs1 2048格式的公私钥。例如可使用:openssl genrsa -out 2048 来生成私钥,并使用openssl rsa -in -pubout -out 从私钥来产生公钥。
Q:so放置在什么地方? A:建议将so放置在系统路径:LD_LIBRARY_PATH指定的路径内,或者将so所在的目录加入到LD_LIBRARY_PATH的路径范围内。
Q:消息体内的from tolist roomid是什么含义? A:如果是单聊:from表示消息发送方、tolist内只有一个消息接收方,roomid为空;如果是群聊:from表示消息发送方,tolist为群内其他成员id,roomid非空;无论消息的发送方还是接收方,如果是本企业成员,则为userid,否则为exteranalopenid
Q:消息何时进行存储? A:如果是金融版企业成员,则所有会话均会存储,包括发送给本企业或者外部企业/微信的会话消息;如果是非本企业的外部用户与本企业成员会话,则只有外部用户同意了当前会话的存储,才会进行存储(不同意存储也可以进行会话)。外部用户的同意,以会话为粒度(单聊或群聊)。
Q:如果群聊内有多个金融版企业,消息如何存储? A:如果外部用户同时与多个金融版企业成员所在的群聊进行会话,那么外部用户会收到不同金融版企业的存储邀请,外部用户同意了哪个金融版企业,会话消息才存储到哪个金融版企业。
Q:如何处理sdk接口调用失败? A:如果出现拉取会话记录、媒体数据失败的情况,建议进行相同参数下一定次数的请求重试。
Q:媒体消息的格式分别是什么? A:图片是jpg格式、语音是amr格式、视频是mp4格式、文件格式类型包括在消息体内,表情分为动图与静态图,在消息体内定义。
Q:提供什么版本的sdk? A:目前提供c版本的so以及JAVA版本的so。Java版本使用jni的方式来进行调用。
Q:为什么发出某些表情得到的是文本消息? A:对于系统内置的表情,是以文本消息的形式发送的,存储的也是文本消息
Q:媒体消息下载也有时间限制吗? A:是的,类似会话记录,也只能拉取5天内的媒体消息内容
Q:支持的消息类型是否覆盖了所有的消息类型? A:目前提供了常用的10+类消息类型的导出,后续如果有新消息类型的产生,也会及时的进行新消息类型的导出。对于目前不识别的消息类型,统一使用:【未知消息类型】的文本消息类型来表示。
Q:是否可以重复拉取消息? A:目前是可以的,支持重入,相同的seq与limit可以多次拉取,但是有频率限制控制。如果过快的拉取,可能会返回失败。
Q:sdk是什么环境的? A:sdk支持linux跟windows环境。
Q:会话记录消息格式是什么? A:通过sdk接口拉取的会话记录为json格式,使用私钥解密后调用sdk接口获取到的消息明文也是json格式。
Q:何时开始存储消息? A:管理端上传秘钥进行开通金融版功能后,企业成员的客户端会被强制要求同意使用金融版。同意使用的企业成员,发出的消息会开始被进行存储。
Q:为什么拉取到的媒体数据不完整? A:请确认下同一个媒体文件,是否是追加写。如果每次覆盖,则得到的文件是最后一个分片的内容。
Q:返回非0错误码如何处理? A:无论对于拉取会话记录,还是拉取媒体消息。如果返回码是10001-10003的错误码,建议原参数重试。
Q:错误码列表如何查看? A:在SDK的头文件内,有错误码列表以及错误码含义解释。
Q:为什么会返回10001错误? A:10001是网络错误,请校验下是否使用代理访问;是否放开了80 443端口。
Q:如何表明已经拉取完会话数据? A:通过GetChatData接口拉取的会话数据,若返回的json结构中,chatdata为空,则表明已拉取完成会话数据。
Q:JAVA版本的sdk报错UnsatisfiedLinkError? A:请检查是否修改了sdk的包名。
Q:SDK返回access_token missing? A:请检查初始化接口中corpid/secret是否填写正确;请检查是否每次都进行了sdk的初始化与销毁,不必每次进行sdk的初始化与销毁。