You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Go调用Zendesk API代创建工单,如何避免发送通知邮件?

解决Zendesk API创建工单时不发送请求者通知邮件的问题

有两种可靠的方法可以实现你的需求,下面结合你的Go代码给出具体修改方案:

方法1:添加notify_requester顶层参数

Zendesk API支持在创建工单的请求体中添加与ticket同级的notify_requester字段,将其设为false即可直接阻止向请求者发送工单创建通知,这是最精准的解决方案。

首先需要更新你的ZendeskTicket结构体,新增对应字段:

type ZendeskTicket struct {
    Ticket          Ticket `json:"ticket"`
    NotifyRequester bool   `json:"notify_requester"` // 新增字段
}

然后在创建工单实例时设置该字段为false:

ticket := ZendeskTicket{
    Ticket: Ticket{
        Comment: Comment{
            Body: body,
        },
        Priority: "normal",
        Subject:  title,
        Requester: Requester{
            Email: email,
        },
    },
    NotifyRequester: false, // 核心配置:禁用请求者通知
}

方法2:将工单评论设为内部可见

如果希望工单的初始评论仅对客服团队可见(不会对外公开触发通知),可以在Comment结构体中添加IsPublic字段并设为false:

先更新Comment结构体:

type Comment struct {
    Body     string `json:"body"`
    IsPublic bool   `json:"public"` // 新增字段
}

然后创建工单时配置该字段:

Comment: Comment{
    Body:     body,
    IsPublic: false, // 设为内部评论,不会触发对外通知
},

注意事项

  • 方法1是直接控制通知开关,更贴合你的核心需求;
  • 方法2主要控制评论可见性,同时也会阻止该评论的通知,但如果工单有其他自动通知规则,建议结合方法1使用。

修改后的完整代码示例

func CreateZendeskTicket(title, body, email string) error {
    // 假设已更新结构体:
    // type ZendeskTicket struct {
    //     Ticket          Ticket `json:"ticket"`
    //     NotifyRequester bool   `json:"notify_requester"`
    // }
    // type Comment struct {
    //     Body     string `json:"body"`
    //     IsPublic bool   `json:"public"`
    // }

    ticket := ZendeskTicket{
        Ticket: Ticket{
            Comment: Comment{
                Body:     body,
                IsPublic: false, // 可选:设为内部评论
            },
            Priority: "normal",
            Subject:  title,
            Requester: Requester{
                Email: email,
            },
        },
        NotifyRequester: false, // 核心:禁用请求者通知邮件
    }
    payload, err := json.Marshal(ticket)
    if err != nil {
        return err
    }
    url, _ := url.JoinPath(configs.CONFIG.Zendesk.BaseURL, "api/v2/tickets.json")
    req, err := http.NewRequest("POST", url, bytes.NewBuffer(payload))
    if err != nil {
        return err
    }

    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Authorization", "Basic "+configs.CONFIG.Zendesk.APIKey)

    client := &http.Client{}
    res, err := client.Do(req)
    if err != nil {
        return err
    }
    defer res.Body.Close()
    if res.StatusCode != 201 {
        return errors.New("Failed to create ticket: " + res.Status)
    }
    return nil
}

内容的提问来源于stack exchange,提问作者Sihan Tawsik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 17:17:39