# go-workwx
![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/xen0n/go-workwx)
![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/xen0n/go-workwx)
![GitHub Workflow Status (develop branch)](https://img.shields.io/github/actions/workflow/status/xen0n/go-workwx/go.yml?branch=develop)
[![GitHub license info](https://img.shields.io/github/license/xen0n/go-workwx)](./LICENSE)
[![Go Report Card](https://goreportcard.com/badge/github.com/xen0n/go-workwx)](https://goreportcard.com/report/github.com/xen0n/go-workwx)
[![Go Reference](https://pkg.go.dev/badge/github.com/xen0n/go-workwx.svg)](https://pkg.go.dev/github.com/xen0n/go-workwx)
![GitHub Repo stars](https://img.shields.io/github/stars/xen0n/go-workwx?style=social)
[**本项目需要您的帮助!**][maintainer-needed]
[maintainer-needed]: https://github.com/xen0n/go-workwx/issues/73
```go
import (
"github.com/xen0n/go-workwx" // package workwx
)
```
A Work Weixin (a.k.a. Wechat Work) client SDK for Golang, that happens to be
battle-tested and pretty serious about its types.
In production since late 2018, pushing all kinds of notifications and alerts
in at least 2 of Qiniu's internal systems.
一个 Golang 企业微信客户端 SDK;碰巧在生产环境试炼过,还对类型很严肃。
自 2018 年末以来,在七牛至少 2 个内部系统运转至今,推送各种通知、告警。
> English translation TODO for now, as the service covered here is not available
> outside of China (AFAIK).
## Why another wheel?
工作中需要用 Go 实现一个简单的消息推送,想着找个开源库算了,然而现有唯一的开源企业微信 Golang SDK 代码质量不佳。只好自己写一个。
*Update*: 自从这个库写出来,已经过了很久;现在(2019.08)已经有三四个同类项目了。
不过看了看这些“竞品”,发现自己这个库的类型设计、公开接口、access token 处理等方面还不赖。
为什么人们总是喜欢写死请求 `Host`、用全局量、为拆包而拆包甚至不惜公开内部方法呢?
## Supported Go versions
本库的 v1.x 分支最低支持到 `go1.17`。
CI 会在 `go1.17` 和 Go 的当前稳定版本、上一个稳定版本上跑测试,只有测试全部通过才可能合并 PR。
## Features
* 包名短
* 支持覆盖 API `Host`,用于自己拦一层网关、临时调试等等奇葩需求
* 支持使用自定义 `http.Client`
* access token 处理靠谱
- 你可以直接就做 API 调用,会自动请求 access token
- 你也可以一行代码起一个后台 access token 刷新 goroutine
- 自带指数退避重试
* 严肃对待类型、公开接口
- 公开暴露接口最小化,两步构造出 `WorkwxApp` 对象,然后直接用
- 刻意不暴露企业微信原始接口请求、响应类型
- 后续可能会做一个 `lowlevel` 包暴露裸的 API 接口,但很可能不做
- 不为多态而多态,宁可 SDK 内部重复代码,也保证一个接口一类动作,下游用户 static dispatch
- 个别数据模型做了调整甚至重做(如 `UserInfo`、`Recipient`),以鼓励 idiomatic Go 风格
- *几乎*不会越俎代庖,一言不合 `panic`。**现存的少数一些情况都是要修掉的。**
* 自带一个 `workwxctl` 命令行小工具帮助调试
- 用起来不爽提 issue 让我知道你在想啥
详情看 godoc 文档,还提供 Examples 小段代码可以参考。
## Supported APIs
* [x] 通讯录管理 (**部分支持**,见下)
* [x] 客户联系 (**大部分支持**,见下)
* [ ] 应用管理
* [x] 消息发送 (除修改群聊会话外全部支持)
* [x] 消息接收
* [x] 素材管理 (**支持上传**, 见下)
* [x] OA (**大部分支持**,见下)
* [x] 会话内容存档 (**大部分支持**,见下)
* [x] 企业微信登录接口 (code2Session)
<details>
<summary>通讯录管理 API</summary>
* [ ] 成员管理
- [ ] 创建成员
- [x] 读取成员 *NOTE: 成员对外信息暂未实现*
- [ ] 更新成员
- [ ] 删除成员
- [ ] 批量删除成员
- [ ] 获取部门成员
- [x] 获取部门成员详情
- [ ] userid与openid互换
- [ ] 二次验证
- [ ] 邀请成员
- [ ] 获取加入企业二维码
- [x] 手机号获取userid
- [ ] 邮箱获取userid
- [ ] 获取成员ID列表
* [ ] 部门管理
- [x] 创建部门
- [ ] 更新部门
- [ ] 删除部门
- [x] 获取部门列表
- [x] 获取子部门ID列表
* [ ] 标签管理
- [ ] 创建标签
- [ ] 更新标签名字
- [ ] 删除标签
- [ ] 获取标签成员
- [ ] 增加标签成员
- [ ] 删除标签成员
- [ ] 获取标签列表
* [ ] 异步批量接口
- [ ] 增量更新成员
- [ ] 全量覆盖成员
- [ ] 全量覆盖部门
- [ ] 获取异步任务结果
* [ ] 通讯录回调通知
- [ ] 成员变更通知
- [ ] 部门变更通知
- [ ] 标签变更通知
- [ ] 异步任务完成通知
</details>
<details>
<summary>客户联系 API</summary>
* [x] 成员对外信息
* [x] 企业服务人员管理
- [x] 获取配置了客户联系功能的成员列表
- [x] 客户联系「联系我」管理
* [x] 客户管理
- [x] 获取客户列表
- [x] 获取客户详情
- [x] 批量获取客户详情
- [x] 修改客户备注信息
* [x] 在职继承
- [x] 分配在职成员的客户
- [x] 查询客户接替状态
- [ ] 分配在职成员的客户群
* [x] 离职继承
- [ ] 获取待分配的离职成员列表
- [x] 分配离职成员的客户
- [x] 查询客户接替状态
- [ ] 分配离职成员的客户群
* [x] 客户标签管理
- [x] 管理企业标签
- [x] 编辑客户企业标签
* [x] 客户分配
- [x] 获取离职成员列表
- [x] 分配在职或离职成员的客户
- [x] 查询客户接替结果
- [x] 分配离职成员的客户群
* [x] 变更回调通知
- [x] 添加企业客户事件
- [x] 编辑企业客户事件
- [x] 外部联系人免验证添加成员事件
- [x] 删除企业客户事件
- [x] 删除跟进成员事件
- [x] 客户接替失败事件
- [x] 客户群变更事件
* [x] 消息推送
- [x] 创建企业群发
- [ ] 获取企业的全部群发记录
- [x] 发送新客户欢迎语
- [ ] 入群欢迎语素材管理
</details>
<details>
<summary>身份验证 API</summary>
* [x] 获取访问用户身份
</details>
<details>
<summary>应用管理 API</summary>
* [ ] 获取应用
* [ ] 设置应用
* [ ] 自定义菜单
- [ ] 创建菜单
- [ ] 获取菜单
- [ ] 删除菜单
</details>
<details>
<summary>消息发送 API</summary>
* [x] 发送应用消息
* [x] 接收消息
* [x] 发送消息到群聊会话
- [x] 创建群聊会话
- [ ] 修改群聊会话
- [x] 获取群聊会话
- [x] 应用推送消息
### 消息类型
* [x] 文本消息
* [x] 图片消息
* [x] 语音消息
* [x] 视频消息
* [x] 文件消息
* [x] 文本卡片消息
* [x] 图文消息
* [x] 图文消息(mpnews)
* [x] markdown消息
* [x] 任务卡片消息
</details>
<details>
<summary>素材管理 API</summary>
* [x] 上传临时素材
* [x] 上传永久图片
* [ ] 获取临时素材
* [ ] 获取高清语音素材
</details>
<details>
<summary>OA API</summary>
* [ ] 审批
- [x] 获取审批模板详情
- [x] 提交审批申请
- [x] 审批申请状态变化回调通知
- [x] 批量获取审批单号
- [x] 获取审批申请详情
- [ ] 获取企业假期管理配置
- [ ] 修改成员假期余额
</details>
<details>
<summary>会话内容存档 API</summary>
* [x] 获取会话内容存档开启成员列表
* [x] 获取会话同意情况
* [ ] 客户同意进行聊天内容存档事件回调
* [x] 获取会话内容存档内部群信息
</details>
## Notes
### 关于保密消息发送
Markdow
没有合适的资源?快使用搜索试试~ 我知道了~
Go 实现一个简单的消息推送项目
共96个文件
go:76个
md:10个
yml:3个
0 下载量 9 浏览量
2023-07-13
16:03:13
上传
评论
收藏 174KB ZIP 举报
温馨提示
工作中需要用 Go 实现一个简单的消息推送,想着找个开源库算了,然而现有唯一的开源企业微信 Golang SDK 代码质量不佳。只好自己写一个。 Update: 自从这个库写出来,已经过了很久;现在(2019.08)已经有三四个同类项目了。 不过看了看这些“竞品”,发现自己这个库的类型设计、公开接口、access token 处理等方面还不赖。 为什么人们总是喜欢写死请求 Host、用全局量、为拆包而拆包甚至不惜公开内部方法呢?
资源推荐
资源详情
资源评论
收起资源包目录
go-workwx-develop.zip (96个子文件)
go-workwx-develop
traits.go 397B
.editorconfig 469B
rx_msg_extras.go 16KB
bors.toml 49B
rx_msg.go 7KB
models.go 29KB
user_info.go 1KB
go.mod 699B
dept_info.md.go 491B
.github
dependabot.yml 200B
workflows
go.yml 1KB
go.sum 7KB
media.go 1KB
example_test.go 7KB
LICENSE 1KB
recipient.go 1KB
recipient_test.go 4KB
client_options_test.go 1KB
user_info.md.go 3KB
rx_msg.md.go 13KB
dummy_for_generate.go 772B
token.go 7KB
examples
callback-demo
main.go 941B
client_test.go 316B
apis.md.go 24KB
cmd
workwxctl
commands
cmd_appchat_get.go 389B
tls_key_log_helper.go 891B
flags.go 3KB
decl.go 5KB
cmd_webhook_send_message.go 949B
cmd_send_message.go 2KB
cmd_dept_list.go 823B
cmd_upload_temp_media.go 867B
cmd_user_list_by_dept.go 759B
cmd_user_get.go 380B
main.go 169B
errcodes
mod.go 174KB
docs
dept_info.md 418B
user_info.md 3KB
apis.md 18KB
external_contact.md 20KB
foo.md 736B
rx_msg.md 12KB
oa.md 20KB
media_upload.md 500B
chat_info.md 3KB
errors.go 1KB
oa.md.go 22KB
internal
sdkcodegen
ast.go 3KB
analyze.go 9KB
emit.go 3KB
parse.go 4KB
hir.go 952B
lineending.go 1KB
main.go 2KB
errcodegen
emit.go 2KB
code_names.go 230B
main.go 7KB
lowlevel
envelope
time_source.go 255B
models.go 574B
mod_test.go 3KB
mod.go 3KB
ctor_options.go 549B
encryptor
mod_test.go 3KB
mod.go 3KB
signature
mod_test.go 3KB
mod.go 2KB
pkcs7
mod_test.go 2KB
mod.go 365B
httpapi
echo_test_api.go 2KB
mod_test.go 1KB
mod.go 1KB
event_api.go 1003B
echo_test_api_test.go 946B
doc.go 92B
ci
run-lint.sh 241B
external_contact.go 13KB
chat_info.md.go 3KB
media_api.go 3KB
webhook_client.go 2KB
client.go 4KB
webhook_message.go 2KB
rx_msg_test.go 6KB
.golangci.yml 644B
.gitignore 4KB
dept_info.go 1KB
user_info_helper.go 2KB
msg_audit.go 4KB
external_contact.md.go 21KB
appchat.go 1KB
README.md 8KB
rx.go 1KB
message.go 6KB
oa.go 6KB
models_test.go 4KB
client_options.go 2KB
共 96 条
- 1
资源评论
智达教育
- 粉丝: 2w+
- 资源: 279
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功