package
2.1.8-rc.1
Repository: https://github.com/silenceper/wechat.git
Documentation: pkg.go.dev

# README

企业微信会话存档SDK(基于企业微信C版官方SDK封装),暂时只支持在linux环境下使用当前SDK。

官方文档地址

https://open.work.weixin.qq.com/api/doc/90000/90135/91774

使用方式

1、安装 go module

go get -u github.com/silenceper/wechat/v2

2、从 github.com/silenceper/wechat/v2/work/msgaudit/lib 文件夹下复制 libWeWorkFinanceSdk_C.so 动态库文件到系统动态链接库默认文件夹下,或者复制到任意文件夹并在当前文件夹下执行 export LD_LIBRARY_PATH=$(pwd)命令设置动态链接库检索地址后即可正常使用

3、编译要求

  • 开启CGO: CGO_ENABLED=1
  • 增加tags参数msgauditgo build -tags msgaudit或者go run -tags msgaudit main.go

Example

package main

import (
	"bytes"
	"fmt"
	"github.com/silenceper/wechat/v2"
	"github.com/silenceper/wechat/v2/work/msgaudit"
	"github.com/silenceper/wechat/v2/work/config"
	"io/ioutil"
	"os"
	"path"
)

func main() {
	//初始化客户端
	wechatClient := wechat.NewWechat()

	workClient := wechatClient.GetWork(&config.Config{
		CorpID:        "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
		CorpSecret:    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
		RasPrivateKey: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
	})

	client, err := workClient.GetMsgAudit()
	if err != nil {
		fmt.Printf("SDK 初始化失败:%v \n", err)
		return
	}

	//同步消息
	chatDataList, err := client.GetChatData(0, 100, "", "", 3)
	if err != nil {
		fmt.Printf("消息同步失败:%v \n", err)
		return
	}

	for _, chatData := range chatDataList {
		//消息解密
		chatInfo, err := client.DecryptData(chatData.EncryptRandomKey, chatData.EncryptChatMsg)
		if err != nil {
			fmt.Printf("消息解密失败:%v \n", err)
			return
		}

		if chatInfo.Type == "image" {
			image, _ := chatInfo.GetImageMessage()
			sdkFileID := image.Image.SdkFileID

			isFinish := false
			buffer := bytes.Buffer{}
			indexBuf := ""
			for !isFinish {
				//获取媒体数据
				mediaData, err := client.GetMediaData(indexBuf, sdkFileID, "", "", 5)
				if err != nil {
					fmt.Printf("媒体数据拉取失败:%v \n", err)
					return
				}
				buffer.Write(mediaData.Data)
				if mediaData.IsFinish {
					isFinish = mediaData.IsFinish
				}
				indexBuf = mediaData.OutIndexBuf
			}
			filePath, _ := os.Getwd()
			filePath = path.Join(filePath, "test.png")
			err := ioutil.WriteFile(filePath, buffer.Bytes(), 0666)
			if err != nil {
				fmt.Printf("文件存储失败:%v \n", err)
				return
			}
			break
		}
	}

	//释放SDK实例
	client.Free()
}



# Functions

NewClient new.
NewSDKErr 初始化新的SDK错误.

# Constants

返回码 错误说明 10000 参数错误,请求参数错误 10001 网络错误,网络请求错误 10002 数据解析失败 10003 系统失败 10004 密钥错误导致加密失败 10005 fileid错误 10006 解密失败 10007 找不到消息加密版本的私钥,需要重新传入私钥对 10008 解析encrypt_key出错 10009 ip非法 10010 数据过期 10011 证书错误.
返回码 错误说明 10000 参数错误,请求参数错误 10001 网络错误,网络请求错误 10002 数据解析失败 10003 系统失败 10004 密钥错误导致加密失败 10005 fileid错误 10006 解密失败 10007 找不到消息加密版本的私钥,需要重新传入私钥对 10008 解析encrypt_key出错 10009 ip非法 10010 数据过期 10011 证书错误.
返回码 错误说明 10000 参数错误,请求参数错误 10001 网络错误,网络请求错误 10002 数据解析失败 10003 系统失败 10004 密钥错误导致加密失败 10005 fileid错误 10006 解密失败 10007 找不到消息加密版本的私钥,需要重新传入私钥对 10008 解析encrypt_key出错 10009 ip非法 10010 数据过期 10011 证书错误.
返回码 错误说明 10000 参数错误,请求参数错误 10001 网络错误,网络请求错误 10002 数据解析失败 10003 系统失败 10004 密钥错误导致加密失败 10005 fileid错误 10006 解密失败 10007 找不到消息加密版本的私钥,需要重新传入私钥对 10008 解析encrypt_key出错 10009 ip非法 10010 数据过期 10011 证书错误.
返回码 错误说明 10000 参数错误,请求参数错误 10001 网络错误,网络请求错误 10002 数据解析失败 10003 系统失败 10004 密钥错误导致加密失败 10005 fileid错误 10006 解密失败 10007 找不到消息加密版本的私钥,需要重新传入私钥对 10008 解析encrypt_key出错 10009 ip非法 10010 数据过期 10011 证书错误.
返回码 错误说明 10000 参数错误,请求参数错误 10001 网络错误,网络请求错误 10002 数据解析失败 10003 系统失败 10004 密钥错误导致加密失败 10005 fileid错误 10006 解密失败 10007 找不到消息加密版本的私钥,需要重新传入私钥对 10008 解析encrypt_key出错 10009 ip非法 10010 数据过期 10011 证书错误.
返回码 错误说明 10000 参数错误,请求参数错误 10001 网络错误,网络请求错误 10002 数据解析失败 10003 系统失败 10004 密钥错误导致加密失败 10005 fileid错误 10006 解密失败 10007 找不到消息加密版本的私钥,需要重新传入私钥对 10008 解析encrypt_key出错 10009 ip非法 10010 数据过期 10011 证书错误.
返回码 错误说明 10000 参数错误,请求参数错误 10001 网络错误,网络请求错误 10002 数据解析失败 10003 系统失败 10004 密钥错误导致加密失败 10005 fileid错误 10006 解密失败 10007 找不到消息加密版本的私钥,需要重新传入私钥对 10008 解析encrypt_key出错 10009 ip非法 10010 数据过期 10011 证书错误.
返回码 错误说明 10000 参数错误,请求参数错误 10001 网络错误,网络请求错误 10002 数据解析失败 10003 系统失败 10004 密钥错误导致加密失败 10005 fileid错误 10006 解密失败 10007 找不到消息加密版本的私钥,需要重新传入私钥对 10008 解析encrypt_key出错 10009 ip非法 10010 数据过期 10011 证书错误.
返回码 错误说明 10000 参数错误,请求参数错误 10001 网络错误,网络请求错误 10002 数据解析失败 10003 系统失败 10004 密钥错误导致加密失败 10005 fileid错误 10006 解密失败 10007 找不到消息加密版本的私钥,需要重新传入私钥对 10008 解析encrypt_key出错 10009 ip非法 10010 数据过期 10011 证书错误.
返回码 错误说明 10000 参数错误,请求参数错误 10001 网络错误,网络请求错误 10002 数据解析失败 10003 系统失败 10004 密钥错误导致加密失败 10005 fileid错误 10006 解密失败 10007 找不到消息加密版本的私钥,需要重新传入私钥对 10008 解析encrypt_key出错 10009 ip非法 10010 数据过期 10011 证书错误.
返回码 错误说明 10000 参数错误,请求参数错误 10001 网络错误,网络请求错误 10002 数据解析失败 10003 系统失败 10004 密钥错误导致加密失败 10005 fileid错误 10006 解密失败 10007 找不到消息加密版本的私钥,需要重新传入私钥对 10008 解析encrypt_key出错 10009 ip非法 10010 数据过期 10011 证书错误.
返回码 错误说明 10000 参数错误,请求参数错误 10001 网络错误,网络请求错误 10002 数据解析失败 10003 系统失败 10004 密钥错误导致加密失败 10005 fileid错误 10006 解密失败 10007 找不到消息加密版本的私钥,需要重新传入私钥对 10008 解析encrypt_key出错 10009 ip非法 10010 数据过期 10011 证书错误.

# Structs

AgreeMessage 同意会话聊天内容.
BaseMessage 基础消息.
CalendarMessage 日程消息.
CardMessage 名片消息.
ChatData 会话存档原始数据.
ChatDataResponse 会话存档消息响应数据.
ChatMessage 会话存档消息.
ChatRecord 会话记录消息.
ChatRecordMessage 会话记录消息.
Client 会话存档.
CollectDetails 填表消息.
CollectMessage 填表消息.
Config 会话存档初始化参数.
DemoFileData 文档共享消息.
DocMessage 在线文档消息.
EmotionMessage 表情消息.
Error 错误.
ExternalRedPacketMessage 互通小红包消息.
FileMessage 文件消息.
ImageMessage 图片消息.
LinkMessage 链接消息.
LocationMessage 位置消息.
MarkdownMessage MarkDown消息.
MediaData 媒体文件数据.
MeetingMessage 会议邀请消息.
MeetingVoiceCall 音频存档消息.
MeetingVoiceCallMessage 音频存档消息.
MixedMessage 混合消息.
MixedMsg 混合消息.
News 图文消息.
NewsMessage 图文消息.
RedpacketMessage 红包消息.
RevokeMessage 撤回消息.
ShareScreenData 屏幕共享信息.
SphFeedMessage 视频号消息.
SwitchMessage 企业切换日志.
TextMessage 文本消息.
TodoMessage 待办消息.
VideoMessage 视频消息.
VoiceMessage 语音消息.
VoipDocShare 音频共享文档消息.
VoipDocShareMessage 音频共享消息.
VoteMessage 投票消息.
WeappMessage 小程序消息.