Zendesk 基于 Zendesk Support API v2,实现 ITicketService 统一接口。
包信息
| 项 | 值 |
|---|---|
| NuGet 包 | Bitzsoft.Integrations.Ticketing.Zendesk |
| 实现接口 | ITicketService |
| Provider ID | zendesk |
| 鉴权方式 | HTTP Basic Auth,凭据格式 {email}/token:{apiToken},Base64 编码后作为 Authorization: Basic 头 |
| 默认 BaseUrl | 由 Subdomain 自动拼接为 https://{subdomain}.zendesk.com/api/v2 |
| 区域 | Global |
凭据在 Zendesk 管理后台(Admin > Channels > API > API Tokens)创建后获取。
配置字段
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
Subdomain | string | 是 | — | Zendesk 子域名(如 mycompany) |
Email | string | 是 | — | 具有访问权限的 Zendesk 用户邮箱 |
ApiToken | string | 是 | — | API Token |
BaseUrl | string | 否 | — | 留空时由 Subdomain 自动拼接 https://{subdomain}.zendesk.com/api/v2 |
HttpClientName | string | 否 | TicketingZendesk | 业务 HttpClient 命名 |
配置 JSON 示例
{ "Ticketing": { "Zendesk": { "Subdomain": "mycompany", "Email": "agent@mycompany.com", "ApiToken": "xxxxxxxxxxxxxxxxxxxxxxxx" } }}DI 注册
// 从配置节注册(默认节名 Ticketing:Zendesk)services.AddZendeskTicket(configuration);
// 或用回调单独配置services.AddZendeskTicket(options =>{ options.Subdomain = "mycompany"; options.Email = "agent@mycompany.com"; options.ApiToken = "xxxxxxxxxxxxxxxxxxxxxxxx";});使用示例
public class TicketService{ private readonly ITicketService _ticket;
public TicketService(ITicketService ticket) => _ticket = ticket;
public Task<TicketInfo> CreateAsync(string subject, string description, string requesterEmail) => _ticket.CreateTicketAsync(new CreateTicketRequest { Subject = subject, Description = description, RequesterEmail = requesterEmail });
public Task<TicketingResult> ResolveAsync(string ticketId) => _ticket.ChangeStatusAsync(ticketId, TicketStatus.Solved, comment: "已解决");}依赖
| 包 | 说明 |
|---|---|
Bitzsoft.Integrations.Ticketing | 工单系统服务抽象层 |
Bitzsoft.Integrations.Core | 公共基座 |
已知限制
- Basic Auth 凭据格式为
{email}/token:{apiToken}(注意/token拼接),非纯邮箱。