包信息
| 属性 | 值 |
|---|---|
| NuGet 包 | Bitzsoft.Integrations.TeamWork.WeCom |
| Provider ID | wecom |
| 鉴权方式 | access_token(各业务线独立 Secret 换取) |
| 能力接口 | Org、Message、Approval、Sso、Health、Contact(6 个) |
配置字段(WeComOptions)
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
CorpId | string | 是 | — | 企业 CorpId |
AgentId | long | 否 | 0 | 应用 AgentId |
Secrets | WeComSecrets | 是 | new() | 各业务线应用 Secret 集合 |
BaseUrl | string | 否 | https://qyapi.weixin.qq.com | 企业微信服务端 API 基地址 |
OpenBaseUrl | string | 否 | https://open.work.weixin.qq.com | 开放平台基地址 |
CallbackToken | string? | 否 | — | 回调 Token |
CallbackEncodingAesKey | string? | 否 | — | 回调加解密 EncodingAESKey |
HttpClientName | string | 否 | TeamWorkWeCom | 业务 HttpClient 命名 |
TokenHttpClientName | string | 否 | TeamWorkWeComToken | 令牌刷新专用 HttpClient |
WeComSecrets 子表
| 字段 | 类型 | 说明 |
|---|---|---|
Contacts | string | 通讯录同步 Secret |
Message | string | 自建应用 Secret |
ExternalContact | string | 客户联系 Secret |
配置示例
{ "TeamWork": { "WeCom": { "CorpId": "ww1234567890abcdef", "AgentId": 1000002, "Secrets": { "Contacts": "your-contacts-secret", "Message": "your-app-secret", "ExternalContact": "your-external-contact-secret" }, "BaseUrl": "https://qyapi.weixin.qq.com" } }}DI 注册
// ① 配置节绑定builder.Services.AddBitzsoftWeComTeamWork(builder.Configuration.GetSection("TeamWork:WeCom"));
// ② 委托配置builder.Services.AddBitzsoftWeComTeamWork(options =>{ options.CorpId = "ww1234567890abcdef"; options.AgentId = 1000002; options.Secrets = new WeComSecrets { Contacts = "your-contacts-secret", Message = "your-app-secret", ExternalContact = "your-external-contact-secret", };});能力接口方法
企业微信实现了 Org、Message、Approval、Sso、Health 五个接口,外加独有接口:
ITeamWorkContactProvider(企业微信独有)
Task<IReadOnlyList<ExternalContactInfo>> GetExternalContactsAsync(string userId, CancellationToken ct = default);Task<IReadOnlyList<CustomerGroupInfo>> GetCustomerGroupsAsync(string userId, CancellationToken ct = default);使用示例
// 客户联系人——企业微信独有public class ContactService(ITeamWorkContactProvider contact){ public async Task<IReadOnlyList<ExternalContactInfo>> GetContactsAsync(string userId) { return await contact.GetExternalContactsAsync(userId); }}
// 能力探测:企业微信有 Contact,飞书没有public class CapabilityProbe(ITeamWorkOrgProvider org){ public bool HasContactCapability => org is ITeamWorkContactProvider;}已知限制
- 企业微信不实现
ITeamWorkTodoProvider(钉钉/飞书有),不实现日历与文档接口。 - 各业务线 access_token 相互独立:通讯录用 Contacts Secret,消息用 Message Secret,客户联系用 ExternalContact Secret。
相关
- TeamWork 域手册:能力矩阵
- 错误处理约定