mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-04 12:52:27 +08:00
* 添加企业微信会话存档SDK * 更新说明文档 * 更新包名为msgaudit并更新说明文档 * 迁移会话存档SDK到work目录下 * 移动RSA文件到util并添加动态库文件 * 整合企业微信和会话存档配置文件 * 修复golangcli-lint提示中的错误 * 对整个项目进行gofmt * 更新会话存档说明文档 * 会话存档消息获取是抛出error * 更新会话存档说明文档 Co-authored-by: Afeyer <afeyer@h5base.cn>
96 lines
2.3 KiB
Markdown
96 lines
2.3 KiB
Markdown
企业微信会话存档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)`命令设置动态链接库检索地址后即可正常使用
|
||
|
||
### Example
|
||
|
||
```go
|
||
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.NewWork(&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{}
|
||
for !isFinish {
|
||
//获取媒体数据
|
||
mediaData, err := client.GetMediaData("", sdkfileid, "", "", 5)
|
||
if err != nil {
|
||
fmt.Printf("媒体数据拉取失败:%v \n", err)
|
||
return
|
||
}
|
||
buffer.Write(mediaData.Data)
|
||
if mediaData.IsFinish {
|
||
isFinish = mediaData.IsFinish
|
||
}
|
||
}
|
||
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()
|
||
}
|
||
|
||
|
||
|
||
```
|