# Technical Documentation: silenceper/wechat

> ℹ️ **Provenance:** Multi-Tier Ingestion · [CodeWiki Reference](https://codewiki.google/github.com/silenceper/wechat)

### Overview (`README.md`)

# WeChat SDK for Go


[](https://goreportcard.com/report/github.com/silenceper/wechat/v2)
[](https://pkg.go.dev/github.com/silenceper/wechat/v2?tab=doc)




使用Golang开发的微信SDK，简单、易用。

## 文档 && 例子

[API列表](https://github.com/silenceper/wechat/tree/v2/doc/api)

[Wechat SDK 2.0 文档](https://silenceper.com/wechat)

[Wechat SDK 2.0 例子](https://github.com/gowechat/example)

## 快速开始

```
import "github.com/silenceper/wechat/v2"
```

以下是一个微信公众号处理消息接收以及回复的例子：

```go
// 使用memcache保存access_token，也可选择redis或自定义cache
wc := wechat.NewWechat()
memory := cache.NewMemory()
cfg := &offConfig.Config{
    AppID:     "xxx",
    AppSecret: "xxx",
    Token:     "xxx",
    // EncodingAESKey: "xxxx",
    Cache: memory,
}
officialAccount := wc.GetOfficialAccount(cfg)

// 传入request和responseWriter
server := officialAccount.GetServer(req, rw)
// 设置接收消息的处理方法
server.SetMessageHandler(func(msg *message.MixMessage) *message.Reply {

    // 回复消息：演示回复用户发送的消息
    text := message.NewText(msg.Content)
    return &message.Reply{MsgType: message.MsgTypeText, MsgData: text}
})

// 处理消息接收以及回复
err := server.Serve()
if err != nil {
    fmt.Println(err)
    return
}
// 发送回复的消息
server.Send()

```

## 目录说明

- officialaccount: 微信公众号API
- miniprogram: 小程序API
- minigame:小游戏API
- pay:微信支付API
- openplatform:开放平台API
- work:企业微信
- aispeech:智能对话
- doc: api文档

## 贡献

- 在[API列表](https://github.com/silenceper/wechat/tree/v2/doc/api)中查看哪些API未实现
- 提交issue，描述需要贡献的内容
- 完成更改后，提交PR


## 感谢以下贡献者

<a href="https://opencollective.com/gowechat"><img src="https://opencollective.com/gowechat/contributors.svg?width=890" /></a>


## 作者公众号



## License

Apache License, Version 2.0

---

### Overview (`aispeech/README.md`)

# 智能对话

[官方文档](https://developers.weixin.qq.com/doc/aispeech/confapi/dialog/token.html)

## 快速入门

```go
import (
	"github.com/silenceper/wechat/v2"
	"github.com/silenceper/wechat/v2/aispeech/config"
	"github.com/silenceper/wechat/v2/aispeech/dialog"
	"github.com/silenceper/wechat/v2/cache"
)

wc := wechat.NewWechat()
memory := cache.NewMemory()

ai := wc.GetAISpeech(&config.Config{
	AppID:   "xxx",
	Token:   "xxx",
	AESKey:  "xxx",
	Account: "admin",
	Cache:   memory,
})

dialogClient := ai.GetDialog()

accessToken, err := dialogClient.GetAccessToken()
if err != nil {
	return err
}

res, err := dialogClient.Query(&dialog.QueryRequest{
	Query:  "你好",
	Env:    "online",
	UserID: "user-1",
})
```

## 简单问答导入与发布

```go
task, err := dialogClient.ImportJSON(&dialog.ImportJSONRequest{
	Mode: 0,
	Data: []dialog.BotIntent{{
		Skill:     "售前咨询",
		Intent:    "查询营业时间",
		Disable:   false,
		Questions: []string{"你们几点开门", "营业时间是什么时候"},
		Answers:   []string{"我们的营业时间是周一至周五 9:00-18:00"},
	}},
})
if err != nil {
	return err
}

asyncResult, err := dialogClient.FetchAsync(&dialog.FetchAsyncRequest{
	TaskID: task.TaskID,
})
if err != nil {
	return err
}

publish, err := dialogClient.Publish()
if err != nil {
	return err
}

progress, err := dialogClient.GetEffectiveProgress(&dialog.EffectiveProgressRequest{
	Env: "online",
})
```

当前封装微信智能对话开放接口中“接入智能对话”的 6 个接口：

- `POST /v2/token`
- `POST /v2/bot/import/json`
- `POST /v2/async/fetch`
- `POST /v2/bot/publish`
- `POST /v2/bot/effective_progress`
- `POST /v2/bot/query`

## 真实接口验证

默认单元测试不会访问真实微信接口。如需验证 token 和 query 只读链路，可设置以下环境变量后运行：

```bash
AISPEECH_INTEGRATION=1
AISPEECH_APPID=xxx
AISPEECH_TOKEN=xxx
AISPEECH_AES_KEY=xxx
go test ./aispeech/dialog -run TestIntegrationAccessTokenAndQuery
```

如需验证导入、异步任务查询、发布、发布进度查询和命中回答的完整链路，可显式开启变更型测试。该测试会导入一个 `CodexSmokeTest` 临时问答并发布到线上机器人：

```bash
AISPEECH_INTEGRATION_MUTATION=1
AISPEECH_APPID=xxx
AISPEECH_TOKEN=xxx
AISPEECH_AES_KEY=xxx
go test ./aispeech/dialog -run TestIntegrationFullDialogFlow -v
```

---

### Overview (`minigame/README.md`)

# 微信小游戏

[官方文档](https://developers.weixin.qq.com/minigame/dev/api-backend/)

## 快速入门

```go

```

---

### Overview (`miniprogram/README.md`)

# 微信小程序

[官方文档](https://developers.weixin.qq.com/miniprogram/dev/framework/)

## 包说明

- analysis 数据分析相关 API

## 快速入门

```go
wc := wechat.NewWechat()
memory := cache.NewMemory()
cfg := &miniConfig.Config{
    AppID:     "xxx",
    AppSecret: "xxx",
    Cache: memory,
}
miniprogram := wc.GetMiniProgram(cfg)
miniprogram.GetAnalysis().GetAnalysisDailyRetain()
```

### 小程序虚拟支付 
#### `注意：需要传入 Appkey、OfferID 的值`
相关文档：[小程序虚拟支付](https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/virtual-payment.html)
```go
wc := wechat.NewWechat()
miniprogram := wc.GetMiniProgram(&miniConfig.Config{
    AppID:     "xxx",
    AppSecret: "xxx",
    AppKey:    "xxx",
    OfferID:   "xxx",
    Cache: cache.NewRedis(&redis.Options{
        Addr: "",
    }),
})
virtualPayment := miniprogram.GetVirtualPayment()
virtualPayment.SetSessionKey("xxx")
// 查询用户余额
var (
    res *virtualPayment.QueryUserBalanceResponse
    err error
)

if res, err = virtualPayment.QueryUserBalance(context.TODO(), &virtualPayment.QueryUserBalanceRequest{
    OpenID: "xxx",
    Env: virtualPayment.EnvProduction,
    UserIP: "xxx",
}); err != nil {
    panic(err)
}

```

---

### Overview (`officialaccount/README.md`)

# 微信公众号

[官方文档](https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html)

## 快速入门

---

### Overview (`openplatform/README.md`)

# 微信开放平台

[官方文档](https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/Third_party_platform_appid.html)

## 快速入门

### 服务端处理

```go
wc := wechat.NewWechat()
memory := cache.NewMemory()
cfg := &openplatform.Config{
    AppID:     "xxx",
    AppSecret: "xxx",
    Token:     "xxx",
    EncodingAESKey: "xxx",
    Cache: memory,
}


openPlatform := wc.GetOpenPlatform(cfg)
// 传入request和responseWriter
server := openPlatform.GetServer(req, rw)
//设置接收消息的处理方法
server.SetMessageHandler(func(msg *message.MixMessage) *message.Reply {
    if msg.InfoType == message.InfoTypeVerifyTicket {
        componentVerifyTicket, err := openPlatform.SetComponentAccessToken(msg.ComponentVerifyTicket)
        if err != nil {
            log.Println(err)
            return nil
        }
        //debug 
        fmt.Println(componentVerifyTicket)
        rw.Write([]byte("success"))
        return nil
    }
    //handle other message
    //
    
    
    return nil
})

//处理消息接收以及回复
err := server.Serve()
if err != nil {
    fmt.Println(err)
    return
}
//发送回复的消息
server.Send()


```

### 待授权处理消息

```go

//授权的第三方公众号的appID
appID := "xxx"
openPlatform := wc.GetOpenPlatform(cfg)
openPlatform.GetOfficialAccount(appID)

```

---

### Overview (`pay/README.md`)

# 微信支付

[官方文档](https://pay.weixin.qq.com/wiki/doc/api/index.html)

## 快速入门

---

### Overview (`work/README.md`)

# 企业微信

[官方文档](https://work.weixin.qq.com/api/doc)

## 快速入门

---

### Overview (`doc/api/README.md`)

# API 文档

已完成以及未完成API列表汇总

如果有兴趣参与贡献，可以在具体的API表格后面标识自己为贡献者以及完成时间，例如：

|          名称           | 请求方式 | URL                        | 是否已实现 | 使用方法 |贡献者|完成时间|
| :---------------------: | -------- | :------------------------- | ---------- | -------- |-------- |-------- |
| 获取公众号类目       | GET      | /wxaapi/newtmpl/getcategory            | NO         |   |silenceper| 2021-12-20|

- [微信公众号](./officialaccount.md)
- [小程序](./miniprogram.md)
- [小游戏](./minigame.md)
- [开放平台](./oplatform.md)
- [微信支付](./wxpay.md)
- [企业微信](./work.md)
- [智能对话](./aispeech.md)

---

### Overview (`miniprogram/tcb/README.md`)

# 小程序-云开发 SDK

Tencent Cloud Base [文档](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-http-api/)

## 使用说明

**初始化配置**

```golang
//使用memcache保存access_token，也可选择redis或自定义cache
memCache=cache.NewMemcache("127.0.0.1:11211")

//配置小程序参数
config := &wechat.Config{
    AppID:     "your app id",
    AppSecret: "your app secret",
    Cache:     memCache,
}
wc := wechat.NewWechat(config)
wcTcb := wc.GetTcb()
```

### 举例

#### 触发云函数

```golang
res, err := wcTcb.InvokeCloudFunction("test-xxxx", "add", `{"a":1,"b":2}`)
if err != nil {
    panic(err)
}
```

更多使用方法参考[PKG.DEV](https://pkg.go.dev/github.com/silenceper/wechat/v2/miniprogram/tcb)

---

### Overview (`work/msgaudit/README.md`)

企业微信会话存档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参数`msgaudit`： `go build -tags msgaudit`或者`go run -tags msgaudit main.go`

### Example

```
/* Detailed source-code truncated for AI context efficiency. */
```

---

### Doc Api Aispeech (`doc/api/aispeech.md`)

# 智能对话

## 接入智能对话

- 获取 Accesstoken：`POST /v2/token`
- 简单问答导入：`POST /v2/bot/import/json`
- 异步任务查询：`POST /v2/async/fetch`
- 发布机器人：`POST /v2/bot/publish`
- 查询机器人发布进度：`POST /v2/bot/effective_progress`
- 调用智能对话：`POST /v2/bot/query`

官方文档：https://developers.weixin.qq.com/doc/aispeech/confapi/dialog/token.html

---

### Doc Api Miniprogram (`doc/api/miniprogram.md`)

# 小程序

## 基础接口

TODO

## 内容安全

[官方文档](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/sec-check/security.mediaCheckAsync.html)

|               名称                | 请求方式 | URL                              | 是否已实现 | 使用方法                               |
| :-------------------------------: | -------- | :------------------------------- | ---------- | -------------------------------------- |
| 异步校验图片/音频 <sub>v1.0</sub> | POST     | /wxa/media_check_async           | YES        | (security *Security) MediaCheckAsyncV1 |
| 同步校验一张图片 <sub>v1.0</sub>  | POST     | /wxa/img_sec_check               | YES        | (security *Security) ImageCheckV1      |
|         异步校验图片/音频         | POST     | /wxa/media_check_async?version=2 | YES        | (security *Security) MediaCheckAsync   |
| 同步检查一段文本 <sub>v1.0</sub>  | POST     | /wxa/msg_sec_check               | YES        | (security *Security) MsgCheckV1        |
|         同步检查一段文本          | POST     | /wxa/msg_sec_check?version=2     | YES        | (security *Security) MsgCheck          |


## OCR

[官方文档](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/ocr/ocr.bankcard.html)

|      名称      | 请求方式 | URL                    | 是否已实现 | 使用方法 |
| :------------: | -------- | :--------------------- | ---------- | -------- |
|   银行卡识别   | POST     | /cv/ocr/bankcard       |            |          |
|  营业执照识别  | POST     | /cv/ocr/bizlicense     |            |          |
|   驾驶证识别   | POST     | /cv/ocr/drivinglicense |            |          |
|   身份证识别   | POST     | /cv/ocr/idcard         |            |          |
| 通用印刷体识别 | POST     | /cv/ocr/comm           |            |          |
|   行驶证识别   | POST     | /cv/ocr/driving        |            |          |


## 手机号

[官方文档](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/phonenumber/phonenumber.getPhoneNumber.html)

|        名称        | 请求方式 | URL                              | 是否已实现 | 使用方法                            |
| :----------------: | -------- | :------------------------------- | ---------- | ----------------------------------- |
| code换取用户手机号 | POST     | /wxa/business/getuserphonenumber | YES        | (business *Business) GetPhoneNumber |


## 安全风控

[官方文档](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/safety-control-capability/riskControl.getUserRiskRank.html)

|        名称        | 请求方式 | URL                  | 是否已实现 | 使用方法                                   |
| :----------------: | -------- | :------------------- | ---------- | ------------------------------------------ |
| 获取用户的安全等级 | POST     | /wxa/getuserriskrank | YES        | (riskControl *RiskControl) GetUserRiskRank |


## 学生身份

[官方文档](https://developers.weixin.qq.com/miniprogram/dev/server/API/student/api_quickcheckstudentidentity.html)

|       名称       | 请求方式 | URL                             | 是否已实现 | 使用方法                                        |
| :--------------: | -------- | :------------------------------ | ---------- | ----------------------------------------------- |
| 快速获取学生身份 | POST     | /intp/quickcheckstudentidentity | YES        | (student *Student) QuickCheckStudentIdentity    |

---

### Doc Api Officialaccount (`doc/api/officialaccount.md`)

# 微信公众号 API 列表

## 基础接口

[官方文档](https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html)

|           名称            | 请求方式 | URL                        | 是否已实现 | 使用方法 |
| :-----------------------: | -------- | :------------------------- | ---------- | -------- |
|     获取 Access token     | GET      | /cgi-bin/token             | YES        |          |
|  获取微信服务器 IP 地址   | GET      | /cgi-bin/get_api_domain_ip | YES        |          |
| 获取微信 callback IP 地址 | GET      | /cgi-bin/getcallbackip     | YES        |          |
|     清理接口调用次数      | POST     | /cgi-bin/clear_quota       | YES        |          |

## 订阅通知

[官方文档](https://developers.weixin.qq.com/doc/offiaccount/Subscription_Messages/api.html)

| 名称                 | 请求方式 | URL                                    | 是否已实现 | 使用方法                                     |
| -------------------- | -------- | -------------------------------------- | ---------- | -------------------------------------------- |
| 选用模板             | POST     | /wxaapi/newtmpl/addtemplate            | YES        | (tpl \*Subscribe) Add                        |
| 删除模板             | POST     | /wxaapi/newtmpl/deltemplate            | YES        | (tpl \*Subscribe) Delete                     |
| 获取公众号类目       | GET      | /wxaapi/newtmpl/getcategory            | YES        | (tpl \*Subscribe) GetCategory                |
| 获取模板中的关键词   | GET      | /wxaapi/newtmpl/getpubtemplatekeywords | YES        | (tpl \*Subscribe) GetPubTplKeyWordsByID      |
| 获取类目下的公共模板 | GET      | /wxaapi/newtmpl/getpubtemplatetitles   | YES        | (tpl \*Subscribe) GetPublicTemplateTitleList |
| 获取私有模板列表     | GET      | /wxaapi/newtmpl/gettemplate            | YES        | (tpl \*Subscribe) List()                     |
| 发送订阅通知         | POST     | /cgi-bin/message/subscribe/bizsend     | YES        | (tpl \*Subscribe) Send                       |

## 客服消息

### PC 客服能力

#### 客服管理

[官方文档](https://developers.weixin.qq.com/doc/offiaccount/Customer_Service/Customer_Service_Management.html)

| 名称             | 请求方式  | URL                                    | 是否已实现 | 使用方法                         |
| ---------------- | --------- | -------------------------------------- | ---------- | -------------------------------- |
| 获取客服基本信息 | GET       | /cgi-bin/customservice/getkflist       | YES        | (csm \*Manager) List             |
| 添加客服帐号     | POST      | /customservice/kfaccount/add           | YES        | (csm \*Manager) Add              |
| 邀请绑定客服帐号 | POST      | /customservice/kfaccount/inviteworker  | YES        | (csm \*Manager) InviteBind       |
| 设置客服信息     | POST      | /customservice/kfaccount/update        | YES        | (csm \*Manager) Update           |
| 上传客服头像     | POST/FORM | /customservice/kfaccount/uploadheadimg | YES        | (csm \*Manager) UploadHeadImg    |
| 删除客服帐号     | POST      | /customservice/kfaccount/del           | YES        | (csm \*Manager) Delete           |
| 获取在线客服     | POST      | /cgi-bin/customservice/getonlinekflist | YES        | (csm \*Manager) OnlineList       |
| 下发客服输入状态 | POST      | /cgi-bin/message/custom/typing         | YES        | (csm \*Manager) SendTypingStatus |

#### 会话控制

[官方文档](https://developers.weixin.qq.com/doc/offiaccount/Customer_Service/Session_control.html)

| 名称               | 请求方式 | URL                                     | 是否已实现 | 使用方法 |
| ------------------ | -------- | --------------------------------------- | ---------- | -------- |
| 创建会话           | POST     | /customservice/kfsession/create         | NO         |          |
| 获取客户会话状态   | GET      | /customservice/kfsession/getsession     | NO         |          |
| 获取客服会话列表   | GET      | /customservice/kfsession/getsessionlist | NO         |          |
| 获取未接入会话列表 | POST     | /customservice/kfsession/getwaitcase    | NO         |          |

#### 获取聊天记录

[官方文档](https://developers.weixin.qq.com/doc/offiaccount/Customer_Service/Obtain_chat_transcript.html)

| 名称         | 请求方式 | URL                                 | 是否已实现 | 使用方法 |
| ------------ | -------- | ----------------------------------- | ---------- | -------- |
| 获取聊天记录 | POST     | /customservice/msgrecord/getmsglist | NO         |          |

### 对话能力

[官方文档](https://developers.weixin.qq.com/doc/offiaccount/Shopping_Guide/guide.html)

#### 顾问管理

| 名称                           | 请求方式 | URL                                    | 是否已实现 | 使用方法 |
| ------------------------------ | -------- | -------------------------------------- | ---------- | -------- |
| 添加顾问                       | POST     | /cgi-bin/guide/addguideacct            | NO         |          |
| 获取顾问信息                   | POST     | /cgi-bin/guide/getguideacct            | NO         |          |
| 修改顾问信息                   | POST     | /cgi-bin/guide/updateguideacct         | NO         |          |
| 删除顾问                       | POST     | /cgi-bin/guide/delguideacct            | NO         |          |
| 获取服务号顾问列表             | POST     | /cgi-bin/guide/getguideacctlist        | NO         |          |
| 生成顾问二维码                 | POST     | /cgi-bin/guide/guidecreateqrcode       | NO         |          |
| 获取顾问聊天记录               | POST     | /cgi-bin/guide/getguidebuyerchatrecord | NO         |          |
| 设置快捷回复与关注自动回复     | POST     | /cgi-bin/guide/setguideconfig          | NO         |          |
| 获取快捷回复与关注自动回复     | POST     | /cgi-bin/guide/getguideconfig          | NO         |          |
| 设置敏感词与离线自动回复       | POST     | /cgi-bin/guide/setguideacctconfig      | NO         |          |
| 获取离线自动回复与敏感词       | POST     | /cgi-bin/guide/getguideacctconfig      | NO         |          |
| 允许微信用户复制小程序页面路径 | POST     | /cgi-bin/guide/pushshowwxapathmenu     | NO         |          |
| 新建顾问分组                   | POST     | /cgi-bin/guide/newguidegroup           | NO         |          |
| 获取顾问分组列表               | POST     | /cgi-bin/guide/getguidegrouplist       | NO         |          |
| 获取顾问分组信息               | POST     | /cgi-bin/guide/getgroupinfo            | NO         |          |
| 分组内添加顾问                 | POST     | /cgi-bin/guide/addguide2guidegroup     | NO         |          |
| 分组内删除顾问                 | POST     | /cgi-bin/guide/delguide2guidegroup     | NO         |          |
| 获取顾问所在分组               | POST     | /cgi-bin/guide/getgroupbyguide         | NO         |          |
| 删除指定顾问分组               | POST     | /cgi-bin/guide/delguidegroup           | NO         |          |

#### 客户管理

| 名称                     | 请求方式 | URL                                         | 是否已实现 | 使用方法 |
| ------------------------ | -------- | ------------------------------------------- | ---------- | -------- |
| 为顾问分配客户           | POST     | /cgi-bin/guide/addguidebuyerrelation        | NO         |          |
| 为顾问移除客户           | POST     | /cgi-bin/guide/delguidebuyerrelation        | NO         |          |
| 获取顾问的客户列表       | POST     | /cgi-bin/guide/getguidebuyerrelationlist    | NO         |          |
| 为客户更换顾问           | POST     | /cgi-bin/guide/rebindguideacctforbuyer      | NO         |          |
| 修改客户昵称             | POST     | /cgi-bin/guide/updateguidebuyerrelation     | NO         |          |
| 查询客户所属顾问         | POST     | /cgi-bin/guide/getguidebuyerrelationbybuyer | NO         |          |
| 查询指定顾问和客户的关系 | POST     | /cgi-bin/guide/getguidebuyerrelation        | NO         |          |

#### 标签管理

| 名称               | 请求方式 | URL                                    | 是否已实现 | 使用方法 |
| ------------------ | -------- | -------------------------------------- | ---------- | -------- |
| 新建标签类型       | POST     | /cgi-bin/guide/newguidetagoption       | NO         |          |
| 删除标签类型       | POST     | /cgi-bin/guide/delguidetagoption       | NO         |          |
| 为标签添加可选值   | POST     | /cgi-bin/guide/addguidetagoption       | NO         |          |
| 获取标签和可选值   | POST     | /cgi-bin/guide/getguidetagoption       | NO         |          |
| 为客户设置标签     | POST     | /cgi-bin/guide/addguidebuyertag        | NO         |          |
| 查询客户标签       | POST     | /cgi-bin/guide/getguidebuyertag        | NO         |          |
| 根据标签值筛选客户 | POST     | /cgi-bin/guide/queryguidebuyerbytag    | NO         |          |
| 删除客户标签       | POST     | /cgi-bin/guide/delguidebuyertag        | NO         |          |
| 设置自定义客户信息 | POST     | /cgi-bin/guide/addguidebuyerdisplaytag | NO         |          |
| 获取自定义客户信息 | POST     | /cgi-bin/guide/getguidebuyerdisplaytag | NO         |          |

#### 素材管理

| 名称               | 请求方式 | URL                                  | 是否已实现 | 使用方法 |
| ------------------ | -------- | ------------------------------------ | ---------- | -------- |
| 添加小程序卡片素材 | POST     | /cgi-bin/guide/setguidecardmaterial  | NO         |          |
| 查询小程序卡片素材 | POST     | /cgi-bin/guide/getguidecardmaterial  | NO         |          |
| 删除小程序卡片素材 | POST     | /cgi-bin/guide/delguidecardmaterial  | NO         |          |
| 添加图片素材       | POST     | /cgi-bin/guide/setguideimagematerial | NO         |          |
| 查询图片素材       | POST     | /cgi-bin/guide/getguideimagematerial | NO         |          |
| 删除图片素材       | POST     | /cgi-bin/guide/delguideimagematerial | NO         |          |
| 添加文字素材       | POST     | /cgi-bin/guide/setguidewordmaterial  | NO         |          |
| 查询文字素材       | POST     | /cgi-bin/guide/getguidewordmaterial  | NO         |          |
| 删除文字素材       | POST     | /cgi-bin/guide/delguidewordmaterial  | NO         |          |

#### 群发任务管理

[官方文档](https://developers.weixin.qq.com/doc/offiaccount/Shopping_Guide/task-account/shopping-guide.addGuideMassendJob.html)

| 名称                 | 请求方式 | URL                                   | 是否已实现 | 使用方法 |
| -------------------- | -------- | ------------------------------------- | ---------- | -------- |
| 添加群发任务         | POST     | /cgi-bin/guide/addguidemassendjob     | NO         |          |
| 获取群发任务列表     | POST     | /cgi-bin/guide/getguidemassendjoblist | NO         |          |
| 获取指定群发任务信息 | POST     | /cgi-bin/guide/getguidemassendjob     | NO         |          |
| 修改群发任务         | POST     | /cgi-bin/guide/updateguidemassendjob  | NO         |          |
| 取消群发任务         | POST     | /cgi-bin/guide/cancelguidemassendjob  | NO         |          |

## 微信网页开发

[官方文档](https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html)

| 名称                                                                    | 请求方式 | URL                                                 | 是否已实现 | 使用方法                             |
| ----------------------------------------------------------------------- | -------- | --------------------------------------------------- | ---------- | ------------------------------------ |
| 获取跳转的 url 地址                                                     | GET      | https://open.weixin.qq.com/connect/oauth2/authorize | YES        | (oauth \*Oauth) GetRedirectURL       |
| 获取网页应用跳转的 url 地址                                             | GET      | https://open.weixin.qq.com/connect/qrconnect        | YES        | (oauth \*Oauth) GetWebAppRedirectURL |
| 通过网页授权的 code 换取 access_token(区别于 context 中的 access_token) | GET      | /sns/oauth2/access_token                            | YES        | (oauth \*Oauth) GetUserAccessToken   |
| 刷新 access_token                                                       | GET      | /sns/oauth2/refresh_token?                          | YES        | (oauth \*Oauth) RefreshAccessToken   |
| 检验 access_token 是否有效                                              | GET      | /sns/auth                                           | YES        | (oauth \*Oauth) CheckAccessToken(    |
| 拉取用户信息(需 scope 为 snsapi_userinfo)                               | GET      | /sns/userinfo                                       | YES        | (oauth \*Oauth) GetUserInfo          |
| 获取 jssdk 需要的配置参数                                               | GET      | /cgi-bin/ticket/getticket                           | YES        | (js \*Js) GetConfig                  |

## 素材管理

## 草稿箱

[官方文档](https://developers.weixin.qq.com/doc/offiaccount/Draft_Box/Add_draft.html)

| 名称                        | 请求方式 | URL                                                          | 是否已实现 | 使用方法                      |
| --------------------------- | -------- | ------------------------------------------------------------ | ---------- | ----------------------------- |
| 新建草稿                    | POST     | /cgi-bin/draft/add                                           | YES        | (draft \*Draft) AddDraft      |
| 获取草稿                    | POST     | /cgi-bin/draft/get                                           | YES        | (draft \*Draft) GetDraft      |
| 删除草稿                    | POST     | /cgi-bin/draft/delete                                        | YES        | (draft \*Draft) DeleteDraft   |
| 修改草稿                    | POST     | /cgi-bin/draft/update                                        | YES        | (draft \*Draft) UpdateDraft   |
| 获取草稿总数                | GET      | /cgi-bin/draft/count                                         | YES        | (draft \*Draft) CountDraft    |
| 获取草稿列表                | POST     | /cgi-bin/draft/batchget                                      | YES        | (draft \*Draft) PaginateDraft |
| MP 端开关（仅内测期间使用） | POST     | /cgi-bin/draft/switch<br />/cgi-bin/draft/switch?checkonly=1 | NO         |                               |

## 发布能力

[官方文档](https://developers.weixin.qq.com/doc/offiaccount/Publish/Publish.html)

说明：「发表记录」包括群发和发布。

注意：该接口，只能处理 "发布" 相关的信息，无法操作和获取 "群发" 相关内容！！[官方回复](https://developers.weixin.qq.com/community/develop/doc/0002a4fb2109d8f7a91d421c556c00)

- 群发：主动推送给粉丝，历史消息可看，被搜一搜收录，可以限定部分的粉丝接收到。
- 发布：不会主动推给粉丝，历史消息列表看不到，但是是公开给所有人的文章。也不会占用群发的次数。每天可以发布多篇内容。可以用于自动回复、自定义菜单、页面模板和话题中，发布成功时会生成一个永久链接。

| 名称                           | 请求方式 | URL                             | 是否已实现 | 使用方法                                 |
| ------------------------------ | -------- | ------------------------------- | ---------- | ---------------------------------------- |
| 发布接口                       | POST     | /cgi-bin/freepublish/submit     | YES        | (freePublish \*FreePublish) Publish      |
| 发布状态轮询接口               | POST     | /cgi-bin/freepublish/get        | YES        | (freePublish \*FreePublish) SelectStatus |
| 事件推送发布结果               |          |                                 | YES        | EventPublishJobFinish                    |
| 删除发布                       | POST     | /cgi-bin/freepublish/delete     | YES        | (freePublish \*FreePublish) Delete       |
| 通过 article_id 获取已发布文章 | POST     | /cgi-bin/freepublish/getarticle | YES        | (freePublish \*FreePublish) First        |
| 获取成功发布列表               | POST     | /cgi-bin/freepublish/batchget   | YES        | (freePublish \*FreePublish) Paginate     |

## 图文消息留言管理

## 用户管理

| 名称                                       | 请求方式 | URL                                    | 是否已实现 | 使用方法                           |
| ------------------------------------------ | -------- | -------------------------------------- | ---------- | ---------------------------------- |
| 获取指定 OpenID 变化列表（公众号账号迁移） | POST     | /cgi-bin/changeopenid                  | YES        | (user \*User) ListChangeOpenIDs    |
| 获取所有用户 OpenID 列表（公众号账号迁移） |          |                                        | YES        | (user \*User) ListAllChangeOpenIDs |
| 获取用户基本信息                           | GET      | /cgi-bin/user/info                     | YES        | (user \*User) GetUserInfo          |
| 设置用户备注名                             | POST     | /cgi-bin/user/info/updateremark        | YES        | (user \*User) UpdateRemark         |
| 获取用户列表                               | GET      | /cgi-bin/user/get                      | YES        | (user \*User) ListUserOpenIDs      |
| 获取所有用户 OpenID 列表                   |          |                                        | YES        | (user \*User) ListAllUserOpenIDs   |
| 获取公众号的黑名单列表                     | POST     | /cgi-bin/tags/members/getblacklist     | YES        | (user \*User) GetBlackList         |
| 获取公众号的所有黑名单列表                 |          |                                        | YES        | (user \*User) GetAllBlackList      |
| 拉黑用户                                   | POST     | /cgi-bin/tags/members/batchblacklist   | YES        | (user \*User) BatchBlackList       |
| 取消拉黑用户                               | POST     | /cgi-bin/tags/members/batchunblacklist | YES        | (user \*User) BatchUnBlackList     |
| 创建标签                                   | POST     | /cgi-bin/tags/create                   | YES        | (user \*User) CreateTag            |
| 删除标签                                   | POST     | /cgi-bin/tags/delete                   | YES        | (user \*User) DeleteTag            |
| 编辑标签                                   | POST     | /cgi-bin/tags/update                   | YES        | (user \*User) UpdateTag            |
| 获取公众号已创建的标签                     | GET      | /cgi-bin/tags/get                      | YES        | (user \*User) GetTag               |
| 获取标签下粉丝列表                         | POST     | /cgi-bin/user/tag/get                  | YES        | (user \*User) OpenIDListByTag      |
| 批量为用户打标签                           | POST     | /cgi-bin/tags/members/batchtagging     | YES        | (user \*User) BatchTag             |
| 批量为用户取消标签                         | POST     | /cgi-bin/tags/members/batchuntagging   | YES        | (user \*User) BatchUntag           |
| 获取用户身上的标签列表                     | POST     | /cgi-bin/tags/getidlist                | YES        | (user \*User) UserTidList          |

## 账号管理

## 数据统计

## 微信卡券

## 微信门店

## 智能接口

## 微信设备功能

## 微信“一物一码”

## 微信发票

## 微信非税缴费

---

### Doc Api Work (`doc/api/work.md`)

# 企业微信

host: https://qyapi.weixin.qq.com/

## 微信客服

[官方文档](https://work.weixin.qq.com/api/doc/90000/90135/94638)

### 客服账号管理

[官方文档](https://open.work.weixin.qq.com/api/doc/90001/90143/94684)

|       名称       | 请求方式 | URL                         | 是否已实现 | 使用方法                             |贡献者       |
| :--------------: | -------- | :-------------------------- | ---------- | -------------------------------|------------|
|   添加客服帐号   | POST     | /cgi-bin/kf/account/add     | YES        | (r *Client) AccountAdd           | NICEXAI    |
|   删除客服帐号   | POST     | /cgi-bin/kf/account/del     | YES        | (r *Client) AccountDel           | NICEXAI    |
|   修改客服帐号   | POST     | /cgi-bin/kf/account/update  | YES        | (r *Client) AccountUpdate        | NICEXAI    |
| 获取客服帐号列表 | GET      | /cgi-bin/kf/account/list     | YES        | (r *Client) AccountList          | NICEXAI    |
| 获取客服帐号链接 | GET      | /cgi-bin/kf/add_contact_way  | YES        | (r *Client) AddContactWay        | NICEXAI    |

### 接待人员列表

[官方文档](https://open.work.weixin.qq.com/api/doc/90001/90143/94693)

|       名称       | 请求方式 | URL                         | 是否已实现 | 使用方法                             |贡献者       |
| :--------------: | -------- | :-------------------------- | ---------- | -------------------------------|------------|
|   添加接待人员     | POST     | /cgi-bin/kf/servicer/add    | YES        | (r *Client) ReceptionistAdd     | NICEXAI    |
|   删除接待人员     | POST     | /cgi-bin/kf/servicer/del    | YES        | (r *Client) ReceptionistDel     | NICEXAI    |
| 获取接待人员列表    | GET      | /cgi-bin/kf/servicer/list   | YES        | (r *Client) ReceptionistList    | NICEXAI    |

### 会话分配与消息收发

[官方文档](https://open.work.weixin.qq.com/api/doc/90001/90143/94694)

|       名称       | 请求方式 | URL                               | 是否已实现   | 使用方法                          |贡献者       |
| :--------------: | -------- | :-------------------------------| ---------- | ------------------------------- |------------|
|   获取会话状态     | POST     | /cgi-bin/kf/service_state/get   | YES        | (r *Client) ServiceStateGet     | NICEXAI    |
|   变更会话状态     | POST     | /cgi-bin/kf/service_state/trans | YES        | (r *Client) ServiceStateTrans   | NICEXAI    |
|   读取消息        | POST     | /cgi-bin/kf/sync_msg            | YES        | (r *Client) SyncMsg             | NICEXAI    |
|   发送消息        | POST     | /cgi-bin/kf/send_msg            | YES        | (r *Client) SendMsg             | NICEXAI    |
|   发送事件响应消息 | POST     | /cgi-bin/kf/send_msg_on_event   | YES        | (r *Client) SendMsgOnEvent      | NICEXAI    |

### 升级服务配置

[官方文档](https://open.work.weixin.qq.com/api/doc/90001/90143/94702)

|       名称                | 请求方式  | URL                                               | 是否已实现 | 使用方法                            |贡献者       |
| :--------------:         | -------- | :-------------------------------------------------| ---------- | -------------------------------  |------------|
| 获取配置的专员与客户群       | POST     | /cgi-bin/kf/customer/get_upgrade_service_config   | YES        | (r *Client) UpgradeServiceConfig | NICEXAI    |
| 为客户升级为专员或客户群服务  | POST     | /cgi-bin/kf/customer/upgrade_service              | YES        | (r *Client) UpgradeService       | NICEXAI    |
| 为客户取消推荐             | POST     | /cgi-bin/kf/customer/cancel_upgrade_service       | YES        | (r *Client) UpgradeServiceCancel  | NICEXAI    |

### 其他基础信息获取

[官方文档](https://open.work.weixin.qq.com/api/doc/90001/90143/95148)

|       名称            | 请求方式  | URL                                     | 是否已实现   | 使用方法                            | 贡献者       |
| :--------------:     | -------- | :---------------------------------------| ---------- | -------------------------------   |------------|
| 获取客户基础信息        | POST     | /cgi-bin/kf/customer/batchget           | YES        | (r *Client) CustomerBatchGet      | NICEXAI    |
| 获取视频号绑定状态      | GET      |  /cgi-bin/kf/get_corp_qualification      | YES        | (r *Client) GetCorpQualification  | NICEXAI    |

### 客户联系
[官方文档](https://developer.work.weixin.qq.com/document/path/92132/92133/92228)

|            名称            | 请求方式  | URL                                                          | 是否已实现   | 使用方法                            | 贡献者      |
|:------------------------:| -------- |:-------------------------------------------------------------| ---------- | -------------------------------   |----------|
|       获取「联系客户统计」数据       | POST     | /cgi-bin/externalcontact/get_user_behavior_data              | YES        | (r *Client) GetUserBehaviorData      | MARKWANG |
| 获取「群聊数据统计」数据 (按群主聚合的方式)  | POST      | /cgi-bin/externalcontact/groupchat/statistic                 | YES        | (r *Client) GetGroupChatStat  | MARKWANG  |
| 获取「群聊数据统计」数据 (按自然日聚合的方式) | POST      | /cgi-bin/externalcontact/groupchat/statistic_group_by_day    | YES        | (r *Client) GetGroupChatStatByDay  | MARKWANG  |
|      配置客户联系「联系我」方式       | POST      | /cgi-bin/externalcontact/add_contact_way                     | YES        | (r *Client) AddContactWay  | MARKWANG  |
|     获取企业已配置的「联系我」方式      | POST      | /cgi-bin/externalcontact/get_contact_way                     | YES        | (r *Client) GetContactWay  | MARKWANG  |
|     更新企业已配置的「联系我」方式      | POST      | /cgi-bin/externalcontact/update_contact_way                  | YES        | (r *Client) UpdateContactWay  | MARKWANG  |
|     获取企业已配置的「联系我」列表      | POST      | /cgi-bin/externalcontact/list_contact_way                    | YES        | (r *Client) ListContactWay  | MARKWANG  |
|     删除企业已配置的「联系我」方式      | POST      | /cgi-bin/externalcontact/del_contact_way                     | YES        | (r *Client) DelContactWay  | MARKWANG  |
|          创建企业群发          | POST      | /cgi-bin/externalcontact/add_msg_template                    | YES        | (r *Client) AddMsgTemplate  | MARKWANG  |
|          获取群发记录列表          | POST      | /cgi-bin/externalcontact/get_groupmsg_list_v2                | YES        | (r *Client) GetGroupMsgListV2  | MARKWANG  |
|          获取群发成员发送任务列表          | POST      | /cgi-bin/externalcontact/get_groupmsg_task                   | YES        | (r *Client) GetGroupMsgTask  | MARKWANG  |
|          获取企业群发成员执行结果          | POST      | /cgi-bin/externalcontact/get_groupmsg_send_result            | YES        | (r *Client) GetGroupMsgSendResult  | MARKWANG  |
|          发送新客户欢迎语          | POST      | /cgi-bin/externalcontact/send_welcome_msg                    | YES        | (r *Client) SendWelcomeMsg  | MARKWANG  |
|          添加入群欢迎语素材          | POST      | /cgi-bin/externalcontact/group_welcome_template/add          | YES        | (r *Client) AddGroupWelcomeTemplate  | MARKWANG  |
|          编辑入群欢迎语素材          | POST      | /cgi-bin/externalcontact/group_welcome_template/edit         | YES        | (r *Client) EditGroupWelcomeTemplate  | MARKWANG  |
|          获取入群欢迎语素材          | POST      | /cgi-bin/externalcontact/group_welcome_template/get          | YES        | (r *Client) GetGroupWelcomeTemplate  | MARKWANG  |
|          删除入群欢迎语素材          | POST      | /cgi-bin/externalcontact/group_welcome_template/del          | YES        | (r *Client) DelGroupWelcomeTemplate  | MARKWANG  |

## 通讯录管理
[官方文档](https://developer.work.weixin.qq.com/document/path/90193)

### 部门管理

|    名称     | 请求方式 | URL                                     | 是否已实现   | 使用方法                            | 贡献者      |
|:---------:|------|:----------------------------------------| ---------- | -------------------------------   |----------|
| 获取子部门ID列表 | GET  | /cgi-bin/department/simplelist          | YES        | (r *Client) DepartmentSimpleList| MARKWANG |
| 获取部门列表 | GET  | /cgi-bin/department/list                 | YES        | (r *Client) DepartmentList| just5325, ourines |
|  获取部门成员   | GET | /cgi-bin/user/simplelist                | YES        | (r *Client) UserSimpleList  | MARKWANG  |
|  获取成员ID列表   | Post | /cgi-bin/user/list_id                | YES        | (r *Client) UserListId  | MARKWANG  |



## 素材管理
[官方文档](https://developer.work.weixin.qq.com/document/path/91054)

|    名称     | 请求方式 | URL                                     | 是否已实现   | 使用方法                            | 贡献者      |
|:---------:|------|:----------------------------------------| ---------- | -------------------------------   |----------|
| 上传图片 | POST  | /cgi-bin/media/uploadimg          | YES        | (r *Client) UploadImg| MARKWANG |

### 成员管理

| 名称     | 请求方式 | URL               | 是否已实现 | 使用方法            | 贡献者   |
| -------- | -------- | ----------------- | ---------- | ------------------- | -------- |
| 读取成员 | GET      | /cgi-bin/user/get | YES        | (r *Client) UserGet | chcthink |


## 群机器人

[官方文档](https://developer.work.weixin.qq.com/document/path/91770)

| 名称             | 请求方式 | URL                   | 是否已实现 | 使用方法                   | 贡献者   |
| ---------------- | -------- | --------------------- | ---------- | -------------------------- | -------- |
| 群机器人发送消息 | POST     | /cgi-bin/webhook/send | YES        | (r *Client) RobotBroadcast | chcthink |

## 打卡

[官方文档](https://developer.work.weixin.qq.com/document/path/96497)

| 名称       | 请求方式 | URL                   | 是否已实现 | 使用方法                   | 贡献者     |
|----------| -------- | --------------------- | ---------- | -------------------------- |---------|
| 获取打卡日报数据 | POST     |  /cgi-bin/checkin/getcheckin_daydata | YES        | (r *Client) GetDayData | Thinker |
| 获取打卡月报数据 | POST     |  /cgi-bin/checkin/getcheckin_monthdata | YES        | (r *Client) GetMonthData | Thinker |

## 应用管理
TODO

---

--- METRICS ---
- Files Extracted: 15
- Estimated Token Budget: ~9944 tokens
- Canonical Reference: https://codewiki.google/github.com/silenceper/wechat
