Skip to content

Shunlly/we_work_sdk

Repository files navigation

WeWork Finance SDK

企业微信会话内容存档 Python SDK,用于获取和解密企业微信的聊天记录。

功能特性

  • 支持企业微信会话内容存档API
  • 自动解密聊天消息
  • 支持多版本私钥管理
  • 支持获取媒体文件(图片、语音、视频等)
  • 支持批量获取聊天记录
  • 支持群聊和单聊消息处理

安装依赖

pip install pycryptodome

使用方法

基本使用

from we_work_sdk import WeWorkFinanceSDK

# 初始化SDK
sdk = WeWorkFinanceSDK(
    corp_id="你的企业ID",
    corp_secret="你的应用Secret",
    private_keys=["private_key.pem"]  # 私钥文件路径或私钥内容
)

# 获取聊天记录
chat_data = sdk.get_chat_data(seq=0, limit=1000)

# 获取媒体文件
media_data = sdk.get_media_data("sdkfileid")

高级用法

# 支持多版本私钥
sdk = WeWorkFinanceSDK(
    corp_id="企业ID",
    corp_secret="应用Secret",
    private_keys=[
        "version1_private_key.pem",  # 版本1私钥
        None,                        # 版本2无私钥
        "version3_private_key.pem"   # 版本3私钥
    ]
)

# 获取所有聊天记录并按群组织
all_messages = sdk.main()

文件结构

.
├── README.md                    # 项目说明文档
├── we_work_sdk.py              # 主要SDK实现
├── WeWorkFinanceSdk_C.h        # C库头文件
├── libWeWorkFinanceSdk_C.so    # C库动态链接库
├── private_key.pem             # 私钥文件(示例)
└── public_key.pem              # 公钥文件(示例)

API 说明

WeWorkFinanceSDK

主要的SDK类,提供以下方法:

__init__(corp_id, corp_secret, private_keys)

初始化SDK实例。

参数:

  • corp_id: 企业ID
  • corp_secret: 企业会话内容存档密钥
  • private_keys: 私钥列表,按版本顺序提供

get_chat_data(seq, limit=1000, all_data=None)

获取聊天记录,支持递归获取所有数据。

参数:

  • seq: 消息顺序号
  • limit: 一次拉取的消息条数(最大1000)
  • all_data: 用于递归累积数据的列表

返回: 聊天记录列表

get_media_data(sdkfileid)

获取媒体文件的二进制数据。

参数:

  • sdkfileid: 媒体文件ID

返回: 媒体文件的二进制数据

decrypt_chat_msg(publickey_ver, encrypt_random_key, encrypt_chat_msg)

解密聊天消息。

参数:

  • publickey_ver: 公钥版本
  • encrypt_random_key: 加密的随机密钥
  • encrypt_chat_msg: 加密的聊天消息

返回: 解密后的消息JSON对象

支持的消息类型

  • 文本消息 (text)
  • 图片消息 (image)
  • 语音消息 (voice)
  • 视频消息 (video)
  • 名片消息 (card)
  • 位置消息 (location)
  • 表情消息 (emotion)
  • 文件消息 (file)
  • 链接消息 (link)
  • 聊天记录 (chatrecord)

异常处理

SDK定义了以下异常类型:

  • WeWorkSDKInitException: SDK初始化失败
  • WeWorkSDKGetChatDataException: 获取聊天数据失败
  • WeWorkSDKDecryptException: 解密失败
  • WeWorkSDKGetMediaDataException: 获取媒体数据失败

注意事项

  1. 需要确保 libWeWorkFinanceSdk_C.so 文件在正确的路径下
  2. 私钥文件需要是PEM格式
  3. 企业需要开通会话内容存档功能
  4. 需要正确配置企业ID和Secret

平台兼容性

重要说明: 当前项目包含的 libWeWorkFinanceSdk_C.soLinux ARM 架构 的动态链接库。

其他平台支持

  • Linux x86/x64: 如需在 x86 架构的 Linux 系统上运行,请从 企业微信官网 下载对应的 SDK 文件并替换 libWeWorkFinanceSdk_C.so
  • Windows: 目前尚未测试 Windows 平台兼容性,需要下载对应的 Windows SDK 文件(通常为 .dll 文件)并修改代码中的库加载路径
  • macOS: 需要下载对应的 macOS SDK 文件(通常为 .dylib 文件)并替换,目前官网并没有提供

如何更换SDK文件

  1. 访问 企业微信开发者文档
  2. 下载适合您系统架构的SDK包
  3. 将对应的动态链接库文件替换项目中的 libWeWorkFinanceSdk_C.so
  4. 如果是非Linux系统,还需要修改 we_work_sdk.py 中第93行的库文件加载路径

许可证

请遵循企业微信官方的使用条款和相关法律法规。

相关链接

About

企微sdk会话存档

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published