包信息
| 属性 | 值 |
|---|---|
| NuGet 包 | Bitzsoft.Integrations.TeamWork.Feishu |
| Provider ID | feishu |
| 鉴权方式 | tenant_access_token(Bearer Header,AuthHandler 自动刷新) |
| 能力接口 | Org、Message、Todo、Approval、Sso、Health、Calendar、Document(8 个) |
配置字段(FeishuOptions)
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
AppId | string | 是 | — | 应用 App ID |
AppSecret | string | 是 | — | 应用 App Secret |
BaseUrl | string | 否 | https://open.feishu.cn | 飞书开放平台 API 基地址 |
EncryptKey | string? | 否 | — | 事件订阅 Encrypt Key |
VerificationToken | string? | 否 | — | 事件订阅 Verification Token |
HttpClientName | string | 否 | TeamWorkFeishu | 业务 HttpClient 命名 |
TokenHttpClientName | string | 否 | TeamWorkFeishuToken | 令牌刷新专用 HttpClient |
配置示例
{ "TeamWork": { "Feishu": { "AppId": "cli_xxxxxxx", "AppSecret": "your-app-secret", "BaseUrl": "https://open.feishu.cn", "EncryptKey": "optional-event-encrypt-key", "VerificationToken": "optional-verification-token" } }}DI 注册
// ① 配置节绑定builder.Services.AddBitzsoftFeishuTeamWork(builder.Configuration.GetSection("TeamWork:Feishu"));
// ② 委托配置builder.Services.AddBitzsoftFeishuTeamWork(options =>{ options.AppId = "cli_xxxxxxx"; options.AppSecret = "your-app-secret";});能力接口方法
飞书实现了与钉钉相同的 Org、Message、Todo、Approval、Sso、Health 六个接口,外加两个独有接口:
ITeamWorkCalendarProvider(飞书独有)
Task<string> CreateEventAsync(CalendarEventRequest request, CancellationToken ct = default);Task<CalendarEvent?> GetEventAsync(string eventId, CancellationToken ct = default);Task UpdateEventAsync(string eventId, CalendarEventRequest request, CancellationToken ct = default);Task DeleteEventAsync(string eventId, CancellationToken ct = default);ITeamWorkDocumentProvider(飞书独有)
Task<string> CreateDocumentAsync(DocumentCreateRequest request, CancellationToken ct = default);Task<DocumentInfo> GetDocumentAsync(string documentId, CancellationToken ct = default);Task<Stream> DownloadDocumentAsync(string documentId, CancellationToken ct = default);使用示例
// ① 能力探测:日历(飞书有,钉钉没有)public class CalendarService(ITeamWorkOrgProvider org){ public async Task<string?> CreateEventIfSupportedAsync(CalendarEventRequest evt) { if (org is ITeamWorkCalendarProvider calendar) return await calendar.CreateEventAsync(evt); return null; }}
// ② 直接注入飞书独有接口public class DocService(ITeamWorkDocumentProvider doc){ public async Task<string> CreateDocAsync(string title) { return await doc.CreateDocumentAsync(new DocumentCreateRequest { Title = title }); }}已知限制
- 飞书不实现
ITeamWorkContactProvider(企业微信独有),注入转型会失败。 - 日历与文档能力依赖飞书应用的对应权限范围(Calendar、Docs 权限)。
相关
- TeamWork 域手册:能力矩阵与接口设计
- 错误处理约定