gitee.com/larksuite/oapi-sdk-go/v3@v3.0.3/service/helpdesk/v1/model.go (about)

     1  // Package helpdesk code generated by oapi sdk gen
     2  /*
     3   * MIT License
     4   *
     5   * Copyright (c) 2022 Lark Technologies Pte. Ltd.
     6   *
     7   * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
     8   *
     9   * The above copyright notice and this permission notice, shall be included in all copies or substantial portions of the Software.
    10   *
    11   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    12   */
    13  
    14  package larkhelpdesk
    15  
    16  import (
    17  	"io"
    18  
    19  	"io/ioutil"
    20  
    21  	"fmt"
    22  
    23  	"context"
    24  	"errors"
    25  
    26  	"gitee.com/larksuite/oapi-sdk-go/v3/event"
    27  
    28  	"gitee.com/larksuite/oapi-sdk-go/v3/core"
    29  )
    30  
    31  const (
    32  	MsgTypeText        = "text"        // 普通文本
    33  	MsgTypePost        = "post"        // 富文本
    34  	MsgTypeImage       = "image"       // 图片
    35  	MsgTypeInteractive = "interactive" // 卡片消息
    36  )
    37  
    38  const (
    39  	ReceiveTypeChat = "chat" // 通过服务台专属群发送
    40  	ReceiveTypeUser = "user" // 通过服务台机器人私聊发送
    41  )
    42  
    43  const (
    44  	UserIdTypeUserId  = "user_id"  // 以user_id来识别用户
    45  	UserIdTypeUnionId = "union_id" // 以union_id来识别用户
    46  	UserIdTypeOpenId  = "open_id"  // 以open_id来识别用户
    47  )
    48  
    49  const (
    50  	UserIdTypeCreateNotificationUserId  = "user_id"  // 以user_id来识别用户
    51  	UserIdTypeCreateNotificationUnionId = "union_id" // 以union_id来识别用户
    52  	UserIdTypeCreateNotificationOpenId  = "open_id"  // 以open_id来识别用户
    53  )
    54  
    55  const (
    56  	UserIdTypeGetNotificationUserId  = "user_id"  // 以user_id来识别用户
    57  	UserIdTypeGetNotificationUnionId = "union_id" // 以union_id来识别用户
    58  	UserIdTypeGetNotificationOpenId  = "open_id"  // 以open_id来识别用户
    59  )
    60  
    61  const (
    62  	UserIdTypePatchNotificationUserId  = "user_id"  // 以user_id来识别用户
    63  	UserIdTypePatchNotificationUnionId = "union_id" // 以union_id来识别用户
    64  	UserIdTypePatchNotificationOpenId  = "open_id"  // 以open_id来识别用户
    65  )
    66  
    67  type Agent struct {
    68  	Id          *string `json:"id,omitempty"`           // user id
    69  	AvatarUrl   *string `json:"avatar_url,omitempty"`   // user avatar url
    70  	Name        *string `json:"name,omitempty"`         // user name
    71  	Email       *string `json:"email,omitempty"`        // user email
    72  	Department  *string `json:"department,omitempty"`   // user department
    73  	CompanyName *string `json:"company_name,omitempty"` // company
    74  }
    75  
    76  type AgentBuilder struct {
    77  	id              string // user id
    78  	idFlag          bool
    79  	avatarUrl       string // user avatar url
    80  	avatarUrlFlag   bool
    81  	name            string // user name
    82  	nameFlag        bool
    83  	email           string // user email
    84  	emailFlag       bool
    85  	department      string // user department
    86  	departmentFlag  bool
    87  	companyName     string // company
    88  	companyNameFlag bool
    89  }
    90  
    91  func NewAgentBuilder() *AgentBuilder {
    92  	builder := &AgentBuilder{}
    93  	return builder
    94  }
    95  
    96  // user id
    97  //
    98  // 示例值:ou_ea651a5c09e2d01af8acd34059f5359b
    99  func (builder *AgentBuilder) Id(id string) *AgentBuilder {
   100  	builder.id = id
   101  	builder.idFlag = true
   102  	return builder
   103  }
   104  
   105  // user avatar url
   106  //
   107  // 示例值:https://avatar-url.com/test.png
   108  func (builder *AgentBuilder) AvatarUrl(avatarUrl string) *AgentBuilder {
   109  	builder.avatarUrl = avatarUrl
   110  	builder.avatarUrlFlag = true
   111  	return builder
   112  }
   113  
   114  // user name
   115  //
   116  // 示例值:test-user
   117  func (builder *AgentBuilder) Name(name string) *AgentBuilder {
   118  	builder.name = name
   119  	builder.nameFlag = true
   120  	return builder
   121  }
   122  
   123  // user email
   124  //
   125  // 示例值:
   126  func (builder *AgentBuilder) Email(email string) *AgentBuilder {
   127  	builder.email = email
   128  	builder.emailFlag = true
   129  	return builder
   130  }
   131  
   132  // user department
   133  //
   134  // 示例值:
   135  func (builder *AgentBuilder) Department(department string) *AgentBuilder {
   136  	builder.department = department
   137  	builder.departmentFlag = true
   138  	return builder
   139  }
   140  
   141  // company
   142  //
   143  // 示例值:
   144  func (builder *AgentBuilder) CompanyName(companyName string) *AgentBuilder {
   145  	builder.companyName = companyName
   146  	builder.companyNameFlag = true
   147  	return builder
   148  }
   149  
   150  func (builder *AgentBuilder) Build() *Agent {
   151  	req := &Agent{}
   152  	if builder.idFlag {
   153  		req.Id = &builder.id
   154  
   155  	}
   156  	if builder.avatarUrlFlag {
   157  		req.AvatarUrl = &builder.avatarUrl
   158  
   159  	}
   160  	if builder.nameFlag {
   161  		req.Name = &builder.name
   162  
   163  	}
   164  	if builder.emailFlag {
   165  		req.Email = &builder.email
   166  
   167  	}
   168  	if builder.departmentFlag {
   169  		req.Department = &builder.department
   170  
   171  	}
   172  	if builder.companyNameFlag {
   173  		req.CompanyName = &builder.companyName
   174  
   175  	}
   176  	return req
   177  }
   178  
   179  type AgentSchedules struct {
   180  	Status      *int                  `json:"status,omitempty"`       // status of agent
   181  	Agent       *AgentUser            `json:"agent,omitempty"`        // agent info
   182  	Schedule    []*WeekdaySchedule    `json:"schedule,omitempty"`     // day schedule
   183  	AgentSkills []*AgentSkillLessInfo `json:"agent_skills,omitempty"` // agent skills
   184  }
   185  
   186  type AgentSchedulesBuilder struct {
   187  	status          int // status of agent
   188  	statusFlag      bool
   189  	agent           *AgentUser // agent info
   190  	agentFlag       bool
   191  	schedule        []*WeekdaySchedule // day schedule
   192  	scheduleFlag    bool
   193  	agentSkills     []*AgentSkillLessInfo // agent skills
   194  	agentSkillsFlag bool
   195  }
   196  
   197  func NewAgentSchedulesBuilder() *AgentSchedulesBuilder {
   198  	builder := &AgentSchedulesBuilder{}
   199  	return builder
   200  }
   201  
   202  // status of agent
   203  //
   204  // 示例值:
   205  func (builder *AgentSchedulesBuilder) Status(status int) *AgentSchedulesBuilder {
   206  	builder.status = status
   207  	builder.statusFlag = true
   208  	return builder
   209  }
   210  
   211  // agent info
   212  //
   213  // 示例值:
   214  func (builder *AgentSchedulesBuilder) Agent(agent *AgentUser) *AgentSchedulesBuilder {
   215  	builder.agent = agent
   216  	builder.agentFlag = true
   217  	return builder
   218  }
   219  
   220  // day schedule
   221  //
   222  // 示例值:
   223  func (builder *AgentSchedulesBuilder) Schedule(schedule []*WeekdaySchedule) *AgentSchedulesBuilder {
   224  	builder.schedule = schedule
   225  	builder.scheduleFlag = true
   226  	return builder
   227  }
   228  
   229  // agent skills
   230  //
   231  // 示例值:
   232  func (builder *AgentSchedulesBuilder) AgentSkills(agentSkills []*AgentSkillLessInfo) *AgentSchedulesBuilder {
   233  	builder.agentSkills = agentSkills
   234  	builder.agentSkillsFlag = true
   235  	return builder
   236  }
   237  
   238  func (builder *AgentSchedulesBuilder) Build() *AgentSchedules {
   239  	req := &AgentSchedules{}
   240  	if builder.statusFlag {
   241  		req.Status = &builder.status
   242  
   243  	}
   244  	if builder.agentFlag {
   245  		req.Agent = builder.agent
   246  	}
   247  	if builder.scheduleFlag {
   248  		req.Schedule = builder.schedule
   249  	}
   250  	if builder.agentSkillsFlag {
   251  		req.AgentSkills = builder.agentSkills
   252  	}
   253  	return req
   254  }
   255  
   256  type AgentSchedule struct {
   257  	Status      *int                  `json:"status,omitempty"`       // 客服状态, 1 - online客服, 2 - offline(手动)客服, 3 - off duty(下班)自动处于非服务时间段
   258  	Agent       *AgentUser            `json:"agent,omitempty"`        // 客服信息
   259  	Schedule    []*WeekdaySchedule    `json:"schedule,omitempty"`     // 工作日程列表
   260  	AgentSkills []*AgentSkillLessInfo `json:"agent_skills,omitempty"` // 客服技能
   261  }
   262  
   263  type AgentScheduleBuilder struct {
   264  	status          int // 客服状态, 1 - online客服, 2 - offline(手动)客服, 3 - off duty(下班)自动处于非服务时间段
   265  	statusFlag      bool
   266  	agent           *AgentUser // 客服信息
   267  	agentFlag       bool
   268  	schedule        []*WeekdaySchedule // 工作日程列表
   269  	scheduleFlag    bool
   270  	agentSkills     []*AgentSkillLessInfo // 客服技能
   271  	agentSkillsFlag bool
   272  }
   273  
   274  func NewAgentScheduleBuilder() *AgentScheduleBuilder {
   275  	builder := &AgentScheduleBuilder{}
   276  	return builder
   277  }
   278  
   279  // 客服状态, 1 - online客服, 2 - offline(手动)客服, 3 - off duty(下班)自动处于非服务时间段
   280  //
   281  // 示例值:1
   282  func (builder *AgentScheduleBuilder) Status(status int) *AgentScheduleBuilder {
   283  	builder.status = status
   284  	builder.statusFlag = true
   285  	return builder
   286  }
   287  
   288  // 客服信息
   289  //
   290  // 示例值:
   291  func (builder *AgentScheduleBuilder) Agent(agent *AgentUser) *AgentScheduleBuilder {
   292  	builder.agent = agent
   293  	builder.agentFlag = true
   294  	return builder
   295  }
   296  
   297  // 工作日程列表
   298  //
   299  // 示例值:
   300  func (builder *AgentScheduleBuilder) Schedule(schedule []*WeekdaySchedule) *AgentScheduleBuilder {
   301  	builder.schedule = schedule
   302  	builder.scheduleFlag = true
   303  	return builder
   304  }
   305  
   306  // 客服技能
   307  //
   308  // 示例值:
   309  func (builder *AgentScheduleBuilder) AgentSkills(agentSkills []*AgentSkillLessInfo) *AgentScheduleBuilder {
   310  	builder.agentSkills = agentSkills
   311  	builder.agentSkillsFlag = true
   312  	return builder
   313  }
   314  
   315  func (builder *AgentScheduleBuilder) Build() *AgentSchedule {
   316  	req := &AgentSchedule{}
   317  	if builder.statusFlag {
   318  		req.Status = &builder.status
   319  
   320  	}
   321  	if builder.agentFlag {
   322  		req.Agent = builder.agent
   323  	}
   324  	if builder.scheduleFlag {
   325  		req.Schedule = builder.schedule
   326  	}
   327  	if builder.agentSkillsFlag {
   328  		req.AgentSkills = builder.agentSkills
   329  	}
   330  	return req
   331  }
   332  
   333  type AgentScheduleUpdateInfo struct {
   334  	AgentId       *string            `json:"agent_id,omitempty"`        // 客服id;;[可以以普通用户身份在服务台发起工单,从工单详情里面获取用户guest.id](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/get)
   335  	Schedule      []*WeekdaySchedule `json:"schedule,omitempty"`        // 工作日程列表
   336  	AgentSkillIds []string           `json:"agent_skill_ids,omitempty"` // 客服技能 ids
   337  }
   338  
   339  type AgentScheduleUpdateInfoBuilder struct {
   340  	agentId           string // 客服id;;[可以以普通用户身份在服务台发起工单,从工单详情里面获取用户guest.id](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/get)
   341  	agentIdFlag       bool
   342  	schedule          []*WeekdaySchedule // 工作日程列表
   343  	scheduleFlag      bool
   344  	agentSkillIds     []string // 客服技能 ids
   345  	agentSkillIdsFlag bool
   346  }
   347  
   348  func NewAgentScheduleUpdateInfoBuilder() *AgentScheduleUpdateInfoBuilder {
   349  	builder := &AgentScheduleUpdateInfoBuilder{}
   350  	return builder
   351  }
   352  
   353  // 客服id;;[可以以普通用户身份在服务台发起工单,从工单详情里面获取用户guest.id](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/get)
   354  //
   355  // 示例值:agent-id
   356  func (builder *AgentScheduleUpdateInfoBuilder) AgentId(agentId string) *AgentScheduleUpdateInfoBuilder {
   357  	builder.agentId = agentId
   358  	builder.agentIdFlag = true
   359  	return builder
   360  }
   361  
   362  // 工作日程列表
   363  //
   364  // 示例值:
   365  func (builder *AgentScheduleUpdateInfoBuilder) Schedule(schedule []*WeekdaySchedule) *AgentScheduleUpdateInfoBuilder {
   366  	builder.schedule = schedule
   367  	builder.scheduleFlag = true
   368  	return builder
   369  }
   370  
   371  // 客服技能 ids
   372  //
   373  // 示例值:[“test-skill-id”]
   374  func (builder *AgentScheduleUpdateInfoBuilder) AgentSkillIds(agentSkillIds []string) *AgentScheduleUpdateInfoBuilder {
   375  	builder.agentSkillIds = agentSkillIds
   376  	builder.agentSkillIdsFlag = true
   377  	return builder
   378  }
   379  
   380  func (builder *AgentScheduleUpdateInfoBuilder) Build() *AgentScheduleUpdateInfo {
   381  	req := &AgentScheduleUpdateInfo{}
   382  	if builder.agentIdFlag {
   383  		req.AgentId = &builder.agentId
   384  
   385  	}
   386  	if builder.scheduleFlag {
   387  		req.Schedule = builder.schedule
   388  	}
   389  	if builder.agentSkillIdsFlag {
   390  		req.AgentSkillIds = builder.agentSkillIds
   391  	}
   392  	return req
   393  }
   394  
   395  type AgentSkill struct {
   396  	Id         *string           `json:"id,omitempty"`          // 技能id
   397  	HelpdeskId *string           `json:"helpdesk_id,omitempty"` // helpdesk id
   398  	Name       *string           `json:"name,omitempty"`        // 技能名
   399  	Rules      []*AgentSkillRule `json:"rules,omitempty"`       // 技能rules
   400  	AgentIds   []string          `json:"agent_ids,omitempty"`   // 具有此技能的客服ids
   401  	IsDefault  *bool             `json:"is_default,omitempty"`  // 默认技能
   402  	Agents     []*Agent          `json:"agents,omitempty"`      // 客服 info
   403  }
   404  
   405  type AgentSkillBuilder struct {
   406  	id             string // 技能id
   407  	idFlag         bool
   408  	helpdeskId     string // helpdesk id
   409  	helpdeskIdFlag bool
   410  	name           string // 技能名
   411  	nameFlag       bool
   412  	rules          []*AgentSkillRule // 技能rules
   413  	rulesFlag      bool
   414  	agentIds       []string // 具有此技能的客服ids
   415  	agentIdsFlag   bool
   416  	isDefault      bool // 默认技能
   417  	isDefaultFlag  bool
   418  	agents         []*Agent // 客服 info
   419  	agentsFlag     bool
   420  }
   421  
   422  func NewAgentSkillBuilder() *AgentSkillBuilder {
   423  	builder := &AgentSkillBuilder{}
   424  	return builder
   425  }
   426  
   427  // 技能id
   428  //
   429  // 示例值:test-skill-id
   430  func (builder *AgentSkillBuilder) Id(id string) *AgentSkillBuilder {
   431  	builder.id = id
   432  	builder.idFlag = true
   433  	return builder
   434  }
   435  
   436  // helpdesk id
   437  //
   438  // 示例值:
   439  func (builder *AgentSkillBuilder) HelpdeskId(helpdeskId string) *AgentSkillBuilder {
   440  	builder.helpdeskId = helpdeskId
   441  	builder.helpdeskIdFlag = true
   442  	return builder
   443  }
   444  
   445  // 技能名
   446  //
   447  // 示例值:skill-name
   448  func (builder *AgentSkillBuilder) Name(name string) *AgentSkillBuilder {
   449  	builder.name = name
   450  	builder.nameFlag = true
   451  	return builder
   452  }
   453  
   454  // 技能rules
   455  //
   456  // 示例值:
   457  func (builder *AgentSkillBuilder) Rules(rules []*AgentSkillRule) *AgentSkillBuilder {
   458  	builder.rules = rules
   459  	builder.rulesFlag = true
   460  	return builder
   461  }
   462  
   463  // 具有此技能的客服ids
   464  //
   465  // 示例值:["ou_ea21d7f018e1155d960e40d33191f966"]
   466  func (builder *AgentSkillBuilder) AgentIds(agentIds []string) *AgentSkillBuilder {
   467  	builder.agentIds = agentIds
   468  	builder.agentIdsFlag = true
   469  	return builder
   470  }
   471  
   472  // 默认技能
   473  //
   474  // 示例值:false
   475  func (builder *AgentSkillBuilder) IsDefault(isDefault bool) *AgentSkillBuilder {
   476  	builder.isDefault = isDefault
   477  	builder.isDefaultFlag = true
   478  	return builder
   479  }
   480  
   481  // 客服 info
   482  //
   483  // 示例值:
   484  func (builder *AgentSkillBuilder) Agents(agents []*Agent) *AgentSkillBuilder {
   485  	builder.agents = agents
   486  	builder.agentsFlag = true
   487  	return builder
   488  }
   489  
   490  func (builder *AgentSkillBuilder) Build() *AgentSkill {
   491  	req := &AgentSkill{}
   492  	if builder.idFlag {
   493  		req.Id = &builder.id
   494  
   495  	}
   496  	if builder.helpdeskIdFlag {
   497  		req.HelpdeskId = &builder.helpdeskId
   498  
   499  	}
   500  	if builder.nameFlag {
   501  		req.Name = &builder.name
   502  
   503  	}
   504  	if builder.rulesFlag {
   505  		req.Rules = builder.rules
   506  	}
   507  	if builder.agentIdsFlag {
   508  		req.AgentIds = builder.agentIds
   509  	}
   510  	if builder.isDefaultFlag {
   511  		req.IsDefault = &builder.isDefault
   512  
   513  	}
   514  	if builder.agentsFlag {
   515  		req.Agents = builder.agents
   516  	}
   517  	return req
   518  }
   519  
   520  type AgentSkillLessInfo struct {
   521  	Id        *string `json:"id,omitempty"`         // 客服技能 id
   522  	Name      *string `json:"name,omitempty"`       // 客服技能名
   523  	IsDefault *bool   `json:"is_default,omitempty"` // 是默认技能
   524  }
   525  
   526  type AgentSkillLessInfoBuilder struct {
   527  	id            string // 客服技能 id
   528  	idFlag        bool
   529  	name          string // 客服技能名
   530  	nameFlag      bool
   531  	isDefault     bool // 是默认技能
   532  	isDefaultFlag bool
   533  }
   534  
   535  func NewAgentSkillLessInfoBuilder() *AgentSkillLessInfoBuilder {
   536  	builder := &AgentSkillLessInfoBuilder{}
   537  	return builder
   538  }
   539  
   540  // 客服技能 id
   541  //
   542  // 示例值:agent-skill-id
   543  func (builder *AgentSkillLessInfoBuilder) Id(id string) *AgentSkillLessInfoBuilder {
   544  	builder.id = id
   545  	builder.idFlag = true
   546  	return builder
   547  }
   548  
   549  // 客服技能名
   550  //
   551  // 示例值:agent-skill
   552  func (builder *AgentSkillLessInfoBuilder) Name(name string) *AgentSkillLessInfoBuilder {
   553  	builder.name = name
   554  	builder.nameFlag = true
   555  	return builder
   556  }
   557  
   558  // 是默认技能
   559  //
   560  // 示例值:false
   561  func (builder *AgentSkillLessInfoBuilder) IsDefault(isDefault bool) *AgentSkillLessInfoBuilder {
   562  	builder.isDefault = isDefault
   563  	builder.isDefaultFlag = true
   564  	return builder
   565  }
   566  
   567  func (builder *AgentSkillLessInfoBuilder) Build() *AgentSkillLessInfo {
   568  	req := &AgentSkillLessInfo{}
   569  	if builder.idFlag {
   570  		req.Id = &builder.id
   571  
   572  	}
   573  	if builder.nameFlag {
   574  		req.Name = &builder.name
   575  
   576  	}
   577  	if builder.isDefaultFlag {
   578  		req.IsDefault = &builder.isDefault
   579  
   580  	}
   581  	return req
   582  }
   583  
   584  type AgentSkillRule struct {
   585  	Id               *string `json:"id,omitempty"`                // rule id, 参考[获取客服技能rules](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/agent_skill_rule/list) 用于获取rules options
   586  	SelectedOperator *int    `json:"selected_operator,omitempty"` // 运算符比较, 参考[客服技能运算符选项](/ssl:ttdoc/ukTMukTMukTM/ucDOyYjL3gjM24yN4IjN/operator-options)
   587  	OperatorOptions  []int   `json:"operator_options,omitempty"`  // rule操作数value,[客服技能及运算符](/ssl:ttdoc/ukTMukTMukTM/ucDOyYjL3gjM24yN4IjN/operator-options)
   588  	Operand          *string `json:"operand,omitempty"`           // rule 操作数的值
   589  	Category         *int    `json:"category,omitempty"`          // rule 类型,1-知识库,2-工单信息,3-用户飞书信息
   590  	DisplayName      *string `json:"display_name,omitempty"`      // rule 名
   591  }
   592  
   593  type AgentSkillRuleBuilder struct {
   594  	id                   string // rule id, 参考[获取客服技能rules](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/agent_skill_rule/list) 用于获取rules options
   595  	idFlag               bool
   596  	selectedOperator     int // 运算符比较, 参考[客服技能运算符选项](/ssl:ttdoc/ukTMukTMukTM/ucDOyYjL3gjM24yN4IjN/operator-options)
   597  	selectedOperatorFlag bool
   598  	operatorOptions      []int // rule操作数value,[客服技能及运算符](/ssl:ttdoc/ukTMukTMukTM/ucDOyYjL3gjM24yN4IjN/operator-options)
   599  	operatorOptionsFlag  bool
   600  	operand              string // rule 操作数的值
   601  	operandFlag          bool
   602  	category             int // rule 类型,1-知识库,2-工单信息,3-用户飞书信息
   603  	categoryFlag         bool
   604  	displayName          string // rule 名
   605  	displayNameFlag      bool
   606  }
   607  
   608  func NewAgentSkillRuleBuilder() *AgentSkillRuleBuilder {
   609  	builder := &AgentSkillRuleBuilder{}
   610  	return builder
   611  }
   612  
   613  // rule id, 参考[获取客服技能rules](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/agent_skill_rule/list) 用于获取rules options
   614  //
   615  // 示例值:test-skill-id
   616  func (builder *AgentSkillRuleBuilder) Id(id string) *AgentSkillRuleBuilder {
   617  	builder.id = id
   618  	builder.idFlag = true
   619  	return builder
   620  }
   621  
   622  // 运算符比较, 参考[客服技能运算符选项](/ssl:ttdoc/ukTMukTMukTM/ucDOyYjL3gjM24yN4IjN/operator-options)
   623  //
   624  // 示例值:8
   625  func (builder *AgentSkillRuleBuilder) SelectedOperator(selectedOperator int) *AgentSkillRuleBuilder {
   626  	builder.selectedOperator = selectedOperator
   627  	builder.selectedOperatorFlag = true
   628  	return builder
   629  }
   630  
   631  // rule操作数value,[客服技能及运算符](/ssl:ttdoc/ukTMukTMukTM/ucDOyYjL3gjM24yN4IjN/operator-options)
   632  //
   633  // 示例值:[3]
   634  func (builder *AgentSkillRuleBuilder) OperatorOptions(operatorOptions []int) *AgentSkillRuleBuilder {
   635  	builder.operatorOptions = operatorOptions
   636  	builder.operatorOptionsFlag = true
   637  	return builder
   638  }
   639  
   640  // rule 操作数的值
   641  //
   642  // 示例值:{;				"selected_departments": [;					{;						"id": "部门ID",;						"name": "IT";					};				];			}
   643  func (builder *AgentSkillRuleBuilder) Operand(operand string) *AgentSkillRuleBuilder {
   644  	builder.operand = operand
   645  	builder.operandFlag = true
   646  	return builder
   647  }
   648  
   649  // rule 类型,1-知识库,2-工单信息,3-用户飞书信息
   650  //
   651  // 示例值:3
   652  func (builder *AgentSkillRuleBuilder) Category(category int) *AgentSkillRuleBuilder {
   653  	builder.category = category
   654  	builder.categoryFlag = true
   655  	return builder
   656  }
   657  
   658  // rule 名
   659  //
   660  // 示例值:中文知识库分类
   661  func (builder *AgentSkillRuleBuilder) DisplayName(displayName string) *AgentSkillRuleBuilder {
   662  	builder.displayName = displayName
   663  	builder.displayNameFlag = true
   664  	return builder
   665  }
   666  
   667  func (builder *AgentSkillRuleBuilder) Build() *AgentSkillRule {
   668  	req := &AgentSkillRule{}
   669  	if builder.idFlag {
   670  		req.Id = &builder.id
   671  
   672  	}
   673  	if builder.selectedOperatorFlag {
   674  		req.SelectedOperator = &builder.selectedOperator
   675  
   676  	}
   677  	if builder.operatorOptionsFlag {
   678  		req.OperatorOptions = builder.operatorOptions
   679  	}
   680  	if builder.operandFlag {
   681  		req.Operand = &builder.operand
   682  
   683  	}
   684  	if builder.categoryFlag {
   685  		req.Category = &builder.category
   686  
   687  	}
   688  	if builder.displayNameFlag {
   689  		req.DisplayName = &builder.displayName
   690  
   691  	}
   692  	return req
   693  }
   694  
   695  type AgentUser struct {
   696  	Id          *string `json:"id,omitempty"`           // 客服 id
   697  	AvatarUrl   *string `json:"avatar_url,omitempty"`   // avatar url
   698  	Name        *string `json:"name,omitempty"`         // 客服名字
   699  	Email       *string `json:"email,omitempty"`        // email
   700  	Department  *string `json:"department,omitempty"`   // 部门
   701  	CompanyName *string `json:"company_name,omitempty"` // 公司名
   702  }
   703  
   704  type AgentUserBuilder struct {
   705  	id              string // 客服 id
   706  	idFlag          bool
   707  	avatarUrl       string // avatar url
   708  	avatarUrlFlag   bool
   709  	name            string // 客服名字
   710  	nameFlag        bool
   711  	email           string // email
   712  	emailFlag       bool
   713  	department      string // 部门
   714  	departmentFlag  bool
   715  	companyName     string // 公司名
   716  	companyNameFlag bool
   717  }
   718  
   719  func NewAgentUserBuilder() *AgentUserBuilder {
   720  	builder := &AgentUserBuilder{}
   721  	return builder
   722  }
   723  
   724  // 客服 id
   725  //
   726  // 示例值:ou_ea651a5c09e2d01af8acd34059f5359b
   727  func (builder *AgentUserBuilder) Id(id string) *AgentUserBuilder {
   728  	builder.id = id
   729  	builder.idFlag = true
   730  	return builder
   731  }
   732  
   733  // avatar url
   734  //
   735  // 示例值:https://avatar-url.com/test.png
   736  func (builder *AgentUserBuilder) AvatarUrl(avatarUrl string) *AgentUserBuilder {
   737  	builder.avatarUrl = avatarUrl
   738  	builder.avatarUrlFlag = true
   739  	return builder
   740  }
   741  
   742  // 客服名字
   743  //
   744  // 示例值:test-user
   745  func (builder *AgentUserBuilder) Name(name string) *AgentUserBuilder {
   746  	builder.name = name
   747  	builder.nameFlag = true
   748  	return builder
   749  }
   750  
   751  // email
   752  //
   753  // 示例值:test@bytedance.com
   754  func (builder *AgentUserBuilder) Email(email string) *AgentUserBuilder {
   755  	builder.email = email
   756  	builder.emailFlag = true
   757  	return builder
   758  }
   759  
   760  // 部门
   761  //
   762  // 示例值:测试部门
   763  func (builder *AgentUserBuilder) Department(department string) *AgentUserBuilder {
   764  	builder.department = department
   765  	builder.departmentFlag = true
   766  	return builder
   767  }
   768  
   769  // 公司名
   770  //
   771  // 示例值:test-company
   772  func (builder *AgentUserBuilder) CompanyName(companyName string) *AgentUserBuilder {
   773  	builder.companyName = companyName
   774  	builder.companyNameFlag = true
   775  	return builder
   776  }
   777  
   778  func (builder *AgentUserBuilder) Build() *AgentUser {
   779  	req := &AgentUser{}
   780  	if builder.idFlag {
   781  		req.Id = &builder.id
   782  
   783  	}
   784  	if builder.avatarUrlFlag {
   785  		req.AvatarUrl = &builder.avatarUrl
   786  
   787  	}
   788  	if builder.nameFlag {
   789  		req.Name = &builder.name
   790  
   791  	}
   792  	if builder.emailFlag {
   793  		req.Email = &builder.email
   794  
   795  	}
   796  	if builder.departmentFlag {
   797  		req.Department = &builder.department
   798  
   799  	}
   800  	if builder.companyNameFlag {
   801  		req.CompanyName = &builder.companyName
   802  
   803  	}
   804  	return req
   805  }
   806  
   807  type BotMessage struct {
   808  	MsgType     *string `json:"msg_type,omitempty"`     // 消息类型
   809  	Content     *string `json:"content,omitempty"`      // 消息内容,json格式结构序列化成string。格式说明参考: [发送消息content说明](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/im-v1/message/create_json)
   810  	ReceiverId  *string `json:"receiver_id,omitempty"`  // 接收消息用户id
   811  	ReceiveType *string `json:"receive_type,omitempty"` // 接收消息方式,chat(服务台专属服务群)或user(服务台机器人私聊)。若选择专属服务群,用户有正在处理的工单将会发送失败。默认以chat方式发送。
   812  }
   813  
   814  type BotMessageBuilder struct {
   815  	msgType         string // 消息类型
   816  	msgTypeFlag     bool
   817  	content         string // 消息内容,json格式结构序列化成string。格式说明参考: [发送消息content说明](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/im-v1/message/create_json)
   818  	contentFlag     bool
   819  	receiverId      string // 接收消息用户id
   820  	receiverIdFlag  bool
   821  	receiveType     string // 接收消息方式,chat(服务台专属服务群)或user(服务台机器人私聊)。若选择专属服务群,用户有正在处理的工单将会发送失败。默认以chat方式发送。
   822  	receiveTypeFlag bool
   823  }
   824  
   825  func NewBotMessageBuilder() *BotMessageBuilder {
   826  	builder := &BotMessageBuilder{}
   827  	return builder
   828  }
   829  
   830  // 消息类型
   831  //
   832  // 示例值:post
   833  func (builder *BotMessageBuilder) MsgType(msgType string) *BotMessageBuilder {
   834  	builder.msgType = msgType
   835  	builder.msgTypeFlag = true
   836  	return builder
   837  }
   838  
   839  // 消息内容,json格式结构序列化成string。格式说明参考: [发送消息content说明](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/im-v1/message/create_json)
   840  //
   841  // 示例值:{\"post\":{\"zh_cn\":{\"title\":\"some title\",\"content\":[[{\"tag\":\"text\",\"text\":\"some content\"}]]}}}
   842  func (builder *BotMessageBuilder) Content(content string) *BotMessageBuilder {
   843  	builder.content = content
   844  	builder.contentFlag = true
   845  	return builder
   846  }
   847  
   848  // 接收消息用户id
   849  //
   850  // 示例值:ou_7346484524
   851  func (builder *BotMessageBuilder) ReceiverId(receiverId string) *BotMessageBuilder {
   852  	builder.receiverId = receiverId
   853  	builder.receiverIdFlag = true
   854  	return builder
   855  }
   856  
   857  // 接收消息方式,chat(服务台专属服务群)或user(服务台机器人私聊)。若选择专属服务群,用户有正在处理的工单将会发送失败。默认以chat方式发送。
   858  //
   859  // 示例值:chat
   860  func (builder *BotMessageBuilder) ReceiveType(receiveType string) *BotMessageBuilder {
   861  	builder.receiveType = receiveType
   862  	builder.receiveTypeFlag = true
   863  	return builder
   864  }
   865  
   866  func (builder *BotMessageBuilder) Build() *BotMessage {
   867  	req := &BotMessage{}
   868  	if builder.msgTypeFlag {
   869  		req.MsgType = &builder.msgType
   870  
   871  	}
   872  	if builder.contentFlag {
   873  		req.Content = &builder.content
   874  
   875  	}
   876  	if builder.receiverIdFlag {
   877  		req.ReceiverId = &builder.receiverId
   878  
   879  	}
   880  	if builder.receiveTypeFlag {
   881  		req.ReceiveType = &builder.receiveType
   882  
   883  	}
   884  	return req
   885  }
   886  
   887  type Category struct {
   888  	CategoryId *string `json:"category_id,omitempty"` // 知识库分类ID
   889  	Id         *string `json:"id,omitempty"`          // 知识库分类ID,(旧版,请使用category_id)
   890  	Name       *string `json:"name,omitempty"`        // 名称
   891  	ParentId   *string `json:"parent_id,omitempty"`   // 父知识库分类ID
   892  	HelpdeskId *string `json:"helpdesk_id,omitempty"` // 服务台ID
   893  	Language   *string `json:"language,omitempty"`    // 语言
   894  }
   895  
   896  type CategoryBuilder struct {
   897  	categoryId     string // 知识库分类ID
   898  	categoryIdFlag bool
   899  	id             string // 知识库分类ID,(旧版,请使用category_id)
   900  	idFlag         bool
   901  	name           string // 名称
   902  	nameFlag       bool
   903  	parentId       string // 父知识库分类ID
   904  	parentIdFlag   bool
   905  	helpdeskId     string // 服务台ID
   906  	helpdeskIdFlag bool
   907  	language       string // 语言
   908  	languageFlag   bool
   909  }
   910  
   911  func NewCategoryBuilder() *CategoryBuilder {
   912  	builder := &CategoryBuilder{}
   913  	return builder
   914  }
   915  
   916  // 知识库分类ID
   917  //
   918  // 示例值:6948728206392295444
   919  func (builder *CategoryBuilder) CategoryId(categoryId string) *CategoryBuilder {
   920  	builder.categoryId = categoryId
   921  	builder.categoryIdFlag = true
   922  	return builder
   923  }
   924  
   925  // 知识库分类ID,(旧版,请使用category_id)
   926  //
   927  // 示例值:6948728206392295444
   928  func (builder *CategoryBuilder) Id(id string) *CategoryBuilder {
   929  	builder.id = id
   930  	builder.idFlag = true
   931  	return builder
   932  }
   933  
   934  // 名称
   935  //
   936  // 示例值:创建团队和邀请成员
   937  func (builder *CategoryBuilder) Name(name string) *CategoryBuilder {
   938  	builder.name = name
   939  	builder.nameFlag = true
   940  	return builder
   941  }
   942  
   943  // 父知识库分类ID
   944  //
   945  // 示例值:0
   946  func (builder *CategoryBuilder) ParentId(parentId string) *CategoryBuilder {
   947  	builder.parentId = parentId
   948  	builder.parentIdFlag = true
   949  	return builder
   950  }
   951  
   952  // 服务台ID
   953  //
   954  // 示例值:6939771743531696147
   955  func (builder *CategoryBuilder) HelpdeskId(helpdeskId string) *CategoryBuilder {
   956  	builder.helpdeskId = helpdeskId
   957  	builder.helpdeskIdFlag = true
   958  	return builder
   959  }
   960  
   961  // 语言
   962  //
   963  // 示例值:zh_cn
   964  func (builder *CategoryBuilder) Language(language string) *CategoryBuilder {
   965  	builder.language = language
   966  	builder.languageFlag = true
   967  	return builder
   968  }
   969  
   970  func (builder *CategoryBuilder) Build() *Category {
   971  	req := &Category{}
   972  	if builder.categoryIdFlag {
   973  		req.CategoryId = &builder.categoryId
   974  
   975  	}
   976  	if builder.idFlag {
   977  		req.Id = &builder.id
   978  
   979  	}
   980  	if builder.nameFlag {
   981  		req.Name = &builder.name
   982  
   983  	}
   984  	if builder.parentIdFlag {
   985  		req.ParentId = &builder.parentId
   986  
   987  	}
   988  	if builder.helpdeskIdFlag {
   989  		req.HelpdeskId = &builder.helpdeskId
   990  
   991  	}
   992  	if builder.languageFlag {
   993  		req.Language = &builder.language
   994  
   995  	}
   996  	return req
   997  }
   998  
   999  type Comments struct {
  1000  	Content       *string `json:"content,omitempty"`         // 备注
  1001  	CreatedAt     *int    `json:"created_at,omitempty"`      // 备注时间,单位毫秒
  1002  	Id            *int    `json:"id,omitempty"`              // 备注ID
  1003  	UserAvatarUrl *string `json:"user_avatar_url,omitempty"` // 备注人头像
  1004  	UserName      *string `json:"user_name,omitempty"`       // 备注人姓名
  1005  	UserId        *int    `json:"user_id,omitempty"`         // 备注人ID
  1006  }
  1007  
  1008  type CommentsBuilder struct {
  1009  	content           string // 备注
  1010  	contentFlag       bool
  1011  	createdAt         int // 备注时间,单位毫秒
  1012  	createdAtFlag     bool
  1013  	id                int // 备注ID
  1014  	idFlag            bool
  1015  	userAvatarUrl     string // 备注人头像
  1016  	userAvatarUrlFlag bool
  1017  	userName          string // 备注人姓名
  1018  	userNameFlag      bool
  1019  	userId            int // 备注人ID
  1020  	userIdFlag        bool
  1021  }
  1022  
  1023  func NewCommentsBuilder() *CommentsBuilder {
  1024  	builder := &CommentsBuilder{}
  1025  	return builder
  1026  }
  1027  
  1028  // 备注
  1029  //
  1030  // 示例值:备注内容
  1031  func (builder *CommentsBuilder) Content(content string) *CommentsBuilder {
  1032  	builder.content = content
  1033  	builder.contentFlag = true
  1034  	return builder
  1035  }
  1036  
  1037  // 备注时间,单位毫秒
  1038  //
  1039  // 示例值:备注时间
  1040  func (builder *CommentsBuilder) CreatedAt(createdAt int) *CommentsBuilder {
  1041  	builder.createdAt = createdAt
  1042  	builder.createdAtFlag = true
  1043  	return builder
  1044  }
  1045  
  1046  // 备注ID
  1047  //
  1048  // 示例值:备注id
  1049  func (builder *CommentsBuilder) Id(id int) *CommentsBuilder {
  1050  	builder.id = id
  1051  	builder.idFlag = true
  1052  	return builder
  1053  }
  1054  
  1055  // 备注人头像
  1056  //
  1057  // 示例值:备注人头像
  1058  func (builder *CommentsBuilder) UserAvatarUrl(userAvatarUrl string) *CommentsBuilder {
  1059  	builder.userAvatarUrl = userAvatarUrl
  1060  	builder.userAvatarUrlFlag = true
  1061  	return builder
  1062  }
  1063  
  1064  // 备注人姓名
  1065  //
  1066  // 示例值:备注人姓名
  1067  func (builder *CommentsBuilder) UserName(userName string) *CommentsBuilder {
  1068  	builder.userName = userName
  1069  	builder.userNameFlag = true
  1070  	return builder
  1071  }
  1072  
  1073  // 备注人ID
  1074  //
  1075  // 示例值:备注人id
  1076  func (builder *CommentsBuilder) UserId(userId int) *CommentsBuilder {
  1077  	builder.userId = userId
  1078  	builder.userIdFlag = true
  1079  	return builder
  1080  }
  1081  
  1082  func (builder *CommentsBuilder) Build() *Comments {
  1083  	req := &Comments{}
  1084  	if builder.contentFlag {
  1085  		req.Content = &builder.content
  1086  
  1087  	}
  1088  	if builder.createdAtFlag {
  1089  		req.CreatedAt = &builder.createdAt
  1090  
  1091  	}
  1092  	if builder.idFlag {
  1093  		req.Id = &builder.id
  1094  
  1095  	}
  1096  	if builder.userAvatarUrlFlag {
  1097  		req.UserAvatarUrl = &builder.userAvatarUrl
  1098  
  1099  	}
  1100  	if builder.userNameFlag {
  1101  		req.UserName = &builder.userName
  1102  
  1103  	}
  1104  	if builder.userIdFlag {
  1105  		req.UserId = &builder.userId
  1106  
  1107  	}
  1108  	return req
  1109  }
  1110  
  1111  type CustomizedFieldDisplayItem struct {
  1112  	Id          *string `json:"id,omitempty"`           // 自定义字段ID
  1113  	Value       *string `json:"value,omitempty"`        // 自定义字段值
  1114  	KeyName     *string `json:"key_name,omitempty"`     // 键名
  1115  	DisplayName *string `json:"display_name,omitempty"` // 展示名称
  1116  	Position    *int    `json:"position,omitempty"`     // 展示位置
  1117  	Required    *bool   `json:"required,omitempty"`     // 是否必填
  1118  	Editable    *bool   `json:"editable,omitempty"`     // 是否可修改
  1119  }
  1120  
  1121  type CustomizedFieldDisplayItemBuilder struct {
  1122  	id              string // 自定义字段ID
  1123  	idFlag          bool
  1124  	value           string // 自定义字段值
  1125  	valueFlag       bool
  1126  	keyName         string // 键名
  1127  	keyNameFlag     bool
  1128  	displayName     string // 展示名称
  1129  	displayNameFlag bool
  1130  	position        int // 展示位置
  1131  	positionFlag    bool
  1132  	required        bool // 是否必填
  1133  	requiredFlag    bool
  1134  	editable        bool // 是否可修改
  1135  	editableFlag    bool
  1136  }
  1137  
  1138  func NewCustomizedFieldDisplayItemBuilder() *CustomizedFieldDisplayItemBuilder {
  1139  	builder := &CustomizedFieldDisplayItemBuilder{}
  1140  	return builder
  1141  }
  1142  
  1143  // 自定义字段ID
  1144  //
  1145  // 示例值:123
  1146  func (builder *CustomizedFieldDisplayItemBuilder) Id(id string) *CustomizedFieldDisplayItemBuilder {
  1147  	builder.id = id
  1148  	builder.idFlag = true
  1149  	return builder
  1150  }
  1151  
  1152  // 自定义字段值
  1153  //
  1154  // 示例值:value
  1155  func (builder *CustomizedFieldDisplayItemBuilder) Value(value string) *CustomizedFieldDisplayItemBuilder {
  1156  	builder.value = value
  1157  	builder.valueFlag = true
  1158  	return builder
  1159  }
  1160  
  1161  // 键名
  1162  //
  1163  // 示例值:key
  1164  func (builder *CustomizedFieldDisplayItemBuilder) KeyName(keyName string) *CustomizedFieldDisplayItemBuilder {
  1165  	builder.keyName = keyName
  1166  	builder.keyNameFlag = true
  1167  	return builder
  1168  }
  1169  
  1170  // 展示名称
  1171  //
  1172  // 示例值:display name
  1173  func (builder *CustomizedFieldDisplayItemBuilder) DisplayName(displayName string) *CustomizedFieldDisplayItemBuilder {
  1174  	builder.displayName = displayName
  1175  	builder.displayNameFlag = true
  1176  	return builder
  1177  }
  1178  
  1179  // 展示位置
  1180  //
  1181  // 示例值:1
  1182  func (builder *CustomizedFieldDisplayItemBuilder) Position(position int) *CustomizedFieldDisplayItemBuilder {
  1183  	builder.position = position
  1184  	builder.positionFlag = true
  1185  	return builder
  1186  }
  1187  
  1188  // 是否必填
  1189  //
  1190  // 示例值:true
  1191  func (builder *CustomizedFieldDisplayItemBuilder) Required(required bool) *CustomizedFieldDisplayItemBuilder {
  1192  	builder.required = required
  1193  	builder.requiredFlag = true
  1194  	return builder
  1195  }
  1196  
  1197  // 是否可修改
  1198  //
  1199  // 示例值:true
  1200  func (builder *CustomizedFieldDisplayItemBuilder) Editable(editable bool) *CustomizedFieldDisplayItemBuilder {
  1201  	builder.editable = editable
  1202  	builder.editableFlag = true
  1203  	return builder
  1204  }
  1205  
  1206  func (builder *CustomizedFieldDisplayItemBuilder) Build() *CustomizedFieldDisplayItem {
  1207  	req := &CustomizedFieldDisplayItem{}
  1208  	if builder.idFlag {
  1209  		req.Id = &builder.id
  1210  
  1211  	}
  1212  	if builder.valueFlag {
  1213  		req.Value = &builder.value
  1214  
  1215  	}
  1216  	if builder.keyNameFlag {
  1217  		req.KeyName = &builder.keyName
  1218  
  1219  	}
  1220  	if builder.displayNameFlag {
  1221  		req.DisplayName = &builder.displayName
  1222  
  1223  	}
  1224  	if builder.positionFlag {
  1225  		req.Position = &builder.position
  1226  
  1227  	}
  1228  	if builder.requiredFlag {
  1229  		req.Required = &builder.required
  1230  
  1231  	}
  1232  	if builder.editableFlag {
  1233  		req.Editable = &builder.editable
  1234  
  1235  	}
  1236  	return req
  1237  }
  1238  
  1239  type Event struct {
  1240  	Type    *string `json:"type,omitempty"`    // 事件类型
  1241  	Subtype *string `json:"subtype,omitempty"` // 事件子类型
  1242  }
  1243  
  1244  type EventBuilder struct {
  1245  	type_       string // 事件类型
  1246  	typeFlag    bool
  1247  	subtype     string // 事件子类型
  1248  	subtypeFlag bool
  1249  }
  1250  
  1251  func NewEventBuilder() *EventBuilder {
  1252  	builder := &EventBuilder{}
  1253  	return builder
  1254  }
  1255  
  1256  // 事件类型
  1257  //
  1258  // 示例值:helpdesk.ticket_message
  1259  func (builder *EventBuilder) Type(type_ string) *EventBuilder {
  1260  	builder.type_ = type_
  1261  	builder.typeFlag = true
  1262  	return builder
  1263  }
  1264  
  1265  // 事件子类型
  1266  //
  1267  // 示例值:ticket_message.created_v1
  1268  func (builder *EventBuilder) Subtype(subtype string) *EventBuilder {
  1269  	builder.subtype = subtype
  1270  	builder.subtypeFlag = true
  1271  	return builder
  1272  }
  1273  
  1274  func (builder *EventBuilder) Build() *Event {
  1275  	req := &Event{}
  1276  	if builder.typeFlag {
  1277  		req.Type = &builder.type_
  1278  
  1279  	}
  1280  	if builder.subtypeFlag {
  1281  		req.Subtype = &builder.subtype
  1282  
  1283  	}
  1284  	return req
  1285  }
  1286  
  1287  type Faq struct {
  1288  	FaqId          *string     `json:"faq_id,omitempty"`          // 知识库ID
  1289  	Id             *string     `json:"id,omitempty"`              // 知识库旧版ID,请使用faq_id
  1290  	HelpdeskId     *string     `json:"helpdesk_id,omitempty"`     // 服务台ID
  1291  	Question       *string     `json:"question,omitempty"`        // 问题
  1292  	Answer         *string     `json:"answer,omitempty"`          // 答案
  1293  	AnswerRichtext []*Richtext `json:"answer_richtext,omitempty"` // 富文本答案
  1294  	CreateTime     *int        `json:"create_time,omitempty"`     // 创建时间
  1295  	UpdateTime     *int        `json:"update_time,omitempty"`     // 修改时间
  1296  	Categories     []*Category `json:"categories,omitempty"`      // 分类
  1297  	Tags           []string    `json:"tags,omitempty"`            // 相似问题列表
  1298  	ExpireTime     *int        `json:"expire_time,omitempty"`     // 失效时间
  1299  	UpdateUser     *TicketUser `json:"update_user,omitempty"`     // 更新用户
  1300  	CreateUser     *TicketUser `json:"create_user,omitempty"`     // 创建用户
  1301  }
  1302  
  1303  type FaqBuilder struct {
  1304  	faqId              string // 知识库ID
  1305  	faqIdFlag          bool
  1306  	id                 string // 知识库旧版ID,请使用faq_id
  1307  	idFlag             bool
  1308  	helpdeskId         string // 服务台ID
  1309  	helpdeskIdFlag     bool
  1310  	question           string // 问题
  1311  	questionFlag       bool
  1312  	answer             string // 答案
  1313  	answerFlag         bool
  1314  	answerRichtext     []*Richtext // 富文本答案
  1315  	answerRichtextFlag bool
  1316  	createTime         int // 创建时间
  1317  	createTimeFlag     bool
  1318  	updateTime         int // 修改时间
  1319  	updateTimeFlag     bool
  1320  	categories         []*Category // 分类
  1321  	categoriesFlag     bool
  1322  	tags               []string // 相似问题列表
  1323  	tagsFlag           bool
  1324  	expireTime         int // 失效时间
  1325  	expireTimeFlag     bool
  1326  	updateUser         *TicketUser // 更新用户
  1327  	updateUserFlag     bool
  1328  	createUser         *TicketUser // 创建用户
  1329  	createUserFlag     bool
  1330  }
  1331  
  1332  func NewFaqBuilder() *FaqBuilder {
  1333  	builder := &FaqBuilder{}
  1334  	return builder
  1335  }
  1336  
  1337  // 知识库ID
  1338  //
  1339  // 示例值:6936004780707807231
  1340  func (builder *FaqBuilder) FaqId(faqId string) *FaqBuilder {
  1341  	builder.faqId = faqId
  1342  	builder.faqIdFlag = true
  1343  	return builder
  1344  }
  1345  
  1346  // 知识库旧版ID,请使用faq_id
  1347  //
  1348  // 示例值:6936004780707807231
  1349  func (builder *FaqBuilder) Id(id string) *FaqBuilder {
  1350  	builder.id = id
  1351  	builder.idFlag = true
  1352  	return builder
  1353  }
  1354  
  1355  // 服务台ID
  1356  //
  1357  // 示例值:6936004780707807251
  1358  func (builder *FaqBuilder) HelpdeskId(helpdeskId string) *FaqBuilder {
  1359  	builder.helpdeskId = helpdeskId
  1360  	builder.helpdeskIdFlag = true
  1361  	return builder
  1362  }
  1363  
  1364  // 问题
  1365  //
  1366  // 示例值:问题
  1367  func (builder *FaqBuilder) Question(question string) *FaqBuilder {
  1368  	builder.question = question
  1369  	builder.questionFlag = true
  1370  	return builder
  1371  }
  1372  
  1373  // 答案
  1374  //
  1375  // 示例值:答案
  1376  func (builder *FaqBuilder) Answer(answer string) *FaqBuilder {
  1377  	builder.answer = answer
  1378  	builder.answerFlag = true
  1379  	return builder
  1380  }
  1381  
  1382  // 富文本答案
  1383  //
  1384  // 示例值:
  1385  func (builder *FaqBuilder) AnswerRichtext(answerRichtext []*Richtext) *FaqBuilder {
  1386  	builder.answerRichtext = answerRichtext
  1387  	builder.answerRichtextFlag = true
  1388  	return builder
  1389  }
  1390  
  1391  // 创建时间
  1392  //
  1393  // 示例值:1596379008
  1394  func (builder *FaqBuilder) CreateTime(createTime int) *FaqBuilder {
  1395  	builder.createTime = createTime
  1396  	builder.createTimeFlag = true
  1397  	return builder
  1398  }
  1399  
  1400  // 修改时间
  1401  //
  1402  // 示例值:1596379008
  1403  func (builder *FaqBuilder) UpdateTime(updateTime int) *FaqBuilder {
  1404  	builder.updateTime = updateTime
  1405  	builder.updateTimeFlag = true
  1406  	return builder
  1407  }
  1408  
  1409  // 分类
  1410  //
  1411  // 示例值:
  1412  func (builder *FaqBuilder) Categories(categories []*Category) *FaqBuilder {
  1413  	builder.categories = categories
  1414  	builder.categoriesFlag = true
  1415  	return builder
  1416  }
  1417  
  1418  // 相似问题列表
  1419  //
  1420  // 示例值:
  1421  func (builder *FaqBuilder) Tags(tags []string) *FaqBuilder {
  1422  	builder.tags = tags
  1423  	builder.tagsFlag = true
  1424  	return builder
  1425  }
  1426  
  1427  // 失效时间
  1428  //
  1429  // 示例值:1596379008
  1430  func (builder *FaqBuilder) ExpireTime(expireTime int) *FaqBuilder {
  1431  	builder.expireTime = expireTime
  1432  	builder.expireTimeFlag = true
  1433  	return builder
  1434  }
  1435  
  1436  // 更新用户
  1437  //
  1438  // 示例值:
  1439  func (builder *FaqBuilder) UpdateUser(updateUser *TicketUser) *FaqBuilder {
  1440  	builder.updateUser = updateUser
  1441  	builder.updateUserFlag = true
  1442  	return builder
  1443  }
  1444  
  1445  // 创建用户
  1446  //
  1447  // 示例值:
  1448  func (builder *FaqBuilder) CreateUser(createUser *TicketUser) *FaqBuilder {
  1449  	builder.createUser = createUser
  1450  	builder.createUserFlag = true
  1451  	return builder
  1452  }
  1453  
  1454  func (builder *FaqBuilder) Build() *Faq {
  1455  	req := &Faq{}
  1456  	if builder.faqIdFlag {
  1457  		req.FaqId = &builder.faqId
  1458  
  1459  	}
  1460  	if builder.idFlag {
  1461  		req.Id = &builder.id
  1462  
  1463  	}
  1464  	if builder.helpdeskIdFlag {
  1465  		req.HelpdeskId = &builder.helpdeskId
  1466  
  1467  	}
  1468  	if builder.questionFlag {
  1469  		req.Question = &builder.question
  1470  
  1471  	}
  1472  	if builder.answerFlag {
  1473  		req.Answer = &builder.answer
  1474  
  1475  	}
  1476  	if builder.answerRichtextFlag {
  1477  		req.AnswerRichtext = builder.answerRichtext
  1478  	}
  1479  	if builder.createTimeFlag {
  1480  		req.CreateTime = &builder.createTime
  1481  
  1482  	}
  1483  	if builder.updateTimeFlag {
  1484  		req.UpdateTime = &builder.updateTime
  1485  
  1486  	}
  1487  	if builder.categoriesFlag {
  1488  		req.Categories = builder.categories
  1489  	}
  1490  	if builder.tagsFlag {
  1491  		req.Tags = builder.tags
  1492  	}
  1493  	if builder.expireTimeFlag {
  1494  		req.ExpireTime = &builder.expireTime
  1495  
  1496  	}
  1497  	if builder.updateUserFlag {
  1498  		req.UpdateUser = builder.updateUser
  1499  	}
  1500  	if builder.createUserFlag {
  1501  		req.CreateUser = builder.createUser
  1502  	}
  1503  	return req
  1504  }
  1505  
  1506  type FaqUpdateInfo struct {
  1507  	CategoryId     *string  `json:"category_id,omitempty"`     // 知识库分类ID
  1508  	Question       *string  `json:"question,omitempty"`        // 问题
  1509  	Answer         *string  `json:"answer,omitempty"`          // 答案
  1510  	AnswerRichtext *string  `json:"answer_richtext,omitempty"` // 富文本答案和答案必须有一个必填。Json Array格式,富文本结构请见[了解更多: 富文本](/ssl:ttdoc/ukTMukTMukTM/uITM0YjLyEDN24iMxQjN)
  1511  	Tags           []string `json:"tags,omitempty"`            // 相似问题
  1512  }
  1513  
  1514  type FaqUpdateInfoBuilder struct {
  1515  	categoryId         string // 知识库分类ID
  1516  	categoryIdFlag     bool
  1517  	question           string // 问题
  1518  	questionFlag       bool
  1519  	answer             string // 答案
  1520  	answerFlag         bool
  1521  	answerRichtext     string // 富文本答案和答案必须有一个必填。Json Array格式,富文本结构请见[了解更多: 富文本](/ssl:ttdoc/ukTMukTMukTM/uITM0YjLyEDN24iMxQjN)
  1522  	answerRichtextFlag bool
  1523  	tags               []string // 相似问题
  1524  	tagsFlag           bool
  1525  }
  1526  
  1527  func NewFaqUpdateInfoBuilder() *FaqUpdateInfoBuilder {
  1528  	builder := &FaqUpdateInfoBuilder{}
  1529  	return builder
  1530  }
  1531  
  1532  // 知识库分类ID
  1533  //
  1534  // 示例值:6836004780707807251
  1535  func (builder *FaqUpdateInfoBuilder) CategoryId(categoryId string) *FaqUpdateInfoBuilder {
  1536  	builder.categoryId = categoryId
  1537  	builder.categoryIdFlag = true
  1538  	return builder
  1539  }
  1540  
  1541  // 问题
  1542  //
  1543  // 示例值:问题
  1544  func (builder *FaqUpdateInfoBuilder) Question(question string) *FaqUpdateInfoBuilder {
  1545  	builder.question = question
  1546  	builder.questionFlag = true
  1547  	return builder
  1548  }
  1549  
  1550  // 答案
  1551  //
  1552  // 示例值:答案
  1553  func (builder *FaqUpdateInfoBuilder) Answer(answer string) *FaqUpdateInfoBuilder {
  1554  	builder.answer = answer
  1555  	builder.answerFlag = true
  1556  	return builder
  1557  }
  1558  
  1559  // 富文本答案和答案必须有一个必填。Json Array格式,富文本结构请见[了解更多: 富文本](/ssl:ttdoc/ukTMukTMukTM/uITM0YjLyEDN24iMxQjN)
  1560  //
  1561  // 示例值:[{;						"content": "这只是一个测试,医保问题",;						"type": "text";					}]
  1562  func (builder *FaqUpdateInfoBuilder) AnswerRichtext(answerRichtext string) *FaqUpdateInfoBuilder {
  1563  	builder.answerRichtext = answerRichtext
  1564  	builder.answerRichtextFlag = true
  1565  	return builder
  1566  }
  1567  
  1568  // 相似问题
  1569  //
  1570  // 示例值:["tag1","tag2","tag3"]
  1571  func (builder *FaqUpdateInfoBuilder) Tags(tags []string) *FaqUpdateInfoBuilder {
  1572  	builder.tags = tags
  1573  	builder.tagsFlag = true
  1574  	return builder
  1575  }
  1576  
  1577  func (builder *FaqUpdateInfoBuilder) Build() *FaqUpdateInfo {
  1578  	req := &FaqUpdateInfo{}
  1579  	if builder.categoryIdFlag {
  1580  		req.CategoryId = &builder.categoryId
  1581  
  1582  	}
  1583  	if builder.questionFlag {
  1584  		req.Question = &builder.question
  1585  
  1586  	}
  1587  	if builder.answerFlag {
  1588  		req.Answer = &builder.answer
  1589  
  1590  	}
  1591  	if builder.answerRichtextFlag {
  1592  		req.AnswerRichtext = &builder.answerRichtext
  1593  
  1594  	}
  1595  	if builder.tagsFlag {
  1596  		req.Tags = builder.tags
  1597  	}
  1598  	return req
  1599  }
  1600  
  1601  type Notification struct {
  1602  	Id                          *string                   `json:"id,omitempty"`                              // 非必填,创建成功后返回
  1603  	JobName                     *string                   `json:"job_name,omitempty"`                        // 必填,任务名称
  1604  	Status                      *int                      `json:"status,omitempty"`                          // 非必填,创建成功后返回
  1605  	CreateUser                  *NotificationUser         `json:"create_user,omitempty"`                     // 非必填,创建人
  1606  	CreatedAt                   *string                   `json:"created_at,omitempty"`                      // 非必填,创建时间(毫秒时间戳)
  1607  	UpdateUser                  *NotificationUser         `json:"update_user,omitempty"`                     // 非必填,更新用户
  1608  	UpdatedAt                   *string                   `json:"updated_at,omitempty"`                      // 非必填,更新时间(毫秒时间戳)
  1609  	TargetUserCount             *int                      `json:"target_user_count,omitempty"`               // 非必填,目标推送用户总数
  1610  	SentUserCount               *int                      `json:"sent_user_count,omitempty"`                 // 非必填,已推送用户总数
  1611  	ReadUserCount               *int                      `json:"read_user_count,omitempty"`                 // 非必填,已读用户总数
  1612  	SendAt                      *string                   `json:"send_at,omitempty"`                         // 非必填,推送任务触发时间(毫秒时间戳)
  1613  	PushContent                 *string                   `json:"push_content,omitempty"`                    // 必填,推送内容,详见:https://open.feishu.cn/tool/cardbuilder?from=howtoguide
  1614  	PushType                    *int                      `json:"push_type,omitempty"`                       // 必填,;0(定时推送:push_scope不能等于3) 1(新人入职推送:push_scope必须等于1或者3;new_staff_scope_type不能为空)
  1615  	PushScopeType               *int                      `json:"push_scope_type,omitempty"`                 // 必填,;推送范围(服务台私信) 0:组织内全部成员(user_list和department_list必须为空) 1:不推送任何成员(user_list和department_list必须为空,chat_list不可为空) 2:推送到部分成员(user_list或department_list不能为空) 3:入职新人 以上四种状态,chat_list都相对独立,只有在推送范围为1时,必须需要设置chat_list
  1616  	NewStaffScopeType           *int                      `json:"new_staff_scope_type,omitempty"`            // 非必填,;新人入职范围类型(push_type为1时生效) 0:组织内所有新人 1:组织内特定的部门(new_staff_scope_department_list 字段不能为空)
  1617  	NewStaffScopeDepartmentList []*NotificationDepartment `json:"new_staff_scope_department_list,omitempty"` // 非必填,新人入职生效部门列表
  1618  	UserList                    []*NotificationUser       `json:"user_list,omitempty"`                       // 非必填,push推送到成员列表
  1619  	DepartmentList              []*NotificationDepartment `json:"department_list,omitempty"`                 // 非必填,push推送到的部门信息列表
  1620  	ChatList                    []*NotificationChat       `json:"chat_list,omitempty"`                       // 非必填,push推送到的会话列表(群)
  1621  	Ext                         *string                   `json:"ext,omitempty"`                             // 非必填,预留扩展字段
  1622  }
  1623  
  1624  type NotificationBuilder struct {
  1625  	id                              string // 非必填,创建成功后返回
  1626  	idFlag                          bool
  1627  	jobName                         string // 必填,任务名称
  1628  	jobNameFlag                     bool
  1629  	status                          int // 非必填,创建成功后返回
  1630  	statusFlag                      bool
  1631  	createUser                      *NotificationUser // 非必填,创建人
  1632  	createUserFlag                  bool
  1633  	createdAt                       string // 非必填,创建时间(毫秒时间戳)
  1634  	createdAtFlag                   bool
  1635  	updateUser                      *NotificationUser // 非必填,更新用户
  1636  	updateUserFlag                  bool
  1637  	updatedAt                       string // 非必填,更新时间(毫秒时间戳)
  1638  	updatedAtFlag                   bool
  1639  	targetUserCount                 int // 非必填,目标推送用户总数
  1640  	targetUserCountFlag             bool
  1641  	sentUserCount                   int // 非必填,已推送用户总数
  1642  	sentUserCountFlag               bool
  1643  	readUserCount                   int // 非必填,已读用户总数
  1644  	readUserCountFlag               bool
  1645  	sendAt                          string // 非必填,推送任务触发时间(毫秒时间戳)
  1646  	sendAtFlag                      bool
  1647  	pushContent                     string // 必填,推送内容,详见:https://open.feishu.cn/tool/cardbuilder?from=howtoguide
  1648  	pushContentFlag                 bool
  1649  	pushType                        int // 必填,;0(定时推送:push_scope不能等于3) 1(新人入职推送:push_scope必须等于1或者3;new_staff_scope_type不能为空)
  1650  	pushTypeFlag                    bool
  1651  	pushScopeType                   int // 必填,;推送范围(服务台私信) 0:组织内全部成员(user_list和department_list必须为空) 1:不推送任何成员(user_list和department_list必须为空,chat_list不可为空) 2:推送到部分成员(user_list或department_list不能为空) 3:入职新人 以上四种状态,chat_list都相对独立,只有在推送范围为1时,必须需要设置chat_list
  1652  	pushScopeTypeFlag               bool
  1653  	newStaffScopeType               int // 非必填,;新人入职范围类型(push_type为1时生效) 0:组织内所有新人 1:组织内特定的部门(new_staff_scope_department_list 字段不能为空)
  1654  	newStaffScopeTypeFlag           bool
  1655  	newStaffScopeDepartmentList     []*NotificationDepartment // 非必填,新人入职生效部门列表
  1656  	newStaffScopeDepartmentListFlag bool
  1657  	userList                        []*NotificationUser // 非必填,push推送到成员列表
  1658  	userListFlag                    bool
  1659  	departmentList                  []*NotificationDepartment // 非必填,push推送到的部门信息列表
  1660  	departmentListFlag              bool
  1661  	chatList                        []*NotificationChat // 非必填,push推送到的会话列表(群)
  1662  	chatListFlag                    bool
  1663  	ext                             string // 非必填,预留扩展字段
  1664  	extFlag                         bool
  1665  }
  1666  
  1667  func NewNotificationBuilder() *NotificationBuilder {
  1668  	builder := &NotificationBuilder{}
  1669  	return builder
  1670  }
  1671  
  1672  // 非必填,创建成功后返回
  1673  //
  1674  // 示例值:6981801914270744596
  1675  func (builder *NotificationBuilder) Id(id string) *NotificationBuilder {
  1676  	builder.id = id
  1677  	builder.idFlag = true
  1678  	return builder
  1679  }
  1680  
  1681  // 必填,任务名称
  1682  //
  1683  // 示例值:测试推送任务
  1684  func (builder *NotificationBuilder) JobName(jobName string) *NotificationBuilder {
  1685  	builder.jobName = jobName
  1686  	builder.jobNameFlag = true
  1687  	return builder
  1688  }
  1689  
  1690  // 非必填,创建成功后返回
  1691  //
  1692  // 示例值:0
  1693  func (builder *NotificationBuilder) Status(status int) *NotificationBuilder {
  1694  	builder.status = status
  1695  	builder.statusFlag = true
  1696  	return builder
  1697  }
  1698  
  1699  // 非必填,创建人
  1700  //
  1701  // 示例值:{"avatar_url":"","name":"","user_id":"ou_7277fd1262bfafc363d5b2a1f9c2ac90"}
  1702  func (builder *NotificationBuilder) CreateUser(createUser *NotificationUser) *NotificationBuilder {
  1703  	builder.createUser = createUser
  1704  	builder.createUserFlag = true
  1705  	return builder
  1706  }
  1707  
  1708  // 非必填,创建时间(毫秒时间戳)
  1709  //
  1710  // 示例值:1626332244719
  1711  func (builder *NotificationBuilder) CreatedAt(createdAt string) *NotificationBuilder {
  1712  	builder.createdAt = createdAt
  1713  	builder.createdAtFlag = true
  1714  	return builder
  1715  }
  1716  
  1717  // 非必填,更新用户
  1718  //
  1719  // 示例值:{"avatar_url":"","name":"","user_id":"ou_7277fd1262bfafc363d5b2a1f9c2ac90"}
  1720  func (builder *NotificationBuilder) UpdateUser(updateUser *NotificationUser) *NotificationBuilder {
  1721  	builder.updateUser = updateUser
  1722  	builder.updateUserFlag = true
  1723  	return builder
  1724  }
  1725  
  1726  // 非必填,更新时间(毫秒时间戳)
  1727  //
  1728  // 示例值:1626332244719
  1729  func (builder *NotificationBuilder) UpdatedAt(updatedAt string) *NotificationBuilder {
  1730  	builder.updatedAt = updatedAt
  1731  	builder.updatedAtFlag = true
  1732  	return builder
  1733  }
  1734  
  1735  // 非必填,目标推送用户总数
  1736  //
  1737  // 示例值:1
  1738  func (builder *NotificationBuilder) TargetUserCount(targetUserCount int) *NotificationBuilder {
  1739  	builder.targetUserCount = targetUserCount
  1740  	builder.targetUserCountFlag = true
  1741  	return builder
  1742  }
  1743  
  1744  // 非必填,已推送用户总数
  1745  //
  1746  // 示例值:1
  1747  func (builder *NotificationBuilder) SentUserCount(sentUserCount int) *NotificationBuilder {
  1748  	builder.sentUserCount = sentUserCount
  1749  	builder.sentUserCountFlag = true
  1750  	return builder
  1751  }
  1752  
  1753  // 非必填,已读用户总数
  1754  //
  1755  // 示例值:1
  1756  func (builder *NotificationBuilder) ReadUserCount(readUserCount int) *NotificationBuilder {
  1757  	builder.readUserCount = readUserCount
  1758  	builder.readUserCountFlag = true
  1759  	return builder
  1760  }
  1761  
  1762  // 非必填,推送任务触发时间(毫秒时间戳)
  1763  //
  1764  // 示例值:1626332244719
  1765  func (builder *NotificationBuilder) SendAt(sendAt string) *NotificationBuilder {
  1766  	builder.sendAt = sendAt
  1767  	builder.sendAtFlag = true
  1768  	return builder
  1769  }
  1770  
  1771  // 必填,推送内容,详见:https://open.feishu.cn/tool/cardbuilder?from=howtoguide
  1772  //
  1773  // 示例值:{   \"config\": {	 \"wide_screen_mode\": true   },   \"elements\": [	 {	   \"tag\": \"div\",	   \"text\": {		 \"tag\": \"lark_md\",		 \"content\": \"[飞书](https://www.feishu.cn)整合即时沟通、日历、音视频会议、云文档、云盘、工作台等功能于一体,成就组织和个人,更高效、更愉悦。\"	   }	 }   ] }
  1774  func (builder *NotificationBuilder) PushContent(pushContent string) *NotificationBuilder {
  1775  	builder.pushContent = pushContent
  1776  	builder.pushContentFlag = true
  1777  	return builder
  1778  }
  1779  
  1780  // 必填,;0(定时推送:push_scope不能等于3) 1(新人入职推送:push_scope必须等于1或者3;new_staff_scope_type不能为空)
  1781  //
  1782  // 示例值:0
  1783  func (builder *NotificationBuilder) PushType(pushType int) *NotificationBuilder {
  1784  	builder.pushType = pushType
  1785  	builder.pushTypeFlag = true
  1786  	return builder
  1787  }
  1788  
  1789  // 必填,;推送范围(服务台私信) 0:组织内全部成员(user_list和department_list必须为空) 1:不推送任何成员(user_list和department_list必须为空,chat_list不可为空) 2:推送到部分成员(user_list或department_list不能为空) 3:入职新人 以上四种状态,chat_list都相对独立,只有在推送范围为1时,必须需要设置chat_list
  1790  //
  1791  // 示例值:0
  1792  func (builder *NotificationBuilder) PushScopeType(pushScopeType int) *NotificationBuilder {
  1793  	builder.pushScopeType = pushScopeType
  1794  	builder.pushScopeTypeFlag = true
  1795  	return builder
  1796  }
  1797  
  1798  // 非必填,;新人入职范围类型(push_type为1时生效) 0:组织内所有新人 1:组织内特定的部门(new_staff_scope_department_list 字段不能为空)
  1799  //
  1800  // 示例值:0
  1801  func (builder *NotificationBuilder) NewStaffScopeType(newStaffScopeType int) *NotificationBuilder {
  1802  	builder.newStaffScopeType = newStaffScopeType
  1803  	builder.newStaffScopeTypeFlag = true
  1804  	return builder
  1805  }
  1806  
  1807  // 非必填,新人入职生效部门列表
  1808  //
  1809  // 示例值:[{"department_id":"od_7c1a2815c9846b5e518b950de0e62de8"}]
  1810  func (builder *NotificationBuilder) NewStaffScopeDepartmentList(newStaffScopeDepartmentList []*NotificationDepartment) *NotificationBuilder {
  1811  	builder.newStaffScopeDepartmentList = newStaffScopeDepartmentList
  1812  	builder.newStaffScopeDepartmentListFlag = true
  1813  	return builder
  1814  }
  1815  
  1816  // 非必填,push推送到成员列表
  1817  //
  1818  // 示例值:[{"user_id":"ou_7277fd1262bfafc363d5b2a1f9c2ac90"}]
  1819  func (builder *NotificationBuilder) UserList(userList []*NotificationUser) *NotificationBuilder {
  1820  	builder.userList = userList
  1821  	builder.userListFlag = true
  1822  	return builder
  1823  }
  1824  
  1825  // 非必填,push推送到的部门信息列表
  1826  //
  1827  // 示例值:[{"department_id":"od_7c1a2815c9846b5e518b950de0e62de8"}]
  1828  func (builder *NotificationBuilder) DepartmentList(departmentList []*NotificationDepartment) *NotificationBuilder {
  1829  	builder.departmentList = departmentList
  1830  	builder.departmentListFlag = true
  1831  	return builder
  1832  }
  1833  
  1834  // 非必填,push推送到的会话列表(群)
  1835  //
  1836  // 示例值:[{"chat_id":"oc_7c1a2815c9846b5e518b950de0e62de8"}]
  1837  func (builder *NotificationBuilder) ChatList(chatList []*NotificationChat) *NotificationBuilder {
  1838  	builder.chatList = chatList
  1839  	builder.chatListFlag = true
  1840  	return builder
  1841  }
  1842  
  1843  // 非必填,预留扩展字段
  1844  //
  1845  // 示例值:{}
  1846  func (builder *NotificationBuilder) Ext(ext string) *NotificationBuilder {
  1847  	builder.ext = ext
  1848  	builder.extFlag = true
  1849  	return builder
  1850  }
  1851  
  1852  func (builder *NotificationBuilder) Build() *Notification {
  1853  	req := &Notification{}
  1854  	if builder.idFlag {
  1855  		req.Id = &builder.id
  1856  
  1857  	}
  1858  	if builder.jobNameFlag {
  1859  		req.JobName = &builder.jobName
  1860  
  1861  	}
  1862  	if builder.statusFlag {
  1863  		req.Status = &builder.status
  1864  
  1865  	}
  1866  	if builder.createUserFlag {
  1867  		req.CreateUser = builder.createUser
  1868  	}
  1869  	if builder.createdAtFlag {
  1870  		req.CreatedAt = &builder.createdAt
  1871  
  1872  	}
  1873  	if builder.updateUserFlag {
  1874  		req.UpdateUser = builder.updateUser
  1875  	}
  1876  	if builder.updatedAtFlag {
  1877  		req.UpdatedAt = &builder.updatedAt
  1878  
  1879  	}
  1880  	if builder.targetUserCountFlag {
  1881  		req.TargetUserCount = &builder.targetUserCount
  1882  
  1883  	}
  1884  	if builder.sentUserCountFlag {
  1885  		req.SentUserCount = &builder.sentUserCount
  1886  
  1887  	}
  1888  	if builder.readUserCountFlag {
  1889  		req.ReadUserCount = &builder.readUserCount
  1890  
  1891  	}
  1892  	if builder.sendAtFlag {
  1893  		req.SendAt = &builder.sendAt
  1894  
  1895  	}
  1896  	if builder.pushContentFlag {
  1897  		req.PushContent = &builder.pushContent
  1898  
  1899  	}
  1900  	if builder.pushTypeFlag {
  1901  		req.PushType = &builder.pushType
  1902  
  1903  	}
  1904  	if builder.pushScopeTypeFlag {
  1905  		req.PushScopeType = &builder.pushScopeType
  1906  
  1907  	}
  1908  	if builder.newStaffScopeTypeFlag {
  1909  		req.NewStaffScopeType = &builder.newStaffScopeType
  1910  
  1911  	}
  1912  	if builder.newStaffScopeDepartmentListFlag {
  1913  		req.NewStaffScopeDepartmentList = builder.newStaffScopeDepartmentList
  1914  	}
  1915  	if builder.userListFlag {
  1916  		req.UserList = builder.userList
  1917  	}
  1918  	if builder.departmentListFlag {
  1919  		req.DepartmentList = builder.departmentList
  1920  	}
  1921  	if builder.chatListFlag {
  1922  		req.ChatList = builder.chatList
  1923  	}
  1924  	if builder.extFlag {
  1925  		req.Ext = &builder.ext
  1926  
  1927  	}
  1928  	return req
  1929  }
  1930  
  1931  type NotificationChat struct {
  1932  	ChatId *string `json:"chat_id,omitempty"` // 非必填,会话ID
  1933  	Name   *string `json:"name,omitempty"`    // 非必填,会话名称
  1934  }
  1935  
  1936  type NotificationChatBuilder struct {
  1937  	chatId     string // 非必填,会话ID
  1938  	chatIdFlag bool
  1939  	name       string // 非必填,会话名称
  1940  	nameFlag   bool
  1941  }
  1942  
  1943  func NewNotificationChatBuilder() *NotificationChatBuilder {
  1944  	builder := &NotificationChatBuilder{}
  1945  	return builder
  1946  }
  1947  
  1948  // 非必填,会话ID
  1949  //
  1950  // 示例值:oc_7277fd1262bfafc363d5b2a1f9c2ac90
  1951  func (builder *NotificationChatBuilder) ChatId(chatId string) *NotificationChatBuilder {
  1952  	builder.chatId = chatId
  1953  	builder.chatIdFlag = true
  1954  	return builder
  1955  }
  1956  
  1957  // 非必填,会话名称
  1958  //
  1959  // 示例值:测试群聊
  1960  func (builder *NotificationChatBuilder) Name(name string) *NotificationChatBuilder {
  1961  	builder.name = name
  1962  	builder.nameFlag = true
  1963  	return builder
  1964  }
  1965  
  1966  func (builder *NotificationChatBuilder) Build() *NotificationChat {
  1967  	req := &NotificationChat{}
  1968  	if builder.chatIdFlag {
  1969  		req.ChatId = &builder.chatId
  1970  
  1971  	}
  1972  	if builder.nameFlag {
  1973  		req.Name = &builder.name
  1974  
  1975  	}
  1976  	return req
  1977  }
  1978  
  1979  type NotificationDepartment struct {
  1980  	DepartmentId *string `json:"department_id,omitempty"` // 部门ID
  1981  	Name         *string `json:"name,omitempty"`          // 非必填,部门名称
  1982  }
  1983  
  1984  type NotificationDepartmentBuilder struct {
  1985  	departmentId     string // 部门ID
  1986  	departmentIdFlag bool
  1987  	name             string // 非必填,部门名称
  1988  	nameFlag         bool
  1989  }
  1990  
  1991  func NewNotificationDepartmentBuilder() *NotificationDepartmentBuilder {
  1992  	builder := &NotificationDepartmentBuilder{}
  1993  	return builder
  1994  }
  1995  
  1996  // 部门ID
  1997  //
  1998  // 示例值:od_7277fd1262bfafc363d5b2a1f9c2ac90
  1999  func (builder *NotificationDepartmentBuilder) DepartmentId(departmentId string) *NotificationDepartmentBuilder {
  2000  	builder.departmentId = departmentId
  2001  	builder.departmentIdFlag = true
  2002  	return builder
  2003  }
  2004  
  2005  // 非必填,部门名称
  2006  //
  2007  // 示例值:测试部门
  2008  func (builder *NotificationDepartmentBuilder) Name(name string) *NotificationDepartmentBuilder {
  2009  	builder.name = name
  2010  	builder.nameFlag = true
  2011  	return builder
  2012  }
  2013  
  2014  func (builder *NotificationDepartmentBuilder) Build() *NotificationDepartment {
  2015  	req := &NotificationDepartment{}
  2016  	if builder.departmentIdFlag {
  2017  		req.DepartmentId = &builder.departmentId
  2018  
  2019  	}
  2020  	if builder.nameFlag {
  2021  		req.Name = &builder.name
  2022  
  2023  	}
  2024  	return req
  2025  }
  2026  
  2027  type NotificationUser struct {
  2028  	UserId    *string `json:"user_id,omitempty"`    // 非必填,用户id
  2029  	AvatarUrl *string `json:"avatar_url,omitempty"` // 非必填,头像地址
  2030  	Name      *string `json:"name,omitempty"`       // 非必填,用户名称
  2031  }
  2032  
  2033  type NotificationUserBuilder struct {
  2034  	userId        string // 非必填,用户id
  2035  	userIdFlag    bool
  2036  	avatarUrl     string // 非必填,头像地址
  2037  	avatarUrlFlag bool
  2038  	name          string // 非必填,用户名称
  2039  	nameFlag      bool
  2040  }
  2041  
  2042  func NewNotificationUserBuilder() *NotificationUserBuilder {
  2043  	builder := &NotificationUserBuilder{}
  2044  	return builder
  2045  }
  2046  
  2047  // 非必填,用户id
  2048  //
  2049  // 示例值:ou_7277fd1262bfafc363d5b2a1f9c2ac90
  2050  func (builder *NotificationUserBuilder) UserId(userId string) *NotificationUserBuilder {
  2051  	builder.userId = userId
  2052  	builder.userIdFlag = true
  2053  	return builder
  2054  }
  2055  
  2056  // 非必填,头像地址
  2057  //
  2058  // 示例值:http://*.com/*.png
  2059  func (builder *NotificationUserBuilder) AvatarUrl(avatarUrl string) *NotificationUserBuilder {
  2060  	builder.avatarUrl = avatarUrl
  2061  	builder.avatarUrlFlag = true
  2062  	return builder
  2063  }
  2064  
  2065  // 非必填,用户名称
  2066  //
  2067  // 示例值:test
  2068  func (builder *NotificationUserBuilder) Name(name string) *NotificationUserBuilder {
  2069  	builder.name = name
  2070  	builder.nameFlag = true
  2071  	return builder
  2072  }
  2073  
  2074  func (builder *NotificationUserBuilder) Build() *NotificationUser {
  2075  	req := &NotificationUser{}
  2076  	if builder.userIdFlag {
  2077  		req.UserId = &builder.userId
  2078  
  2079  	}
  2080  	if builder.avatarUrlFlag {
  2081  		req.AvatarUrl = &builder.avatarUrl
  2082  
  2083  	}
  2084  	if builder.nameFlag {
  2085  		req.Name = &builder.name
  2086  
  2087  	}
  2088  	return req
  2089  }
  2090  
  2091  type Richtext struct {
  2092  	Content *string `json:"content,omitempty"` // 内容
  2093  	Type    *string `json:"type,omitempty"`    // 类型
  2094  }
  2095  
  2096  type RichtextBuilder struct {
  2097  	content     string // 内容
  2098  	contentFlag bool
  2099  	type_       string // 类型
  2100  	typeFlag    bool
  2101  }
  2102  
  2103  func NewRichtextBuilder() *RichtextBuilder {
  2104  	builder := &RichtextBuilder{}
  2105  	return builder
  2106  }
  2107  
  2108  // 内容
  2109  //
  2110  // 示例值:我的答案
  2111  func (builder *RichtextBuilder) Content(content string) *RichtextBuilder {
  2112  	builder.content = content
  2113  	builder.contentFlag = true
  2114  	return builder
  2115  }
  2116  
  2117  // 类型
  2118  //
  2119  // 示例值:text
  2120  func (builder *RichtextBuilder) Type(type_ string) *RichtextBuilder {
  2121  	builder.type_ = type_
  2122  	builder.typeFlag = true
  2123  	return builder
  2124  }
  2125  
  2126  func (builder *RichtextBuilder) Build() *Richtext {
  2127  	req := &Richtext{}
  2128  	if builder.contentFlag {
  2129  		req.Content = &builder.content
  2130  
  2131  	}
  2132  	if builder.typeFlag {
  2133  		req.Type = &builder.type_
  2134  
  2135  	}
  2136  	return req
  2137  }
  2138  
  2139  type Ticket struct {
  2140  	TicketId                   *string                       `json:"ticket_id,omitempty"`                     // 工单ID;;[可以从工单列表里面取](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/list);;[也可以订阅工单创建事件获取](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/events/created)
  2141  	HelpdeskId                 *string                       `json:"helpdesk_id,omitempty"`                   // 服务台ID
  2142  	Guest                      *TicketUser                   `json:"guest,omitempty"`                         // 工单创建用户
  2143  	Comments                   *Comments                     `json:"comments,omitempty"`                      // 备注
  2144  	TicketType                 *int                          `json:"ticket_type,omitempty"`                   // 工单阶段:1. 机器人 2. 人工
  2145  	Status                     *int                          `json:"status,omitempty"`                        // 工单状态,1:已创建 2: 处理中 3: 排队中 4:待定 5:待用户响应 50: 被机器人关闭 51: 被客服关闭 52: 用户自己关闭
  2146  	Score                      *int                          `json:"score,omitempty"`                         // 工单评分,1:不满意,2:一般,3:满意
  2147  	CreatedAt                  *int                          `json:"created_at,omitempty"`                    // 工单创建时间
  2148  	UpdatedAt                  *int                          `json:"updated_at,omitempty"`                    // 工单更新时间,没有值时为-1
  2149  	ClosedAt                   *int                          `json:"closed_at,omitempty"`                     // 工单结束时间
  2150  	DissatisfactionReason      []string                      `json:"dissatisfaction_reason,omitempty"`        // 不满意原因
  2151  	Agents                     []*TicketUser                 `json:"agents,omitempty"`                        // 工单客服
  2152  	Channel                    *int                          `json:"channel,omitempty"`                       // 工单渠道,描述:;9:Open API 2:二维码 14:分享 13:搜索 其他数字:其他渠道
  2153  	Solve                      *int                          `json:"solve,omitempty"`                         // 工单是否解决 1:没解决 2:已解决
  2154  	ClosedBy                   *TicketUser                   `json:"closed_by,omitempty"`                     // 关单用户ID
  2155  	Collaborators              []*TicketUser                 `json:"collaborators,omitempty"`                 // 工单协作者
  2156  	CustomizedFields           []*CustomizedFieldDisplayItem `json:"customized_fields,omitempty"`             // 自定义字段列表,没有值时不设置  ;下拉菜单的value对应工单字段里面的children.display_name;[获取全部工单自定义字段](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket_customized_field/list-ticket-customized-fields)
  2157  	AgentServiceDuration       *float64                      `json:"agent_service_duration,omitempty"`        // 客服服务时长,客服最后一次回复时间距离客服进入时间间隔,单位分钟
  2158  	AgentFirstResponseDuration *int                          `json:"agent_first_response_duration,omitempty"` // 客服首次回复时间距离客服进入时间的间隔(秒)
  2159  	BotServiceDuration         *int                          `json:"bot_service_duration,omitempty"`          // 机器人服务时间:客服进入时间距离工单创建时间的间隔,单位秒
  2160  	AgentResolutionTime        *int                          `json:"agent_resolution_time,omitempty"`         // 客服解决时长,关单时间距离客服进入时间的间隔,单位秒
  2161  	ActualProcessingTime       *int                          `json:"actual_processing_time,omitempty"`        // 工单实际处理时间:从客服进入到关单,单位秒
  2162  	AgentEntryTime             *int                          `json:"agent_entry_time,omitempty"`              // 客服进入时间,单位毫秒
  2163  	AgentFirstResponseTime     *int                          `json:"agent_first_response_time,omitempty"`     // 客服首次回复时间,单位毫秒
  2164  	AgentLastResponseTime      *int                          `json:"agent_last_response_time,omitempty"`      // 客服最后回复时间,单位毫秒
  2165  	AgentOwner                 *TicketUser                   `json:"agent_owner,omitempty"`                   // 主责客服
  2166  }
  2167  
  2168  type TicketBuilder struct {
  2169  	ticketId                       string // 工单ID;;[可以从工单列表里面取](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/list);;[也可以订阅工单创建事件获取](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/events/created)
  2170  	ticketIdFlag                   bool
  2171  	helpdeskId                     string // 服务台ID
  2172  	helpdeskIdFlag                 bool
  2173  	guest                          *TicketUser // 工单创建用户
  2174  	guestFlag                      bool
  2175  	comments                       *Comments // 备注
  2176  	commentsFlag                   bool
  2177  	ticketType                     int // 工单阶段:1. 机器人 2. 人工
  2178  	ticketTypeFlag                 bool
  2179  	status                         int // 工单状态,1:已创建 2: 处理中 3: 排队中 4:待定 5:待用户响应 50: 被机器人关闭 51: 被客服关闭 52: 用户自己关闭
  2180  	statusFlag                     bool
  2181  	score                          int // 工单评分,1:不满意,2:一般,3:满意
  2182  	scoreFlag                      bool
  2183  	createdAt                      int // 工单创建时间
  2184  	createdAtFlag                  bool
  2185  	updatedAt                      int // 工单更新时间,没有值时为-1
  2186  	updatedAtFlag                  bool
  2187  	closedAt                       int // 工单结束时间
  2188  	closedAtFlag                   bool
  2189  	dissatisfactionReason          []string // 不满意原因
  2190  	dissatisfactionReasonFlag      bool
  2191  	agents                         []*TicketUser // 工单客服
  2192  	agentsFlag                     bool
  2193  	channel                        int // 工单渠道,描述:;9:Open API 2:二维码 14:分享 13:搜索 其他数字:其他渠道
  2194  	channelFlag                    bool
  2195  	solve                          int // 工单是否解决 1:没解决 2:已解决
  2196  	solveFlag                      bool
  2197  	closedBy                       *TicketUser // 关单用户ID
  2198  	closedByFlag                   bool
  2199  	collaborators                  []*TicketUser // 工单协作者
  2200  	collaboratorsFlag              bool
  2201  	customizedFields               []*CustomizedFieldDisplayItem // 自定义字段列表,没有值时不设置  ;下拉菜单的value对应工单字段里面的children.display_name;[获取全部工单自定义字段](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket_customized_field/list-ticket-customized-fields)
  2202  	customizedFieldsFlag           bool
  2203  	agentServiceDuration           float64 // 客服服务时长,客服最后一次回复时间距离客服进入时间间隔,单位分钟
  2204  	agentServiceDurationFlag       bool
  2205  	agentFirstResponseDuration     int // 客服首次回复时间距离客服进入时间的间隔(秒)
  2206  	agentFirstResponseDurationFlag bool
  2207  	botServiceDuration             int // 机器人服务时间:客服进入时间距离工单创建时间的间隔,单位秒
  2208  	botServiceDurationFlag         bool
  2209  	agentResolutionTime            int // 客服解决时长,关单时间距离客服进入时间的间隔,单位秒
  2210  	agentResolutionTimeFlag        bool
  2211  	actualProcessingTime           int // 工单实际处理时间:从客服进入到关单,单位秒
  2212  	actualProcessingTimeFlag       bool
  2213  	agentEntryTime                 int // 客服进入时间,单位毫秒
  2214  	agentEntryTimeFlag             bool
  2215  	agentFirstResponseTime         int // 客服首次回复时间,单位毫秒
  2216  	agentFirstResponseTimeFlag     bool
  2217  	agentLastResponseTime          int // 客服最后回复时间,单位毫秒
  2218  	agentLastResponseTimeFlag      bool
  2219  	agentOwner                     *TicketUser // 主责客服
  2220  	agentOwnerFlag                 bool
  2221  }
  2222  
  2223  func NewTicketBuilder() *TicketBuilder {
  2224  	builder := &TicketBuilder{}
  2225  	return builder
  2226  }
  2227  
  2228  // 工单ID;;[可以从工单列表里面取](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/list);;[也可以订阅工单创建事件获取](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/events/created)
  2229  //
  2230  // 示例值:6626871355780366331
  2231  func (builder *TicketBuilder) TicketId(ticketId string) *TicketBuilder {
  2232  	builder.ticketId = ticketId
  2233  	builder.ticketIdFlag = true
  2234  	return builder
  2235  }
  2236  
  2237  // 服务台ID
  2238  //
  2239  // 示例值:6626871355780366330
  2240  func (builder *TicketBuilder) HelpdeskId(helpdeskId string) *TicketBuilder {
  2241  	builder.helpdeskId = helpdeskId
  2242  	builder.helpdeskIdFlag = true
  2243  	return builder
  2244  }
  2245  
  2246  // 工单创建用户
  2247  //
  2248  // 示例值:
  2249  func (builder *TicketBuilder) Guest(guest *TicketUser) *TicketBuilder {
  2250  	builder.guest = guest
  2251  	builder.guestFlag = true
  2252  	return builder
  2253  }
  2254  
  2255  // 备注
  2256  //
  2257  // 示例值:
  2258  func (builder *TicketBuilder) Comments(comments *Comments) *TicketBuilder {
  2259  	builder.comments = comments
  2260  	builder.commentsFlag = true
  2261  	return builder
  2262  }
  2263  
  2264  // 工单阶段:1. 机器人 2. 人工
  2265  //
  2266  // 示例值:1
  2267  func (builder *TicketBuilder) TicketType(ticketType int) *TicketBuilder {
  2268  	builder.ticketType = ticketType
  2269  	builder.ticketTypeFlag = true
  2270  	return builder
  2271  }
  2272  
  2273  // 工单状态,1:已创建 2: 处理中 3: 排队中 4:待定 5:待用户响应 50: 被机器人关闭 51: 被客服关闭 52: 用户自己关闭
  2274  //
  2275  // 示例值:50
  2276  func (builder *TicketBuilder) Status(status int) *TicketBuilder {
  2277  	builder.status = status
  2278  	builder.statusFlag = true
  2279  	return builder
  2280  }
  2281  
  2282  // 工单评分,1:不满意,2:一般,3:满意
  2283  //
  2284  // 示例值:1
  2285  func (builder *TicketBuilder) Score(score int) *TicketBuilder {
  2286  	builder.score = score
  2287  	builder.scoreFlag = true
  2288  	return builder
  2289  }
  2290  
  2291  // 工单创建时间
  2292  //
  2293  // 示例值:1616920429000
  2294  func (builder *TicketBuilder) CreatedAt(createdAt int) *TicketBuilder {
  2295  	builder.createdAt = createdAt
  2296  	builder.createdAtFlag = true
  2297  	return builder
  2298  }
  2299  
  2300  // 工单更新时间,没有值时为-1
  2301  //
  2302  // 示例值:1616920429000
  2303  func (builder *TicketBuilder) UpdatedAt(updatedAt int) *TicketBuilder {
  2304  	builder.updatedAt = updatedAt
  2305  	builder.updatedAtFlag = true
  2306  	return builder
  2307  }
  2308  
  2309  // 工单结束时间
  2310  //
  2311  // 示例值:1616920429000
  2312  func (builder *TicketBuilder) ClosedAt(closedAt int) *TicketBuilder {
  2313  	builder.closedAt = closedAt
  2314  	builder.closedAtFlag = true
  2315  	return builder
  2316  }
  2317  
  2318  // 不满意原因
  2319  //
  2320  // 示例值:
  2321  func (builder *TicketBuilder) DissatisfactionReason(dissatisfactionReason []string) *TicketBuilder {
  2322  	builder.dissatisfactionReason = dissatisfactionReason
  2323  	builder.dissatisfactionReasonFlag = true
  2324  	return builder
  2325  }
  2326  
  2327  // 工单客服
  2328  //
  2329  // 示例值:
  2330  func (builder *TicketBuilder) Agents(agents []*TicketUser) *TicketBuilder {
  2331  	builder.agents = agents
  2332  	builder.agentsFlag = true
  2333  	return builder
  2334  }
  2335  
  2336  // 工单渠道,描述:;9:Open API 2:二维码 14:分享 13:搜索 其他数字:其他渠道
  2337  //
  2338  // 示例值:0
  2339  func (builder *TicketBuilder) Channel(channel int) *TicketBuilder {
  2340  	builder.channel = channel
  2341  	builder.channelFlag = true
  2342  	return builder
  2343  }
  2344  
  2345  // 工单是否解决 1:没解决 2:已解决
  2346  //
  2347  // 示例值:1
  2348  func (builder *TicketBuilder) Solve(solve int) *TicketBuilder {
  2349  	builder.solve = solve
  2350  	builder.solveFlag = true
  2351  	return builder
  2352  }
  2353  
  2354  // 关单用户ID
  2355  //
  2356  // 示例值:
  2357  func (builder *TicketBuilder) ClosedBy(closedBy *TicketUser) *TicketBuilder {
  2358  	builder.closedBy = closedBy
  2359  	builder.closedByFlag = true
  2360  	return builder
  2361  }
  2362  
  2363  // 工单协作者
  2364  //
  2365  // 示例值:
  2366  func (builder *TicketBuilder) Collaborators(collaborators []*TicketUser) *TicketBuilder {
  2367  	builder.collaborators = collaborators
  2368  	builder.collaboratorsFlag = true
  2369  	return builder
  2370  }
  2371  
  2372  // 自定义字段列表,没有值时不设置  ;下拉菜单的value对应工单字段里面的children.display_name;[获取全部工单自定义字段](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket_customized_field/list-ticket-customized-fields)
  2373  //
  2374  // 示例值:
  2375  func (builder *TicketBuilder) CustomizedFields(customizedFields []*CustomizedFieldDisplayItem) *TicketBuilder {
  2376  	builder.customizedFields = customizedFields
  2377  	builder.customizedFieldsFlag = true
  2378  	return builder
  2379  }
  2380  
  2381  // 客服服务时长,客服最后一次回复时间距离客服进入时间间隔,单位分钟
  2382  //
  2383  // 示例值:42624.95
  2384  func (builder *TicketBuilder) AgentServiceDuration(agentServiceDuration float64) *TicketBuilder {
  2385  	builder.agentServiceDuration = agentServiceDuration
  2386  	builder.agentServiceDurationFlag = true
  2387  	return builder
  2388  }
  2389  
  2390  // 客服首次回复时间距离客服进入时间的间隔(秒)
  2391  //
  2392  // 示例值:123869
  2393  func (builder *TicketBuilder) AgentFirstResponseDuration(agentFirstResponseDuration int) *TicketBuilder {
  2394  	builder.agentFirstResponseDuration = agentFirstResponseDuration
  2395  	builder.agentFirstResponseDurationFlag = true
  2396  	return builder
  2397  }
  2398  
  2399  // 机器人服务时间:客服进入时间距离工单创建时间的间隔,单位秒
  2400  //
  2401  // 示例值:1
  2402  func (builder *TicketBuilder) BotServiceDuration(botServiceDuration int) *TicketBuilder {
  2403  	builder.botServiceDuration = botServiceDuration
  2404  	builder.botServiceDurationFlag = true
  2405  	return builder
  2406  }
  2407  
  2408  // 客服解决时长,关单时间距离客服进入时间的间隔,单位秒
  2409  //
  2410  // 示例值:66
  2411  func (builder *TicketBuilder) AgentResolutionTime(agentResolutionTime int) *TicketBuilder {
  2412  	builder.agentResolutionTime = agentResolutionTime
  2413  	builder.agentResolutionTimeFlag = true
  2414  	return builder
  2415  }
  2416  
  2417  // 工单实际处理时间:从客服进入到关单,单位秒
  2418  //
  2419  // 示例值:68
  2420  func (builder *TicketBuilder) ActualProcessingTime(actualProcessingTime int) *TicketBuilder {
  2421  	builder.actualProcessingTime = actualProcessingTime
  2422  	builder.actualProcessingTimeFlag = true
  2423  	return builder
  2424  }
  2425  
  2426  // 客服进入时间,单位毫秒
  2427  //
  2428  // 示例值:1636444596000
  2429  func (builder *TicketBuilder) AgentEntryTime(agentEntryTime int) *TicketBuilder {
  2430  	builder.agentEntryTime = agentEntryTime
  2431  	builder.agentEntryTimeFlag = true
  2432  	return builder
  2433  }
  2434  
  2435  // 客服首次回复时间,单位毫秒
  2436  //
  2437  // 示例值:1636444696000
  2438  func (builder *TicketBuilder) AgentFirstResponseTime(agentFirstResponseTime int) *TicketBuilder {
  2439  	builder.agentFirstResponseTime = agentFirstResponseTime
  2440  	builder.agentFirstResponseTimeFlag = true
  2441  	return builder
  2442  }
  2443  
  2444  // 客服最后回复时间,单位毫秒
  2445  //
  2446  // 示例值:1636444796000
  2447  func (builder *TicketBuilder) AgentLastResponseTime(agentLastResponseTime int) *TicketBuilder {
  2448  	builder.agentLastResponseTime = agentLastResponseTime
  2449  	builder.agentLastResponseTimeFlag = true
  2450  	return builder
  2451  }
  2452  
  2453  // 主责客服
  2454  //
  2455  // 示例值:
  2456  func (builder *TicketBuilder) AgentOwner(agentOwner *TicketUser) *TicketBuilder {
  2457  	builder.agentOwner = agentOwner
  2458  	builder.agentOwnerFlag = true
  2459  	return builder
  2460  }
  2461  
  2462  func (builder *TicketBuilder) Build() *Ticket {
  2463  	req := &Ticket{}
  2464  	if builder.ticketIdFlag {
  2465  		req.TicketId = &builder.ticketId
  2466  
  2467  	}
  2468  	if builder.helpdeskIdFlag {
  2469  		req.HelpdeskId = &builder.helpdeskId
  2470  
  2471  	}
  2472  	if builder.guestFlag {
  2473  		req.Guest = builder.guest
  2474  	}
  2475  	if builder.commentsFlag {
  2476  		req.Comments = builder.comments
  2477  	}
  2478  	if builder.ticketTypeFlag {
  2479  		req.TicketType = &builder.ticketType
  2480  
  2481  	}
  2482  	if builder.statusFlag {
  2483  		req.Status = &builder.status
  2484  
  2485  	}
  2486  	if builder.scoreFlag {
  2487  		req.Score = &builder.score
  2488  
  2489  	}
  2490  	if builder.createdAtFlag {
  2491  		req.CreatedAt = &builder.createdAt
  2492  
  2493  	}
  2494  	if builder.updatedAtFlag {
  2495  		req.UpdatedAt = &builder.updatedAt
  2496  
  2497  	}
  2498  	if builder.closedAtFlag {
  2499  		req.ClosedAt = &builder.closedAt
  2500  
  2501  	}
  2502  	if builder.dissatisfactionReasonFlag {
  2503  		req.DissatisfactionReason = builder.dissatisfactionReason
  2504  	}
  2505  	if builder.agentsFlag {
  2506  		req.Agents = builder.agents
  2507  	}
  2508  	if builder.channelFlag {
  2509  		req.Channel = &builder.channel
  2510  
  2511  	}
  2512  	if builder.solveFlag {
  2513  		req.Solve = &builder.solve
  2514  
  2515  	}
  2516  	if builder.closedByFlag {
  2517  		req.ClosedBy = builder.closedBy
  2518  	}
  2519  	if builder.collaboratorsFlag {
  2520  		req.Collaborators = builder.collaborators
  2521  	}
  2522  	if builder.customizedFieldsFlag {
  2523  		req.CustomizedFields = builder.customizedFields
  2524  	}
  2525  	if builder.agentServiceDurationFlag {
  2526  		req.AgentServiceDuration = &builder.agentServiceDuration
  2527  
  2528  	}
  2529  	if builder.agentFirstResponseDurationFlag {
  2530  		req.AgentFirstResponseDuration = &builder.agentFirstResponseDuration
  2531  
  2532  	}
  2533  	if builder.botServiceDurationFlag {
  2534  		req.BotServiceDuration = &builder.botServiceDuration
  2535  
  2536  	}
  2537  	if builder.agentResolutionTimeFlag {
  2538  		req.AgentResolutionTime = &builder.agentResolutionTime
  2539  
  2540  	}
  2541  	if builder.actualProcessingTimeFlag {
  2542  		req.ActualProcessingTime = &builder.actualProcessingTime
  2543  
  2544  	}
  2545  	if builder.agentEntryTimeFlag {
  2546  		req.AgentEntryTime = &builder.agentEntryTime
  2547  
  2548  	}
  2549  	if builder.agentFirstResponseTimeFlag {
  2550  		req.AgentFirstResponseTime = &builder.agentFirstResponseTime
  2551  
  2552  	}
  2553  	if builder.agentLastResponseTimeFlag {
  2554  		req.AgentLastResponseTime = &builder.agentLastResponseTime
  2555  
  2556  	}
  2557  	if builder.agentOwnerFlag {
  2558  		req.AgentOwner = builder.agentOwner
  2559  	}
  2560  	return req
  2561  }
  2562  
  2563  type TicketMessage struct {
  2564  	Id          *string `json:"id,omitempty"`           // 工单消息ID
  2565  	MessageId   *string `json:"message_id,omitempty"`   // chat消息ID
  2566  	MessageType *string `json:"message_type,omitempty"` // 消息类型;text:纯文本;post:富文本
  2567  	CreatedAt   *int    `json:"created_at,omitempty"`   // 创建时间
  2568  	Content     *string `json:"content,omitempty"`      // 内容
  2569  	UserName    *string `json:"user_name,omitempty"`    // 用户名
  2570  	AvatarUrl   *string `json:"avatar_url,omitempty"`   // 用户图片url
  2571  	UserId      *string `json:"user_id,omitempty"`      // 用户open ID
  2572  }
  2573  
  2574  type TicketMessageBuilder struct {
  2575  	id              string // 工单消息ID
  2576  	idFlag          bool
  2577  	messageId       string // chat消息ID
  2578  	messageIdFlag   bool
  2579  	messageType     string // 消息类型;text:纯文本;post:富文本
  2580  	messageTypeFlag bool
  2581  	createdAt       int // 创建时间
  2582  	createdAtFlag   bool
  2583  	content         string // 内容
  2584  	contentFlag     bool
  2585  	userName        string // 用户名
  2586  	userNameFlag    bool
  2587  	avatarUrl       string // 用户图片url
  2588  	avatarUrlFlag   bool
  2589  	userId          string // 用户open ID
  2590  	userIdFlag      bool
  2591  }
  2592  
  2593  func NewTicketMessageBuilder() *TicketMessageBuilder {
  2594  	builder := &TicketMessageBuilder{}
  2595  	return builder
  2596  }
  2597  
  2598  // 工单消息ID
  2599  //
  2600  // 示例值:6948728206392295444
  2601  func (builder *TicketMessageBuilder) Id(id string) *TicketMessageBuilder {
  2602  	builder.id = id
  2603  	builder.idFlag = true
  2604  	return builder
  2605  }
  2606  
  2607  // chat消息ID
  2608  //
  2609  // 示例值:6949088236610273307
  2610  func (builder *TicketMessageBuilder) MessageId(messageId string) *TicketMessageBuilder {
  2611  	builder.messageId = messageId
  2612  	builder.messageIdFlag = true
  2613  	return builder
  2614  }
  2615  
  2616  // 消息类型;text:纯文本;post:富文本
  2617  //
  2618  // 示例值:text
  2619  func (builder *TicketMessageBuilder) MessageType(messageType string) *TicketMessageBuilder {
  2620  	builder.messageType = messageType
  2621  	builder.messageTypeFlag = true
  2622  	return builder
  2623  }
  2624  
  2625  // 创建时间
  2626  //
  2627  // 示例值:1617960686000
  2628  func (builder *TicketMessageBuilder) CreatedAt(createdAt int) *TicketMessageBuilder {
  2629  	builder.createdAt = createdAt
  2630  	builder.createdAtFlag = true
  2631  	return builder
  2632  }
  2633  
  2634  // 内容
  2635  //
  2636  // 示例值:"{\"content\":\"进入人工服务。 @李宁  为你提供服务,开始聊起来吧~\",\"msg_type\":\"text\"}"
  2637  func (builder *TicketMessageBuilder) Content(content string) *TicketMessageBuilder {
  2638  	builder.content = content
  2639  	builder.contentFlag = true
  2640  	return builder
  2641  }
  2642  
  2643  // 用户名
  2644  //
  2645  // 示例值:李宁
  2646  func (builder *TicketMessageBuilder) UserName(userName string) *TicketMessageBuilder {
  2647  	builder.userName = userName
  2648  	builder.userNameFlag = true
  2649  	return builder
  2650  }
  2651  
  2652  // 用户图片url
  2653  //
  2654  // 示例值:https://internal-api-lark-file.feishu-boe.cn/static-resource/v1/3e73cdce-54b0-4c6a-8226-b131fb2825dj~?image_size=72x72&cut_type=&quality=&format=image&sticker_format=.webp
  2655  func (builder *TicketMessageBuilder) AvatarUrl(avatarUrl string) *TicketMessageBuilder {
  2656  	builder.avatarUrl = avatarUrl
  2657  	builder.avatarUrlFlag = true
  2658  	return builder
  2659  }
  2660  
  2661  // 用户open ID
  2662  //
  2663  // 示例值:ou_37019b7c830210acd88fdce886e25c71
  2664  func (builder *TicketMessageBuilder) UserId(userId string) *TicketMessageBuilder {
  2665  	builder.userId = userId
  2666  	builder.userIdFlag = true
  2667  	return builder
  2668  }
  2669  
  2670  func (builder *TicketMessageBuilder) Build() *TicketMessage {
  2671  	req := &TicketMessage{}
  2672  	if builder.idFlag {
  2673  		req.Id = &builder.id
  2674  
  2675  	}
  2676  	if builder.messageIdFlag {
  2677  		req.MessageId = &builder.messageId
  2678  
  2679  	}
  2680  	if builder.messageTypeFlag {
  2681  		req.MessageType = &builder.messageType
  2682  
  2683  	}
  2684  	if builder.createdAtFlag {
  2685  		req.CreatedAt = &builder.createdAt
  2686  
  2687  	}
  2688  	if builder.contentFlag {
  2689  		req.Content = &builder.content
  2690  
  2691  	}
  2692  	if builder.userNameFlag {
  2693  		req.UserName = &builder.userName
  2694  
  2695  	}
  2696  	if builder.avatarUrlFlag {
  2697  		req.AvatarUrl = &builder.avatarUrl
  2698  
  2699  	}
  2700  	if builder.userIdFlag {
  2701  		req.UserId = &builder.userId
  2702  
  2703  	}
  2704  	return req
  2705  }
  2706  
  2707  type TicketCustomizedField struct {
  2708  	TicketCustomizedFieldId *string     `json:"ticket_customized_field_id,omitempty"` // 工单自定义字段ID
  2709  	HelpdeskId              *string     `json:"helpdesk_id,omitempty"`                // 服务台ID
  2710  	KeyName                 *string     `json:"key_name,omitempty"`                   // 键名
  2711  	DisplayName             *string     `json:"display_name,omitempty"`               // 名称
  2712  	Position                *string     `json:"position,omitempty"`                   // 字段在列表后台管理列表中的位置
  2713  	FieldType               *string     `json:"field_type,omitempty"`                 // 类型;;string - 单行文本;;multiline - 多行文本;;dropdown - 下拉列表;;dropdown_nested - 级联下拉
  2714  	Description             *string     `json:"description,omitempty"`                // 描述
  2715  	Visible                 *bool       `json:"visible,omitempty"`                    // 是否可见
  2716  	Editable                *bool       `json:"editable,omitempty"`                   // 是否可以修改
  2717  	Required                *bool       `json:"required,omitempty"`                   // 是否必填
  2718  	CreatedAt               *string     `json:"created_at,omitempty"`                 // 创建时间
  2719  	UpdatedAt               *string     `json:"updated_at,omitempty"`                 // 更新时间
  2720  	CreatedBy               *TicketUser `json:"created_by,omitempty"`                 // 创建用户
  2721  	UpdatedBy               *TicketUser `json:"updated_by,omitempty"`                 // 更新用户
  2722  	DropdownAllowMultiple   *bool       `json:"dropdown_allow_multiple,omitempty"`    // 是否支持多选,仅在字段类型是dropdown的时候有效
  2723  }
  2724  
  2725  type TicketCustomizedFieldBuilder struct {
  2726  	ticketCustomizedFieldId     string // 工单自定义字段ID
  2727  	ticketCustomizedFieldIdFlag bool
  2728  	helpdeskId                  string // 服务台ID
  2729  	helpdeskIdFlag              bool
  2730  	keyName                     string // 键名
  2731  	keyNameFlag                 bool
  2732  	displayName                 string // 名称
  2733  	displayNameFlag             bool
  2734  	position                    string // 字段在列表后台管理列表中的位置
  2735  	positionFlag                bool
  2736  	fieldType                   string // 类型;;string - 单行文本;;multiline - 多行文本;;dropdown - 下拉列表;;dropdown_nested - 级联下拉
  2737  	fieldTypeFlag               bool
  2738  	description                 string // 描述
  2739  	descriptionFlag             bool
  2740  	visible                     bool // 是否可见
  2741  	visibleFlag                 bool
  2742  	editable                    bool // 是否可以修改
  2743  	editableFlag                bool
  2744  	required                    bool // 是否必填
  2745  	requiredFlag                bool
  2746  	createdAt                   string // 创建时间
  2747  	createdAtFlag               bool
  2748  	updatedAt                   string // 更新时间
  2749  	updatedAtFlag               bool
  2750  	createdBy                   *TicketUser // 创建用户
  2751  	createdByFlag               bool
  2752  	updatedBy                   *TicketUser // 更新用户
  2753  	updatedByFlag               bool
  2754  	dropdownAllowMultiple       bool // 是否支持多选,仅在字段类型是dropdown的时候有效
  2755  	dropdownAllowMultipleFlag   bool
  2756  }
  2757  
  2758  func NewTicketCustomizedFieldBuilder() *TicketCustomizedFieldBuilder {
  2759  	builder := &TicketCustomizedFieldBuilder{}
  2760  	return builder
  2761  }
  2762  
  2763  // 工单自定义字段ID
  2764  //
  2765  // 示例值:6834320707288072194
  2766  func (builder *TicketCustomizedFieldBuilder) TicketCustomizedFieldId(ticketCustomizedFieldId string) *TicketCustomizedFieldBuilder {
  2767  	builder.ticketCustomizedFieldId = ticketCustomizedFieldId
  2768  	builder.ticketCustomizedFieldIdFlag = true
  2769  	return builder
  2770  }
  2771  
  2772  // 服务台ID
  2773  //
  2774  // 示例值:1542164574896126
  2775  func (builder *TicketCustomizedFieldBuilder) HelpdeskId(helpdeskId string) *TicketCustomizedFieldBuilder {
  2776  	builder.helpdeskId = helpdeskId
  2777  	builder.helpdeskIdFlag = true
  2778  	return builder
  2779  }
  2780  
  2781  // 键名
  2782  //
  2783  // 示例值:test dropdown
  2784  func (builder *TicketCustomizedFieldBuilder) KeyName(keyName string) *TicketCustomizedFieldBuilder {
  2785  	builder.keyName = keyName
  2786  	builder.keyNameFlag = true
  2787  	return builder
  2788  }
  2789  
  2790  // 名称
  2791  //
  2792  // 示例值:test dropdown
  2793  func (builder *TicketCustomizedFieldBuilder) DisplayName(displayName string) *TicketCustomizedFieldBuilder {
  2794  	builder.displayName = displayName
  2795  	builder.displayNameFlag = true
  2796  	return builder
  2797  }
  2798  
  2799  // 字段在列表后台管理列表中的位置
  2800  //
  2801  // 示例值:3
  2802  func (builder *TicketCustomizedFieldBuilder) Position(position string) *TicketCustomizedFieldBuilder {
  2803  	builder.position = position
  2804  	builder.positionFlag = true
  2805  	return builder
  2806  }
  2807  
  2808  // 类型;;string - 单行文本;;multiline - 多行文本;;dropdown - 下拉列表;;dropdown_nested - 级联下拉
  2809  //
  2810  // 示例值:dropdown
  2811  func (builder *TicketCustomizedFieldBuilder) FieldType(fieldType string) *TicketCustomizedFieldBuilder {
  2812  	builder.fieldType = fieldType
  2813  	builder.fieldTypeFlag = true
  2814  	return builder
  2815  }
  2816  
  2817  // 描述
  2818  //
  2819  // 示例值:下拉示例
  2820  func (builder *TicketCustomizedFieldBuilder) Description(description string) *TicketCustomizedFieldBuilder {
  2821  	builder.description = description
  2822  	builder.descriptionFlag = true
  2823  	return builder
  2824  }
  2825  
  2826  // 是否可见
  2827  //
  2828  // 示例值:true
  2829  func (builder *TicketCustomizedFieldBuilder) Visible(visible bool) *TicketCustomizedFieldBuilder {
  2830  	builder.visible = visible
  2831  	builder.visibleFlag = true
  2832  	return builder
  2833  }
  2834  
  2835  // 是否可以修改
  2836  //
  2837  // 示例值:true
  2838  func (builder *TicketCustomizedFieldBuilder) Editable(editable bool) *TicketCustomizedFieldBuilder {
  2839  	builder.editable = editable
  2840  	builder.editableFlag = true
  2841  	return builder
  2842  }
  2843  
  2844  // 是否必填
  2845  //
  2846  // 示例值:false
  2847  func (builder *TicketCustomizedFieldBuilder) Required(required bool) *TicketCustomizedFieldBuilder {
  2848  	builder.required = required
  2849  	builder.requiredFlag = true
  2850  	return builder
  2851  }
  2852  
  2853  // 创建时间
  2854  //
  2855  // 示例值:1591239289000
  2856  func (builder *TicketCustomizedFieldBuilder) CreatedAt(createdAt string) *TicketCustomizedFieldBuilder {
  2857  	builder.createdAt = createdAt
  2858  	builder.createdAtFlag = true
  2859  	return builder
  2860  }
  2861  
  2862  // 更新时间
  2863  //
  2864  // 示例值:1591239289000
  2865  func (builder *TicketCustomizedFieldBuilder) UpdatedAt(updatedAt string) *TicketCustomizedFieldBuilder {
  2866  	builder.updatedAt = updatedAt
  2867  	builder.updatedAtFlag = true
  2868  	return builder
  2869  }
  2870  
  2871  // 创建用户
  2872  //
  2873  // 示例值:
  2874  func (builder *TicketCustomizedFieldBuilder) CreatedBy(createdBy *TicketUser) *TicketCustomizedFieldBuilder {
  2875  	builder.createdBy = createdBy
  2876  	builder.createdByFlag = true
  2877  	return builder
  2878  }
  2879  
  2880  // 更新用户
  2881  //
  2882  // 示例值:
  2883  func (builder *TicketCustomizedFieldBuilder) UpdatedBy(updatedBy *TicketUser) *TicketCustomizedFieldBuilder {
  2884  	builder.updatedBy = updatedBy
  2885  	builder.updatedByFlag = true
  2886  	return builder
  2887  }
  2888  
  2889  // 是否支持多选,仅在字段类型是dropdown的时候有效
  2890  //
  2891  // 示例值:true
  2892  func (builder *TicketCustomizedFieldBuilder) DropdownAllowMultiple(dropdownAllowMultiple bool) *TicketCustomizedFieldBuilder {
  2893  	builder.dropdownAllowMultiple = dropdownAllowMultiple
  2894  	builder.dropdownAllowMultipleFlag = true
  2895  	return builder
  2896  }
  2897  
  2898  func (builder *TicketCustomizedFieldBuilder) Build() *TicketCustomizedField {
  2899  	req := &TicketCustomizedField{}
  2900  	if builder.ticketCustomizedFieldIdFlag {
  2901  		req.TicketCustomizedFieldId = &builder.ticketCustomizedFieldId
  2902  
  2903  	}
  2904  	if builder.helpdeskIdFlag {
  2905  		req.HelpdeskId = &builder.helpdeskId
  2906  
  2907  	}
  2908  	if builder.keyNameFlag {
  2909  		req.KeyName = &builder.keyName
  2910  
  2911  	}
  2912  	if builder.displayNameFlag {
  2913  		req.DisplayName = &builder.displayName
  2914  
  2915  	}
  2916  	if builder.positionFlag {
  2917  		req.Position = &builder.position
  2918  
  2919  	}
  2920  	if builder.fieldTypeFlag {
  2921  		req.FieldType = &builder.fieldType
  2922  
  2923  	}
  2924  	if builder.descriptionFlag {
  2925  		req.Description = &builder.description
  2926  
  2927  	}
  2928  	if builder.visibleFlag {
  2929  		req.Visible = &builder.visible
  2930  
  2931  	}
  2932  	if builder.editableFlag {
  2933  		req.Editable = &builder.editable
  2934  
  2935  	}
  2936  	if builder.requiredFlag {
  2937  		req.Required = &builder.required
  2938  
  2939  	}
  2940  	if builder.createdAtFlag {
  2941  		req.CreatedAt = &builder.createdAt
  2942  
  2943  	}
  2944  	if builder.updatedAtFlag {
  2945  		req.UpdatedAt = &builder.updatedAt
  2946  
  2947  	}
  2948  	if builder.createdByFlag {
  2949  		req.CreatedBy = builder.createdBy
  2950  	}
  2951  	if builder.updatedByFlag {
  2952  		req.UpdatedBy = builder.updatedBy
  2953  	}
  2954  	if builder.dropdownAllowMultipleFlag {
  2955  		req.DropdownAllowMultiple = &builder.dropdownAllowMultiple
  2956  
  2957  	}
  2958  	return req
  2959  }
  2960  
  2961  type TicketEvent struct {
  2962  	TicketId         *string                       `json:"ticket_id,omitempty"`         // 工单ID;;[可以从工单列表里面取](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/list);;[也可以订阅工单创建事件获取](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/events/created)
  2963  	HelpdeskId       *string                       `json:"helpdesk_id,omitempty"`       // 服务台id
  2964  	Guest            *TicketUserEvent              `json:"guest,omitempty"`             // 用户id
  2965  	Stage            *int                          `json:"stage,omitempty"`             // 工单阶段:1. 机器人 2. 人工
  2966  	Status           *int                          `json:"status,omitempty"`            // 工单状态,1:已创建 2: 处理中 3: 排队中 4:待定 5:待用户响应 50: 被机器人关闭 51: 被客服关闭 52: 用户自己关闭
  2967  	Score            *int                          `json:"score,omitempty"`             // 工单评分,1:不满意,2:一般,3:满意
  2968  	CreatedAt        *int                          `json:"created_at,omitempty"`        // 创建时间
  2969  	UpdatedAt        *int                          `json:"updated_at,omitempty"`        // 工单更新时间,没有值时为-1
  2970  	ClosedAt         *int                          `json:"closed_at,omitempty"`         // 关单时间
  2971  	Agents           []*TicketUserEvent            `json:"agents,omitempty"`            // agents of this ticket
  2972  	Channel          *int                          `json:"channel,omitempty"`           // 工单渠道,描述:9:Open API 2:二维码 14:分享 13:搜索 其他数字:其他渠道
  2973  	Solve            *int                          `json:"solve,omitempty"`             // 工单是否解决 1:没解决 2:已解决
  2974  	ClosedBy         *TicketUserEvent              `json:"closed_by,omitempty"`         // closed user of this ticket
  2975  	Collaborators    []*TicketUserEvent            `json:"collaborators,omitempty"`     // collaborators of this ticket
  2976  	CustomizedFields []*CustomizedFieldDisplayItem `json:"customized_fields,omitempty"` // 自定义字段
  2977  	ChatId           *string                       `json:"chat_id,omitempty"`           // oc_xxxxxxx
  2978  }
  2979  
  2980  type TicketEventBuilder struct {
  2981  	ticketId             string // 工单ID;;[可以从工单列表里面取](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/list);;[也可以订阅工单创建事件获取](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/events/created)
  2982  	ticketIdFlag         bool
  2983  	helpdeskId           string // 服务台id
  2984  	helpdeskIdFlag       bool
  2985  	guest                *TicketUserEvent // 用户id
  2986  	guestFlag            bool
  2987  	stage                int // 工单阶段:1. 机器人 2. 人工
  2988  	stageFlag            bool
  2989  	status               int // 工单状态,1:已创建 2: 处理中 3: 排队中 4:待定 5:待用户响应 50: 被机器人关闭 51: 被客服关闭 52: 用户自己关闭
  2990  	statusFlag           bool
  2991  	score                int // 工单评分,1:不满意,2:一般,3:满意
  2992  	scoreFlag            bool
  2993  	createdAt            int // 创建时间
  2994  	createdAtFlag        bool
  2995  	updatedAt            int // 工单更新时间,没有值时为-1
  2996  	updatedAtFlag        bool
  2997  	closedAt             int // 关单时间
  2998  	closedAtFlag         bool
  2999  	agents               []*TicketUserEvent // agents of this ticket
  3000  	agentsFlag           bool
  3001  	channel              int // 工单渠道,描述:9:Open API 2:二维码 14:分享 13:搜索 其他数字:其他渠道
  3002  	channelFlag          bool
  3003  	solve                int // 工单是否解决 1:没解决 2:已解决
  3004  	solveFlag            bool
  3005  	closedBy             *TicketUserEvent // closed user of this ticket
  3006  	closedByFlag         bool
  3007  	collaborators        []*TicketUserEvent // collaborators of this ticket
  3008  	collaboratorsFlag    bool
  3009  	customizedFields     []*CustomizedFieldDisplayItem // 自定义字段
  3010  	customizedFieldsFlag bool
  3011  	chatId               string // oc_xxxxxxx
  3012  	chatIdFlag           bool
  3013  }
  3014  
  3015  func NewTicketEventBuilder() *TicketEventBuilder {
  3016  	builder := &TicketEventBuilder{}
  3017  	return builder
  3018  }
  3019  
  3020  // 工单ID;;[可以从工单列表里面取](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/list);;[也可以订阅工单创建事件获取](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/events/created)
  3021  //
  3022  // 示例值:6626871355780366331
  3023  func (builder *TicketEventBuilder) TicketId(ticketId string) *TicketEventBuilder {
  3024  	builder.ticketId = ticketId
  3025  	builder.ticketIdFlag = true
  3026  	return builder
  3027  }
  3028  
  3029  // 服务台id
  3030  //
  3031  // 示例值:6626871355780366330
  3032  func (builder *TicketEventBuilder) HelpdeskId(helpdeskId string) *TicketEventBuilder {
  3033  	builder.helpdeskId = helpdeskId
  3034  	builder.helpdeskIdFlag = true
  3035  	return builder
  3036  }
  3037  
  3038  // 用户id
  3039  //
  3040  // 示例值:
  3041  func (builder *TicketEventBuilder) Guest(guest *TicketUserEvent) *TicketEventBuilder {
  3042  	builder.guest = guest
  3043  	builder.guestFlag = true
  3044  	return builder
  3045  }
  3046  
  3047  // 工单阶段:1. 机器人 2. 人工
  3048  //
  3049  // 示例值:1
  3050  func (builder *TicketEventBuilder) Stage(stage int) *TicketEventBuilder {
  3051  	builder.stage = stage
  3052  	builder.stageFlag = true
  3053  	return builder
  3054  }
  3055  
  3056  // 工单状态,1:已创建 2: 处理中 3: 排队中 4:待定 5:待用户响应 50: 被机器人关闭 51: 被客服关闭 52: 用户自己关闭
  3057  //
  3058  // 示例值:1
  3059  func (builder *TicketEventBuilder) Status(status int) *TicketEventBuilder {
  3060  	builder.status = status
  3061  	builder.statusFlag = true
  3062  	return builder
  3063  }
  3064  
  3065  // 工单评分,1:不满意,2:一般,3:满意
  3066  //
  3067  // 示例值:1
  3068  func (builder *TicketEventBuilder) Score(score int) *TicketEventBuilder {
  3069  	builder.score = score
  3070  	builder.scoreFlag = true
  3071  	return builder
  3072  }
  3073  
  3074  // 创建时间
  3075  //
  3076  // 示例值:1616920429000
  3077  func (builder *TicketEventBuilder) CreatedAt(createdAt int) *TicketEventBuilder {
  3078  	builder.createdAt = createdAt
  3079  	builder.createdAtFlag = true
  3080  	return builder
  3081  }
  3082  
  3083  // 工单更新时间,没有值时为-1
  3084  //
  3085  // 示例值:1616920429000
  3086  func (builder *TicketEventBuilder) UpdatedAt(updatedAt int) *TicketEventBuilder {
  3087  	builder.updatedAt = updatedAt
  3088  	builder.updatedAtFlag = true
  3089  	return builder
  3090  }
  3091  
  3092  // 关单时间
  3093  //
  3094  // 示例值:1616920429000
  3095  func (builder *TicketEventBuilder) ClosedAt(closedAt int) *TicketEventBuilder {
  3096  	builder.closedAt = closedAt
  3097  	builder.closedAtFlag = true
  3098  	return builder
  3099  }
  3100  
  3101  // agents of this ticket
  3102  //
  3103  // 示例值:
  3104  func (builder *TicketEventBuilder) Agents(agents []*TicketUserEvent) *TicketEventBuilder {
  3105  	builder.agents = agents
  3106  	builder.agentsFlag = true
  3107  	return builder
  3108  }
  3109  
  3110  // 工单渠道,描述:9:Open API 2:二维码 14:分享 13:搜索 其他数字:其他渠道
  3111  //
  3112  // 示例值:0
  3113  func (builder *TicketEventBuilder) Channel(channel int) *TicketEventBuilder {
  3114  	builder.channel = channel
  3115  	builder.channelFlag = true
  3116  	return builder
  3117  }
  3118  
  3119  // 工单是否解决 1:没解决 2:已解决
  3120  //
  3121  // 示例值:1
  3122  func (builder *TicketEventBuilder) Solve(solve int) *TicketEventBuilder {
  3123  	builder.solve = solve
  3124  	builder.solveFlag = true
  3125  	return builder
  3126  }
  3127  
  3128  // closed user of this ticket
  3129  //
  3130  // 示例值:
  3131  func (builder *TicketEventBuilder) ClosedBy(closedBy *TicketUserEvent) *TicketEventBuilder {
  3132  	builder.closedBy = closedBy
  3133  	builder.closedByFlag = true
  3134  	return builder
  3135  }
  3136  
  3137  // collaborators of this ticket
  3138  //
  3139  // 示例值:
  3140  func (builder *TicketEventBuilder) Collaborators(collaborators []*TicketUserEvent) *TicketEventBuilder {
  3141  	builder.collaborators = collaborators
  3142  	builder.collaboratorsFlag = true
  3143  	return builder
  3144  }
  3145  
  3146  // 自定义字段
  3147  //
  3148  // 示例值:
  3149  func (builder *TicketEventBuilder) CustomizedFields(customizedFields []*CustomizedFieldDisplayItem) *TicketEventBuilder {
  3150  	builder.customizedFields = customizedFields
  3151  	builder.customizedFieldsFlag = true
  3152  	return builder
  3153  }
  3154  
  3155  // oc_xxxxxxx
  3156  //
  3157  // 示例值:oc_xxxxxxx
  3158  func (builder *TicketEventBuilder) ChatId(chatId string) *TicketEventBuilder {
  3159  	builder.chatId = chatId
  3160  	builder.chatIdFlag = true
  3161  	return builder
  3162  }
  3163  
  3164  func (builder *TicketEventBuilder) Build() *TicketEvent {
  3165  	req := &TicketEvent{}
  3166  	if builder.ticketIdFlag {
  3167  		req.TicketId = &builder.ticketId
  3168  
  3169  	}
  3170  	if builder.helpdeskIdFlag {
  3171  		req.HelpdeskId = &builder.helpdeskId
  3172  
  3173  	}
  3174  	if builder.guestFlag {
  3175  		req.Guest = builder.guest
  3176  	}
  3177  	if builder.stageFlag {
  3178  		req.Stage = &builder.stage
  3179  
  3180  	}
  3181  	if builder.statusFlag {
  3182  		req.Status = &builder.status
  3183  
  3184  	}
  3185  	if builder.scoreFlag {
  3186  		req.Score = &builder.score
  3187  
  3188  	}
  3189  	if builder.createdAtFlag {
  3190  		req.CreatedAt = &builder.createdAt
  3191  
  3192  	}
  3193  	if builder.updatedAtFlag {
  3194  		req.UpdatedAt = &builder.updatedAt
  3195  
  3196  	}
  3197  	if builder.closedAtFlag {
  3198  		req.ClosedAt = &builder.closedAt
  3199  
  3200  	}
  3201  	if builder.agentsFlag {
  3202  		req.Agents = builder.agents
  3203  	}
  3204  	if builder.channelFlag {
  3205  		req.Channel = &builder.channel
  3206  
  3207  	}
  3208  	if builder.solveFlag {
  3209  		req.Solve = &builder.solve
  3210  
  3211  	}
  3212  	if builder.closedByFlag {
  3213  		req.ClosedBy = builder.closedBy
  3214  	}
  3215  	if builder.collaboratorsFlag {
  3216  		req.Collaborators = builder.collaborators
  3217  	}
  3218  	if builder.customizedFieldsFlag {
  3219  		req.CustomizedFields = builder.customizedFields
  3220  	}
  3221  	if builder.chatIdFlag {
  3222  		req.ChatId = &builder.chatId
  3223  
  3224  	}
  3225  	return req
  3226  }
  3227  
  3228  type TicketEventUpdateInfo struct {
  3229  	Stage     *int `json:"stage,omitempty"`      // ticket stage
  3230  	Status    *int `json:"status,omitempty"`     // ticket status
  3231  	UpdatedAt *int `json:"updated_at,omitempty"` // ticket update time
  3232  }
  3233  
  3234  type TicketEventUpdateInfoBuilder struct {
  3235  	stage         int // ticket stage
  3236  	stageFlag     bool
  3237  	status        int // ticket status
  3238  	statusFlag    bool
  3239  	updatedAt     int // ticket update time
  3240  	updatedAtFlag bool
  3241  }
  3242  
  3243  func NewTicketEventUpdateInfoBuilder() *TicketEventUpdateInfoBuilder {
  3244  	builder := &TicketEventUpdateInfoBuilder{}
  3245  	return builder
  3246  }
  3247  
  3248  // ticket stage
  3249  //
  3250  // 示例值:1
  3251  func (builder *TicketEventUpdateInfoBuilder) Stage(stage int) *TicketEventUpdateInfoBuilder {
  3252  	builder.stage = stage
  3253  	builder.stageFlag = true
  3254  	return builder
  3255  }
  3256  
  3257  // ticket status
  3258  //
  3259  // 示例值:50
  3260  func (builder *TicketEventUpdateInfoBuilder) Status(status int) *TicketEventUpdateInfoBuilder {
  3261  	builder.status = status
  3262  	builder.statusFlag = true
  3263  	return builder
  3264  }
  3265  
  3266  // ticket update time
  3267  //
  3268  // 示例值:1616920429000
  3269  func (builder *TicketEventUpdateInfoBuilder) UpdatedAt(updatedAt int) *TicketEventUpdateInfoBuilder {
  3270  	builder.updatedAt = updatedAt
  3271  	builder.updatedAtFlag = true
  3272  	return builder
  3273  }
  3274  
  3275  func (builder *TicketEventUpdateInfoBuilder) Build() *TicketEventUpdateInfo {
  3276  	req := &TicketEventUpdateInfo{}
  3277  	if builder.stageFlag {
  3278  		req.Stage = &builder.stage
  3279  
  3280  	}
  3281  	if builder.statusFlag {
  3282  		req.Status = &builder.status
  3283  
  3284  	}
  3285  	if builder.updatedAtFlag {
  3286  		req.UpdatedAt = &builder.updatedAt
  3287  
  3288  	}
  3289  	return req
  3290  }
  3291  
  3292  type TicketMessageContent struct {
  3293  	Content   *string  `json:"content,omitempty"`    // 内容
  3294  	MsgType   *string  `json:"msg_type,omitempty"`   // 消息类型;text:纯文本;post:富文本;image:图片
  3295  	ImageKeys []string `json:"image_keys,omitempty"` // 图片ID
  3296  	ImageKey  *string  `json:"image_key,omitempty"`  // 图片ID
  3297  }
  3298  
  3299  type TicketMessageContentBuilder struct {
  3300  	content       string // 内容
  3301  	contentFlag   bool
  3302  	msgType       string // 消息类型;text:纯文本;post:富文本;image:图片
  3303  	msgTypeFlag   bool
  3304  	imageKeys     []string // 图片ID
  3305  	imageKeysFlag bool
  3306  	imageKey      string // 图片ID
  3307  	imageKeyFlag  bool
  3308  }
  3309  
  3310  func NewTicketMessageContentBuilder() *TicketMessageContentBuilder {
  3311  	builder := &TicketMessageContentBuilder{}
  3312  	return builder
  3313  }
  3314  
  3315  // 内容
  3316  //
  3317  // 示例值:请问vpn怎么下载
  3318  func (builder *TicketMessageContentBuilder) Content(content string) *TicketMessageContentBuilder {
  3319  	builder.content = content
  3320  	builder.contentFlag = true
  3321  	return builder
  3322  }
  3323  
  3324  // 消息类型;text:纯文本;post:富文本;image:图片
  3325  //
  3326  // 示例值:text
  3327  func (builder *TicketMessageContentBuilder) MsgType(msgType string) *TicketMessageContentBuilder {
  3328  	builder.msgType = msgType
  3329  	builder.msgTypeFlag = true
  3330  	return builder
  3331  }
  3332  
  3333  // 图片ID
  3334  //
  3335  // 示例值:
  3336  func (builder *TicketMessageContentBuilder) ImageKeys(imageKeys []string) *TicketMessageContentBuilder {
  3337  	builder.imageKeys = imageKeys
  3338  	builder.imageKeysFlag = true
  3339  	return builder
  3340  }
  3341  
  3342  // 图片ID
  3343  //
  3344  // 示例值:xxx
  3345  func (builder *TicketMessageContentBuilder) ImageKey(imageKey string) *TicketMessageContentBuilder {
  3346  	builder.imageKey = imageKey
  3347  	builder.imageKeyFlag = true
  3348  	return builder
  3349  }
  3350  
  3351  func (builder *TicketMessageContentBuilder) Build() *TicketMessageContent {
  3352  	req := &TicketMessageContent{}
  3353  	if builder.contentFlag {
  3354  		req.Content = &builder.content
  3355  
  3356  	}
  3357  	if builder.msgTypeFlag {
  3358  		req.MsgType = &builder.msgType
  3359  
  3360  	}
  3361  	if builder.imageKeysFlag {
  3362  		req.ImageKeys = builder.imageKeys
  3363  	}
  3364  	if builder.imageKeyFlag {
  3365  		req.ImageKey = &builder.imageKey
  3366  
  3367  	}
  3368  	return req
  3369  }
  3370  
  3371  type TicketMessageEvent struct {
  3372  	TicketMessageId *string               `json:"ticket_message_id,omitempty"` // ticket message id
  3373  	MessageId       *string               `json:"message_id,omitempty"`        // open message id
  3374  	MsgType         *string               `json:"msg_type,omitempty"`          // message type, text is the only supported type
  3375  	Position        *string               `json:"position,omitempty"`          // position of the message
  3376  	SenderId        *UserId               `json:"sender_id,omitempty"`         // 用户 ID
  3377  	SenderType      *int                  `json:"sender_type,omitempty"`       // sender type, 1 for bot, 2 for guest, 3 for agent
  3378  	Text            *string               `json:"text,omitempty"`              // message content
  3379  	Ticket          *Ticket               `json:"ticket,omitempty"`            // ticket related information
  3380  	EventId         *string               `json:"event_id,omitempty"`          // event id
  3381  	ChatId          *string               `json:"chat_id,omitempty"`           // chat id
  3382  	Content         *TicketMessageContent `json:"content,omitempty"`           // message content
  3383  }
  3384  
  3385  type TicketMessageEventBuilder struct {
  3386  	ticketMessageId     string // ticket message id
  3387  	ticketMessageIdFlag bool
  3388  	messageId           string // open message id
  3389  	messageIdFlag       bool
  3390  	msgType             string // message type, text is the only supported type
  3391  	msgTypeFlag         bool
  3392  	position            string // position of the message
  3393  	positionFlag        bool
  3394  	senderId            *UserId // 用户 ID
  3395  	senderIdFlag        bool
  3396  	senderType          int // sender type, 1 for bot, 2 for guest, 3 for agent
  3397  	senderTypeFlag      bool
  3398  	text                string // message content
  3399  	textFlag            bool
  3400  	ticket              *Ticket // ticket related information
  3401  	ticketFlag          bool
  3402  	eventId             string // event id
  3403  	eventIdFlag         bool
  3404  	chatId              string // chat id
  3405  	chatIdFlag          bool
  3406  	content             *TicketMessageContent // message content
  3407  	contentFlag         bool
  3408  }
  3409  
  3410  func NewTicketMessageEventBuilder() *TicketMessageEventBuilder {
  3411  	builder := &TicketMessageEventBuilder{}
  3412  	return builder
  3413  }
  3414  
  3415  // ticket message id
  3416  //
  3417  // 示例值:6949088240624222236
  3418  func (builder *TicketMessageEventBuilder) TicketMessageId(ticketMessageId string) *TicketMessageEventBuilder {
  3419  	builder.ticketMessageId = ticketMessageId
  3420  	builder.ticketMessageIdFlag = true
  3421  	return builder
  3422  }
  3423  
  3424  // open message id
  3425  //
  3426  // 示例值:om_8baa3656c7b41900d29bf9104bf5310b
  3427  func (builder *TicketMessageEventBuilder) MessageId(messageId string) *TicketMessageEventBuilder {
  3428  	builder.messageId = messageId
  3429  	builder.messageIdFlag = true
  3430  	return builder
  3431  }
  3432  
  3433  // message type, text is the only supported type
  3434  //
  3435  // 示例值:text
  3436  func (builder *TicketMessageEventBuilder) MsgType(msgType string) *TicketMessageEventBuilder {
  3437  	builder.msgType = msgType
  3438  	builder.msgTypeFlag = true
  3439  	return builder
  3440  }
  3441  
  3442  // position of the message
  3443  //
  3444  // 示例值:10
  3445  func (builder *TicketMessageEventBuilder) Position(position string) *TicketMessageEventBuilder {
  3446  	builder.position = position
  3447  	builder.positionFlag = true
  3448  	return builder
  3449  }
  3450  
  3451  // 用户 ID
  3452  //
  3453  // 示例值:
  3454  func (builder *TicketMessageEventBuilder) SenderId(senderId *UserId) *TicketMessageEventBuilder {
  3455  	builder.senderId = senderId
  3456  	builder.senderIdFlag = true
  3457  	return builder
  3458  }
  3459  
  3460  // sender type, 1 for bot, 2 for guest, 3 for agent
  3461  //
  3462  // 示例值:1
  3463  func (builder *TicketMessageEventBuilder) SenderType(senderType int) *TicketMessageEventBuilder {
  3464  	builder.senderType = senderType
  3465  	builder.senderTypeFlag = true
  3466  	return builder
  3467  }
  3468  
  3469  // message content
  3470  //
  3471  // 示例值:请问vpn怎么下载
  3472  func (builder *TicketMessageEventBuilder) Text(text string) *TicketMessageEventBuilder {
  3473  	builder.text = text
  3474  	builder.textFlag = true
  3475  	return builder
  3476  }
  3477  
  3478  // ticket related information
  3479  //
  3480  // 示例值:
  3481  func (builder *TicketMessageEventBuilder) Ticket(ticket *Ticket) *TicketMessageEventBuilder {
  3482  	builder.ticket = ticket
  3483  	builder.ticketFlag = true
  3484  	return builder
  3485  }
  3486  
  3487  // event id
  3488  //
  3489  // 示例值:118a6492-122d-04ad-4370-010a3bb384d3
  3490  func (builder *TicketMessageEventBuilder) EventId(eventId string) *TicketMessageEventBuilder {
  3491  	builder.eventId = eventId
  3492  	builder.eventIdFlag = true
  3493  	return builder
  3494  }
  3495  
  3496  // chat id
  3497  //
  3498  // 示例值:6949088236610273307
  3499  func (builder *TicketMessageEventBuilder) ChatId(chatId string) *TicketMessageEventBuilder {
  3500  	builder.chatId = chatId
  3501  	builder.chatIdFlag = true
  3502  	return builder
  3503  }
  3504  
  3505  // message content
  3506  //
  3507  // 示例值:
  3508  func (builder *TicketMessageEventBuilder) Content(content *TicketMessageContent) *TicketMessageEventBuilder {
  3509  	builder.content = content
  3510  	builder.contentFlag = true
  3511  	return builder
  3512  }
  3513  
  3514  func (builder *TicketMessageEventBuilder) Build() *TicketMessageEvent {
  3515  	req := &TicketMessageEvent{}
  3516  	if builder.ticketMessageIdFlag {
  3517  		req.TicketMessageId = &builder.ticketMessageId
  3518  
  3519  	}
  3520  	if builder.messageIdFlag {
  3521  		req.MessageId = &builder.messageId
  3522  
  3523  	}
  3524  	if builder.msgTypeFlag {
  3525  		req.MsgType = &builder.msgType
  3526  
  3527  	}
  3528  	if builder.positionFlag {
  3529  		req.Position = &builder.position
  3530  
  3531  	}
  3532  	if builder.senderIdFlag {
  3533  		req.SenderId = builder.senderId
  3534  	}
  3535  	if builder.senderTypeFlag {
  3536  		req.SenderType = &builder.senderType
  3537  
  3538  	}
  3539  	if builder.textFlag {
  3540  		req.Text = &builder.text
  3541  
  3542  	}
  3543  	if builder.ticketFlag {
  3544  		req.Ticket = builder.ticket
  3545  	}
  3546  	if builder.eventIdFlag {
  3547  		req.EventId = &builder.eventId
  3548  
  3549  	}
  3550  	if builder.chatIdFlag {
  3551  		req.ChatId = &builder.chatId
  3552  
  3553  	}
  3554  	if builder.contentFlag {
  3555  		req.Content = builder.content
  3556  	}
  3557  	return req
  3558  }
  3559  
  3560  type TicketUser struct {
  3561  	Id         *string `json:"id,omitempty"`         // 用户ID
  3562  	AvatarUrl  *string `json:"avatar_url,omitempty"` // 用户头像url
  3563  	Name       *string `json:"name,omitempty"`       // 用户名
  3564  	Email      *string `json:"email,omitempty"`      // 用户邮箱
  3565  	Department *string `json:"department,omitempty"` // 所在部门名称
  3566  	City       *string `json:"city,omitempty"`       // 城市
  3567  	Country    *string `json:"country,omitempty"`    // 国家代号(CountryCode),参考:http://www.mamicode.com/info-detail-2186501.html
  3568  }
  3569  
  3570  type TicketUserBuilder struct {
  3571  	id             string // 用户ID
  3572  	idFlag         bool
  3573  	avatarUrl      string // 用户头像url
  3574  	avatarUrlFlag  bool
  3575  	name           string // 用户名
  3576  	nameFlag       bool
  3577  	email          string // 用户邮箱
  3578  	emailFlag      bool
  3579  	department     string // 所在部门名称
  3580  	departmentFlag bool
  3581  	city           string // 城市
  3582  	cityFlag       bool
  3583  	country        string // 国家代号(CountryCode),参考:http://www.mamicode.com/info-detail-2186501.html
  3584  	countryFlag    bool
  3585  }
  3586  
  3587  func NewTicketUserBuilder() *TicketUserBuilder {
  3588  	builder := &TicketUserBuilder{}
  3589  	return builder
  3590  }
  3591  
  3592  // 用户ID
  3593  //
  3594  // 示例值:ou_37019b7c830210acd88fdce886e25c71
  3595  func (builder *TicketUserBuilder) Id(id string) *TicketUserBuilder {
  3596  	builder.id = id
  3597  	builder.idFlag = true
  3598  	return builder
  3599  }
  3600  
  3601  // 用户头像url
  3602  //
  3603  // 示例值:https://xxxx
  3604  func (builder *TicketUserBuilder) AvatarUrl(avatarUrl string) *TicketUserBuilder {
  3605  	builder.avatarUrl = avatarUrl
  3606  	builder.avatarUrlFlag = true
  3607  	return builder
  3608  }
  3609  
  3610  // 用户名
  3611  //
  3612  // 示例值:abc
  3613  func (builder *TicketUserBuilder) Name(name string) *TicketUserBuilder {
  3614  	builder.name = name
  3615  	builder.nameFlag = true
  3616  	return builder
  3617  }
  3618  
  3619  // 用户邮箱
  3620  //
  3621  // 示例值:xxxx@abc.com
  3622  func (builder *TicketUserBuilder) Email(email string) *TicketUserBuilder {
  3623  	builder.email = email
  3624  	builder.emailFlag = true
  3625  	return builder
  3626  }
  3627  
  3628  // 所在部门名称
  3629  //
  3630  // 示例值:用户部门名称(有权限才展示)
  3631  func (builder *TicketUserBuilder) Department(department string) *TicketUserBuilder {
  3632  	builder.department = department
  3633  	builder.departmentFlag = true
  3634  	return builder
  3635  }
  3636  
  3637  // 城市
  3638  //
  3639  // 示例值:城市
  3640  func (builder *TicketUserBuilder) City(city string) *TicketUserBuilder {
  3641  	builder.city = city
  3642  	builder.cityFlag = true
  3643  	return builder
  3644  }
  3645  
  3646  // 国家代号(CountryCode),参考:http://www.mamicode.com/info-detail-2186501.html
  3647  //
  3648  // 示例值:国家
  3649  func (builder *TicketUserBuilder) Country(country string) *TicketUserBuilder {
  3650  	builder.country = country
  3651  	builder.countryFlag = true
  3652  	return builder
  3653  }
  3654  
  3655  func (builder *TicketUserBuilder) Build() *TicketUser {
  3656  	req := &TicketUser{}
  3657  	if builder.idFlag {
  3658  		req.Id = &builder.id
  3659  
  3660  	}
  3661  	if builder.avatarUrlFlag {
  3662  		req.AvatarUrl = &builder.avatarUrl
  3663  
  3664  	}
  3665  	if builder.nameFlag {
  3666  		req.Name = &builder.name
  3667  
  3668  	}
  3669  	if builder.emailFlag {
  3670  		req.Email = &builder.email
  3671  
  3672  	}
  3673  	if builder.departmentFlag {
  3674  		req.Department = &builder.department
  3675  
  3676  	}
  3677  	if builder.cityFlag {
  3678  		req.City = &builder.city
  3679  
  3680  	}
  3681  	if builder.countryFlag {
  3682  		req.Country = &builder.country
  3683  
  3684  	}
  3685  	return req
  3686  }
  3687  
  3688  type TicketUserEvent struct {
  3689  	Id        *UserId `json:"id,omitempty"`         // id
  3690  	AvatarUrl *string `json:"avatar_url,omitempty"` // user avartal url
  3691  	Name      *string `json:"name,omitempty"`       // 名称
  3692  	Email     *string `json:"email,omitempty"`      // user email
  3693  }
  3694  
  3695  type TicketUserEventBuilder struct {
  3696  	id            *UserId // id
  3697  	idFlag        bool
  3698  	avatarUrl     string // user avartal url
  3699  	avatarUrlFlag bool
  3700  	name          string // 名称
  3701  	nameFlag      bool
  3702  	email         string // user email
  3703  	emailFlag     bool
  3704  }
  3705  
  3706  func NewTicketUserEventBuilder() *TicketUserEventBuilder {
  3707  	builder := &TicketUserEventBuilder{}
  3708  	return builder
  3709  }
  3710  
  3711  // id
  3712  //
  3713  // 示例值:
  3714  func (builder *TicketUserEventBuilder) Id(id *UserId) *TicketUserEventBuilder {
  3715  	builder.id = id
  3716  	builder.idFlag = true
  3717  	return builder
  3718  }
  3719  
  3720  // user avartal url
  3721  //
  3722  // 示例值:
  3723  func (builder *TicketUserEventBuilder) AvatarUrl(avatarUrl string) *TicketUserEventBuilder {
  3724  	builder.avatarUrl = avatarUrl
  3725  	builder.avatarUrlFlag = true
  3726  	return builder
  3727  }
  3728  
  3729  // 名称
  3730  //
  3731  // 示例值:abc
  3732  func (builder *TicketUserEventBuilder) Name(name string) *TicketUserEventBuilder {
  3733  	builder.name = name
  3734  	builder.nameFlag = true
  3735  	return builder
  3736  }
  3737  
  3738  // user email
  3739  //
  3740  // 示例值:
  3741  func (builder *TicketUserEventBuilder) Email(email string) *TicketUserEventBuilder {
  3742  	builder.email = email
  3743  	builder.emailFlag = true
  3744  	return builder
  3745  }
  3746  
  3747  func (builder *TicketUserEventBuilder) Build() *TicketUserEvent {
  3748  	req := &TicketUserEvent{}
  3749  	if builder.idFlag {
  3750  		req.Id = builder.id
  3751  	}
  3752  	if builder.avatarUrlFlag {
  3753  		req.AvatarUrl = &builder.avatarUrl
  3754  
  3755  	}
  3756  	if builder.nameFlag {
  3757  		req.Name = &builder.name
  3758  
  3759  	}
  3760  	if builder.emailFlag {
  3761  		req.Email = &builder.email
  3762  
  3763  	}
  3764  	return req
  3765  }
  3766  
  3767  type UserCustomizedField struct {
  3768  	UserCustomizedFieldId *string `json:"user_customized_field_id,omitempty"` // 字段ID
  3769  	Id                    *string `json:"id,omitempty"`                       // 旧字段ID,向后兼容用
  3770  	HelpdeskId            *string `json:"helpdesk_id,omitempty"`              // 服务台ID
  3771  	KeyName               *string `json:"key_name,omitempty"`                 // 字段键
  3772  	DisplayName           *string `json:"display_name,omitempty"`             // 字段展示名称
  3773  	Position              *string `json:"position,omitempty"`                 // 字段在列表中的展示位置
  3774  	FieldType             *string `json:"field_type,omitempty"`               // 字段类型
  3775  	Description           *string `json:"description,omitempty"`              // 字段描述信息
  3776  	Visible               *bool   `json:"visible,omitempty"`                  // 字段是否可见
  3777  	Editable              *bool   `json:"editable,omitempty"`                 // 字段是否可编辑
  3778  	Required              *bool   `json:"required,omitempty"`                 // 字段是否必填
  3779  	CreatedAt             *string `json:"created_at,omitempty"`               // 字段创建时间
  3780  	UpdatedAt             *string `json:"updated_at,omitempty"`               // 字段修改时间
  3781  }
  3782  
  3783  type UserCustomizedFieldBuilder struct {
  3784  	userCustomizedFieldId     string // 字段ID
  3785  	userCustomizedFieldIdFlag bool
  3786  	id                        string // 旧字段ID,向后兼容用
  3787  	idFlag                    bool
  3788  	helpdeskId                string // 服务台ID
  3789  	helpdeskIdFlag            bool
  3790  	keyName                   string // 字段键
  3791  	keyNameFlag               bool
  3792  	displayName               string // 字段展示名称
  3793  	displayNameFlag           bool
  3794  	position                  string // 字段在列表中的展示位置
  3795  	positionFlag              bool
  3796  	fieldType                 string // 字段类型
  3797  	fieldTypeFlag             bool
  3798  	description               string // 字段描述信息
  3799  	descriptionFlag           bool
  3800  	visible                   bool // 字段是否可见
  3801  	visibleFlag               bool
  3802  	editable                  bool // 字段是否可编辑
  3803  	editableFlag              bool
  3804  	required                  bool // 字段是否必填
  3805  	requiredFlag              bool
  3806  	createdAt                 string // 字段创建时间
  3807  	createdAtFlag             bool
  3808  	updatedAt                 string // 字段修改时间
  3809  	updatedAtFlag             bool
  3810  }
  3811  
  3812  func NewUserCustomizedFieldBuilder() *UserCustomizedFieldBuilder {
  3813  	builder := &UserCustomizedFieldBuilder{}
  3814  	return builder
  3815  }
  3816  
  3817  // 字段ID
  3818  //
  3819  // 示例值:6746384425543548981
  3820  func (builder *UserCustomizedFieldBuilder) UserCustomizedFieldId(userCustomizedFieldId string) *UserCustomizedFieldBuilder {
  3821  	builder.userCustomizedFieldId = userCustomizedFieldId
  3822  	builder.userCustomizedFieldIdFlag = true
  3823  	return builder
  3824  }
  3825  
  3826  // 旧字段ID,向后兼容用
  3827  //
  3828  // 示例值:6746384425543548981
  3829  func (builder *UserCustomizedFieldBuilder) Id(id string) *UserCustomizedFieldBuilder {
  3830  	builder.id = id
  3831  	builder.idFlag = true
  3832  	return builder
  3833  }
  3834  
  3835  // 服务台ID
  3836  //
  3837  // 示例值:1542164574896126
  3838  func (builder *UserCustomizedFieldBuilder) HelpdeskId(helpdeskId string) *UserCustomizedFieldBuilder {
  3839  	builder.helpdeskId = helpdeskId
  3840  	builder.helpdeskIdFlag = true
  3841  	return builder
  3842  }
  3843  
  3844  // 字段键
  3845  //
  3846  // 示例值:company_id3
  3847  func (builder *UserCustomizedFieldBuilder) KeyName(keyName string) *UserCustomizedFieldBuilder {
  3848  	builder.keyName = keyName
  3849  	builder.keyNameFlag = true
  3850  	return builder
  3851  }
  3852  
  3853  // 字段展示名称
  3854  //
  3855  // 示例值:Company ID
  3856  func (builder *UserCustomizedFieldBuilder) DisplayName(displayName string) *UserCustomizedFieldBuilder {
  3857  	builder.displayName = displayName
  3858  	builder.displayNameFlag = true
  3859  	return builder
  3860  }
  3861  
  3862  // 字段在列表中的展示位置
  3863  //
  3864  // 示例值:1
  3865  func (builder *UserCustomizedFieldBuilder) Position(position string) *UserCustomizedFieldBuilder {
  3866  	builder.position = position
  3867  	builder.positionFlag = true
  3868  	return builder
  3869  }
  3870  
  3871  // 字段类型
  3872  //
  3873  // 示例值:string
  3874  func (builder *UserCustomizedFieldBuilder) FieldType(fieldType string) *UserCustomizedFieldBuilder {
  3875  	builder.fieldType = fieldType
  3876  	builder.fieldTypeFlag = true
  3877  	return builder
  3878  }
  3879  
  3880  // 字段描述信息
  3881  //
  3882  // 示例值:租户ID
  3883  func (builder *UserCustomizedFieldBuilder) Description(description string) *UserCustomizedFieldBuilder {
  3884  	builder.description = description
  3885  	builder.descriptionFlag = true
  3886  	return builder
  3887  }
  3888  
  3889  // 字段是否可见
  3890  //
  3891  // 示例值:false
  3892  func (builder *UserCustomizedFieldBuilder) Visible(visible bool) *UserCustomizedFieldBuilder {
  3893  	builder.visible = visible
  3894  	builder.visibleFlag = true
  3895  	return builder
  3896  }
  3897  
  3898  // 字段是否可编辑
  3899  //
  3900  // 示例值:false
  3901  func (builder *UserCustomizedFieldBuilder) Editable(editable bool) *UserCustomizedFieldBuilder {
  3902  	builder.editable = editable
  3903  	builder.editableFlag = true
  3904  	return builder
  3905  }
  3906  
  3907  // 字段是否必填
  3908  //
  3909  // 示例值:false
  3910  func (builder *UserCustomizedFieldBuilder) Required(required bool) *UserCustomizedFieldBuilder {
  3911  	builder.required = required
  3912  	builder.requiredFlag = true
  3913  	return builder
  3914  }
  3915  
  3916  // 字段创建时间
  3917  //
  3918  // 示例值:1574040677000
  3919  func (builder *UserCustomizedFieldBuilder) CreatedAt(createdAt string) *UserCustomizedFieldBuilder {
  3920  	builder.createdAt = createdAt
  3921  	builder.createdAtFlag = true
  3922  	return builder
  3923  }
  3924  
  3925  // 字段修改时间
  3926  //
  3927  // 示例值:1574040677000
  3928  func (builder *UserCustomizedFieldBuilder) UpdatedAt(updatedAt string) *UserCustomizedFieldBuilder {
  3929  	builder.updatedAt = updatedAt
  3930  	builder.updatedAtFlag = true
  3931  	return builder
  3932  }
  3933  
  3934  func (builder *UserCustomizedFieldBuilder) Build() *UserCustomizedField {
  3935  	req := &UserCustomizedField{}
  3936  	if builder.userCustomizedFieldIdFlag {
  3937  		req.UserCustomizedFieldId = &builder.userCustomizedFieldId
  3938  
  3939  	}
  3940  	if builder.idFlag {
  3941  		req.Id = &builder.id
  3942  
  3943  	}
  3944  	if builder.helpdeskIdFlag {
  3945  		req.HelpdeskId = &builder.helpdeskId
  3946  
  3947  	}
  3948  	if builder.keyNameFlag {
  3949  		req.KeyName = &builder.keyName
  3950  
  3951  	}
  3952  	if builder.displayNameFlag {
  3953  		req.DisplayName = &builder.displayName
  3954  
  3955  	}
  3956  	if builder.positionFlag {
  3957  		req.Position = &builder.position
  3958  
  3959  	}
  3960  	if builder.fieldTypeFlag {
  3961  		req.FieldType = &builder.fieldType
  3962  
  3963  	}
  3964  	if builder.descriptionFlag {
  3965  		req.Description = &builder.description
  3966  
  3967  	}
  3968  	if builder.visibleFlag {
  3969  		req.Visible = &builder.visible
  3970  
  3971  	}
  3972  	if builder.editableFlag {
  3973  		req.Editable = &builder.editable
  3974  
  3975  	}
  3976  	if builder.requiredFlag {
  3977  		req.Required = &builder.required
  3978  
  3979  	}
  3980  	if builder.createdAtFlag {
  3981  		req.CreatedAt = &builder.createdAt
  3982  
  3983  	}
  3984  	if builder.updatedAtFlag {
  3985  		req.UpdatedAt = &builder.updatedAt
  3986  
  3987  	}
  3988  	return req
  3989  }
  3990  
  3991  type UserId struct {
  3992  	UserId  *string `json:"user_id,omitempty"`  //
  3993  	OpenId  *string `json:"open_id,omitempty"`  //
  3994  	UnionId *string `json:"union_id,omitempty"` //
  3995  }
  3996  
  3997  type UserIdBuilder struct {
  3998  	userId      string //
  3999  	userIdFlag  bool
  4000  	openId      string //
  4001  	openIdFlag  bool
  4002  	unionId     string //
  4003  	unionIdFlag bool
  4004  }
  4005  
  4006  func NewUserIdBuilder() *UserIdBuilder {
  4007  	builder := &UserIdBuilder{}
  4008  	return builder
  4009  }
  4010  
  4011  //
  4012  //
  4013  // 示例值:
  4014  func (builder *UserIdBuilder) UserId(userId string) *UserIdBuilder {
  4015  	builder.userId = userId
  4016  	builder.userIdFlag = true
  4017  	return builder
  4018  }
  4019  
  4020  //
  4021  //
  4022  // 示例值:
  4023  func (builder *UserIdBuilder) OpenId(openId string) *UserIdBuilder {
  4024  	builder.openId = openId
  4025  	builder.openIdFlag = true
  4026  	return builder
  4027  }
  4028  
  4029  //
  4030  //
  4031  // 示例值:
  4032  func (builder *UserIdBuilder) UnionId(unionId string) *UserIdBuilder {
  4033  	builder.unionId = unionId
  4034  	builder.unionIdFlag = true
  4035  	return builder
  4036  }
  4037  
  4038  func (builder *UserIdBuilder) Build() *UserId {
  4039  	req := &UserId{}
  4040  	if builder.userIdFlag {
  4041  		req.UserId = &builder.userId
  4042  
  4043  	}
  4044  	if builder.openIdFlag {
  4045  		req.OpenId = &builder.openId
  4046  
  4047  	}
  4048  	if builder.unionIdFlag {
  4049  		req.UnionId = &builder.unionId
  4050  
  4051  	}
  4052  	return req
  4053  }
  4054  
  4055  type UserQueryFaqInfo struct {
  4056  	Id    *string  `json:"id,omitempty"`    // faq服务台内唯一标识
  4057  	Score *float64 `json:"score,omitempty"` // faq匹配得分
  4058  }
  4059  
  4060  type UserQueryFaqInfoBuilder struct {
  4061  	id        string // faq服务台内唯一标识
  4062  	idFlag    bool
  4063  	score     float64 // faq匹配得分
  4064  	scoreFlag bool
  4065  }
  4066  
  4067  func NewUserQueryFaqInfoBuilder() *UserQueryFaqInfoBuilder {
  4068  	builder := &UserQueryFaqInfoBuilder{}
  4069  	return builder
  4070  }
  4071  
  4072  // faq服务台内唯一标识
  4073  //
  4074  // 示例值:12345
  4075  func (builder *UserQueryFaqInfoBuilder) Id(id string) *UserQueryFaqInfoBuilder {
  4076  	builder.id = id
  4077  	builder.idFlag = true
  4078  	return builder
  4079  }
  4080  
  4081  // faq匹配得分
  4082  //
  4083  // 示例值:0.9
  4084  func (builder *UserQueryFaqInfoBuilder) Score(score float64) *UserQueryFaqInfoBuilder {
  4085  	builder.score = score
  4086  	builder.scoreFlag = true
  4087  	return builder
  4088  }
  4089  
  4090  func (builder *UserQueryFaqInfoBuilder) Build() *UserQueryFaqInfo {
  4091  	req := &UserQueryFaqInfo{}
  4092  	if builder.idFlag {
  4093  		req.Id = &builder.id
  4094  
  4095  	}
  4096  	if builder.scoreFlag {
  4097  		req.Score = &builder.score
  4098  
  4099  	}
  4100  	return req
  4101  }
  4102  
  4103  type WeekdaySchedule struct {
  4104  	StartTime *string `json:"start_time,omitempty"` // 开始时间, format 00:00 - 23:59
  4105  	EndTime   *string `json:"end_time,omitempty"`   // 结束时间, format 00:00 - 23:59
  4106  	Weekday   *int    `json:"weekday,omitempty"`    // 星期几, 1 - Monday, 2 - Tuesday, 3 - Wednesday, 4 - Thursday, 5 - Friday, 6 - Saturday, 7 - Sunday, 9 - Everday, 10 - Weekday, 11 - Weekend
  4107  }
  4108  
  4109  type WeekdayScheduleBuilder struct {
  4110  	startTime     string // 开始时间, format 00:00 - 23:59
  4111  	startTimeFlag bool
  4112  	endTime       string // 结束时间, format 00:00 - 23:59
  4113  	endTimeFlag   bool
  4114  	weekday       int // 星期几, 1 - Monday, 2 - Tuesday, 3 - Wednesday, 4 - Thursday, 5 - Friday, 6 - Saturday, 7 - Sunday, 9 - Everday, 10 - Weekday, 11 - Weekend
  4115  	weekdayFlag   bool
  4116  }
  4117  
  4118  func NewWeekdayScheduleBuilder() *WeekdayScheduleBuilder {
  4119  	builder := &WeekdayScheduleBuilder{}
  4120  	return builder
  4121  }
  4122  
  4123  // 开始时间, format 00:00 - 23:59
  4124  //
  4125  // 示例值:00:00
  4126  func (builder *WeekdayScheduleBuilder) StartTime(startTime string) *WeekdayScheduleBuilder {
  4127  	builder.startTime = startTime
  4128  	builder.startTimeFlag = true
  4129  	return builder
  4130  }
  4131  
  4132  // 结束时间, format 00:00 - 23:59
  4133  //
  4134  // 示例值:24:00
  4135  func (builder *WeekdayScheduleBuilder) EndTime(endTime string) *WeekdayScheduleBuilder {
  4136  	builder.endTime = endTime
  4137  	builder.endTimeFlag = true
  4138  	return builder
  4139  }
  4140  
  4141  // 星期几, 1 - Monday, 2 - Tuesday, 3 - Wednesday, 4 - Thursday, 5 - Friday, 6 - Saturday, 7 - Sunday, 9 - Everday, 10 - Weekday, 11 - Weekend
  4142  //
  4143  // 示例值:9
  4144  func (builder *WeekdayScheduleBuilder) Weekday(weekday int) *WeekdayScheduleBuilder {
  4145  	builder.weekday = weekday
  4146  	builder.weekdayFlag = true
  4147  	return builder
  4148  }
  4149  
  4150  func (builder *WeekdayScheduleBuilder) Build() *WeekdaySchedule {
  4151  	req := &WeekdaySchedule{}
  4152  	if builder.startTimeFlag {
  4153  		req.StartTime = &builder.startTime
  4154  
  4155  	}
  4156  	if builder.endTimeFlag {
  4157  		req.EndTime = &builder.endTime
  4158  
  4159  	}
  4160  	if builder.weekdayFlag {
  4161  		req.Weekday = &builder.weekday
  4162  
  4163  	}
  4164  	return req
  4165  }
  4166  
  4167  type AgentEmailAgentRespData struct {
  4168  	Agents *string `json:"agents,omitempty"` // agent emails
  4169  }
  4170  
  4171  type AgentEmailAgentResp struct {
  4172  	*larkcore.ApiResp `json:"-"`
  4173  	larkcore.CodeError
  4174  	Data *AgentEmailAgentRespData `json:"data"` // 业务数据
  4175  }
  4176  
  4177  func (resp *AgentEmailAgentResp) Success() bool {
  4178  	return resp.Code == 0
  4179  }
  4180  
  4181  type PatchAgentReqBodyBuilder struct {
  4182  	status     int // agent status
  4183  	statusFlag bool
  4184  }
  4185  
  4186  func NewPatchAgentReqBodyBuilder() *PatchAgentReqBodyBuilder {
  4187  	builder := &PatchAgentReqBodyBuilder{}
  4188  	return builder
  4189  }
  4190  
  4191  // agent status
  4192  //
  4193  //示例值:1:在线;2:离线
  4194  func (builder *PatchAgentReqBodyBuilder) Status(status int) *PatchAgentReqBodyBuilder {
  4195  	builder.status = status
  4196  	builder.statusFlag = true
  4197  	return builder
  4198  }
  4199  
  4200  func (builder *PatchAgentReqBodyBuilder) Build() *PatchAgentReqBody {
  4201  	req := &PatchAgentReqBody{}
  4202  	if builder.statusFlag {
  4203  		req.Status = &builder.status
  4204  	}
  4205  	return req
  4206  }
  4207  
  4208  type PatchAgentPathReqBodyBuilder struct {
  4209  	status     int // agent status
  4210  	statusFlag bool
  4211  }
  4212  
  4213  func NewPatchAgentPathReqBodyBuilder() *PatchAgentPathReqBodyBuilder {
  4214  	builder := &PatchAgentPathReqBodyBuilder{}
  4215  	return builder
  4216  }
  4217  
  4218  // agent status
  4219  //
  4220  // 示例值:1:在线;2:离线
  4221  func (builder *PatchAgentPathReqBodyBuilder) Status(status int) *PatchAgentPathReqBodyBuilder {
  4222  	builder.status = status
  4223  	builder.statusFlag = true
  4224  	return builder
  4225  }
  4226  
  4227  func (builder *PatchAgentPathReqBodyBuilder) Build() (*PatchAgentReqBody, error) {
  4228  	req := &PatchAgentReqBody{}
  4229  	if builder.statusFlag {
  4230  		req.Status = &builder.status
  4231  	}
  4232  	return req, nil
  4233  }
  4234  
  4235  type PatchAgentReqBuilder struct {
  4236  	apiReq *larkcore.ApiReq
  4237  	body   *PatchAgentReqBody
  4238  }
  4239  
  4240  func NewPatchAgentReqBuilder() *PatchAgentReqBuilder {
  4241  	builder := &PatchAgentReqBuilder{}
  4242  	builder.apiReq = &larkcore.ApiReq{
  4243  		PathParams:  larkcore.PathParams{},
  4244  		QueryParams: larkcore.QueryParams{},
  4245  	}
  4246  	return builder
  4247  }
  4248  
  4249  // 客服id
  4250  //
  4251  // 示例值:ou_14777d82ffef0f707de5a8c7ff2c5ebe
  4252  func (builder *PatchAgentReqBuilder) AgentId(agentId string) *PatchAgentReqBuilder {
  4253  	builder.apiReq.PathParams.Set("agent_id", fmt.Sprint(agentId))
  4254  	return builder
  4255  }
  4256  
  4257  // 更新客服状态等信息
  4258  func (builder *PatchAgentReqBuilder) Body(body *PatchAgentReqBody) *PatchAgentReqBuilder {
  4259  	builder.body = body
  4260  	return builder
  4261  }
  4262  
  4263  func (builder *PatchAgentReqBuilder) Build() *PatchAgentReq {
  4264  	req := &PatchAgentReq{}
  4265  	req.apiReq = &larkcore.ApiReq{}
  4266  	req.apiReq.PathParams = builder.apiReq.PathParams
  4267  	req.apiReq.Body = builder.body
  4268  	return req
  4269  }
  4270  
  4271  type PatchAgentReqBody struct {
  4272  	Status *int `json:"status,omitempty"` // agent status
  4273  }
  4274  
  4275  type PatchAgentReq struct {
  4276  	apiReq *larkcore.ApiReq
  4277  	Body   *PatchAgentReqBody `body:""`
  4278  }
  4279  
  4280  type PatchAgentResp struct {
  4281  	*larkcore.ApiResp `json:"-"`
  4282  	larkcore.CodeError
  4283  }
  4284  
  4285  func (resp *PatchAgentResp) Success() bool {
  4286  	return resp.Code == 0
  4287  }
  4288  
  4289  type DeleteAgentSchedulesReqBuilder struct {
  4290  	apiReq *larkcore.ApiReq
  4291  }
  4292  
  4293  func NewDeleteAgentSchedulesReqBuilder() *DeleteAgentSchedulesReqBuilder {
  4294  	builder := &DeleteAgentSchedulesReqBuilder{}
  4295  	builder.apiReq = &larkcore.ApiReq{
  4296  		PathParams:  larkcore.PathParams{},
  4297  		QueryParams: larkcore.QueryParams{},
  4298  	}
  4299  	return builder
  4300  }
  4301  
  4302  // agent user id
  4303  //
  4304  // 示例值:12345
  4305  func (builder *DeleteAgentSchedulesReqBuilder) AgentId(agentId string) *DeleteAgentSchedulesReqBuilder {
  4306  	builder.apiReq.PathParams.Set("agent_id", fmt.Sprint(agentId))
  4307  	return builder
  4308  }
  4309  
  4310  func (builder *DeleteAgentSchedulesReqBuilder) Build() *DeleteAgentSchedulesReq {
  4311  	req := &DeleteAgentSchedulesReq{}
  4312  	req.apiReq = &larkcore.ApiReq{}
  4313  	req.apiReq.PathParams = builder.apiReq.PathParams
  4314  	return req
  4315  }
  4316  
  4317  type DeleteAgentSchedulesReq struct {
  4318  	apiReq *larkcore.ApiReq
  4319  }
  4320  
  4321  type DeleteAgentSchedulesResp struct {
  4322  	*larkcore.ApiResp `json:"-"`
  4323  	larkcore.CodeError
  4324  }
  4325  
  4326  func (resp *DeleteAgentSchedulesResp) Success() bool {
  4327  	return resp.Code == 0
  4328  }
  4329  
  4330  type GetAgentSchedulesReqBuilder struct {
  4331  	apiReq *larkcore.ApiReq
  4332  }
  4333  
  4334  func NewGetAgentSchedulesReqBuilder() *GetAgentSchedulesReqBuilder {
  4335  	builder := &GetAgentSchedulesReqBuilder{}
  4336  	builder.apiReq = &larkcore.ApiReq{
  4337  		PathParams:  larkcore.PathParams{},
  4338  		QueryParams: larkcore.QueryParams{},
  4339  	}
  4340  	return builder
  4341  }
  4342  
  4343  // 	客服 id
  4344  //
  4345  // 示例值:	客服 id
  4346  func (builder *GetAgentSchedulesReqBuilder) AgentId(agentId string) *GetAgentSchedulesReqBuilder {
  4347  	builder.apiReq.PathParams.Set("agent_id", fmt.Sprint(agentId))
  4348  	return builder
  4349  }
  4350  
  4351  func (builder *GetAgentSchedulesReqBuilder) Build() *GetAgentSchedulesReq {
  4352  	req := &GetAgentSchedulesReq{}
  4353  	req.apiReq = &larkcore.ApiReq{}
  4354  	req.apiReq.PathParams = builder.apiReq.PathParams
  4355  	return req
  4356  }
  4357  
  4358  type GetAgentSchedulesReq struct {
  4359  	apiReq *larkcore.ApiReq
  4360  }
  4361  
  4362  type GetAgentSchedulesRespData struct {
  4363  	AgentSchedule *AgentSchedule `json:"agent_schedule,omitempty"` // 客服日程
  4364  }
  4365  
  4366  type GetAgentSchedulesResp struct {
  4367  	*larkcore.ApiResp `json:"-"`
  4368  	larkcore.CodeError
  4369  	Data *GetAgentSchedulesRespData `json:"data"` // 业务数据
  4370  }
  4371  
  4372  func (resp *GetAgentSchedulesResp) Success() bool {
  4373  	return resp.Code == 0
  4374  }
  4375  
  4376  type PatchAgentSchedulesReqBodyBuilder struct {
  4377  	agentSchedule     *AgentScheduleUpdateInfo // 工作日程列表
  4378  	agentScheduleFlag bool
  4379  }
  4380  
  4381  func NewPatchAgentSchedulesReqBodyBuilder() *PatchAgentSchedulesReqBodyBuilder {
  4382  	builder := &PatchAgentSchedulesReqBodyBuilder{}
  4383  	return builder
  4384  }
  4385  
  4386  // 工作日程列表
  4387  //
  4388  //示例值:
  4389  func (builder *PatchAgentSchedulesReqBodyBuilder) AgentSchedule(agentSchedule *AgentScheduleUpdateInfo) *PatchAgentSchedulesReqBodyBuilder {
  4390  	builder.agentSchedule = agentSchedule
  4391  	builder.agentScheduleFlag = true
  4392  	return builder
  4393  }
  4394  
  4395  func (builder *PatchAgentSchedulesReqBodyBuilder) Build() *PatchAgentSchedulesReqBody {
  4396  	req := &PatchAgentSchedulesReqBody{}
  4397  	if builder.agentScheduleFlag {
  4398  		req.AgentSchedule = builder.agentSchedule
  4399  	}
  4400  	return req
  4401  }
  4402  
  4403  type PatchAgentSchedulesPathReqBodyBuilder struct {
  4404  	agentSchedule     *AgentScheduleUpdateInfo // 工作日程列表
  4405  	agentScheduleFlag bool
  4406  }
  4407  
  4408  func NewPatchAgentSchedulesPathReqBodyBuilder() *PatchAgentSchedulesPathReqBodyBuilder {
  4409  	builder := &PatchAgentSchedulesPathReqBodyBuilder{}
  4410  	return builder
  4411  }
  4412  
  4413  // 工作日程列表
  4414  //
  4415  // 示例值:
  4416  func (builder *PatchAgentSchedulesPathReqBodyBuilder) AgentSchedule(agentSchedule *AgentScheduleUpdateInfo) *PatchAgentSchedulesPathReqBodyBuilder {
  4417  	builder.agentSchedule = agentSchedule
  4418  	builder.agentScheduleFlag = true
  4419  	return builder
  4420  }
  4421  
  4422  func (builder *PatchAgentSchedulesPathReqBodyBuilder) Build() (*PatchAgentSchedulesReqBody, error) {
  4423  	req := &PatchAgentSchedulesReqBody{}
  4424  	if builder.agentScheduleFlag {
  4425  		req.AgentSchedule = builder.agentSchedule
  4426  	}
  4427  	return req, nil
  4428  }
  4429  
  4430  type PatchAgentSchedulesReqBuilder struct {
  4431  	apiReq *larkcore.ApiReq
  4432  	body   *PatchAgentSchedulesReqBody
  4433  }
  4434  
  4435  func NewPatchAgentSchedulesReqBuilder() *PatchAgentSchedulesReqBuilder {
  4436  	builder := &PatchAgentSchedulesReqBuilder{}
  4437  	builder.apiReq = &larkcore.ApiReq{
  4438  		PathParams:  larkcore.PathParams{},
  4439  		QueryParams: larkcore.QueryParams{},
  4440  	}
  4441  	return builder
  4442  }
  4443  
  4444  // 客服 id
  4445  //
  4446  // 示例值:123456
  4447  func (builder *PatchAgentSchedulesReqBuilder) AgentId(agentId string) *PatchAgentSchedulesReqBuilder {
  4448  	builder.apiReq.PathParams.Set("agent_id", fmt.Sprint(agentId))
  4449  	return builder
  4450  }
  4451  
  4452  // 该接口用于更新客服的日程
  4453  func (builder *PatchAgentSchedulesReqBuilder) Body(body *PatchAgentSchedulesReqBody) *PatchAgentSchedulesReqBuilder {
  4454  	builder.body = body
  4455  	return builder
  4456  }
  4457  
  4458  func (builder *PatchAgentSchedulesReqBuilder) Build() *PatchAgentSchedulesReq {
  4459  	req := &PatchAgentSchedulesReq{}
  4460  	req.apiReq = &larkcore.ApiReq{}
  4461  	req.apiReq.PathParams = builder.apiReq.PathParams
  4462  	req.apiReq.Body = builder.body
  4463  	return req
  4464  }
  4465  
  4466  type PatchAgentSchedulesReqBody struct {
  4467  	AgentSchedule *AgentScheduleUpdateInfo `json:"agent_schedule,omitempty"` // 工作日程列表
  4468  }
  4469  
  4470  type PatchAgentSchedulesReq struct {
  4471  	apiReq *larkcore.ApiReq
  4472  	Body   *PatchAgentSchedulesReqBody `body:""`
  4473  }
  4474  
  4475  type PatchAgentSchedulesResp struct {
  4476  	*larkcore.ApiResp `json:"-"`
  4477  	larkcore.CodeError
  4478  }
  4479  
  4480  func (resp *PatchAgentSchedulesResp) Success() bool {
  4481  	return resp.Code == 0
  4482  }
  4483  
  4484  type CreateAgentScheduleReqBodyBuilder struct {
  4485  	agentSchedules     []*AgentScheduleUpdateInfo // 新客服日程
  4486  	agentSchedulesFlag bool
  4487  }
  4488  
  4489  func NewCreateAgentScheduleReqBodyBuilder() *CreateAgentScheduleReqBodyBuilder {
  4490  	builder := &CreateAgentScheduleReqBodyBuilder{}
  4491  	return builder
  4492  }
  4493  
  4494  // 新客服日程
  4495  //
  4496  //示例值:
  4497  func (builder *CreateAgentScheduleReqBodyBuilder) AgentSchedules(agentSchedules []*AgentScheduleUpdateInfo) *CreateAgentScheduleReqBodyBuilder {
  4498  	builder.agentSchedules = agentSchedules
  4499  	builder.agentSchedulesFlag = true
  4500  	return builder
  4501  }
  4502  
  4503  func (builder *CreateAgentScheduleReqBodyBuilder) Build() *CreateAgentScheduleReqBody {
  4504  	req := &CreateAgentScheduleReqBody{}
  4505  	if builder.agentSchedulesFlag {
  4506  		req.AgentSchedules = builder.agentSchedules
  4507  	}
  4508  	return req
  4509  }
  4510  
  4511  type CreateAgentSchedulePathReqBodyBuilder struct {
  4512  	agentSchedules     []*AgentScheduleUpdateInfo // 新客服日程
  4513  	agentSchedulesFlag bool
  4514  }
  4515  
  4516  func NewCreateAgentSchedulePathReqBodyBuilder() *CreateAgentSchedulePathReqBodyBuilder {
  4517  	builder := &CreateAgentSchedulePathReqBodyBuilder{}
  4518  	return builder
  4519  }
  4520  
  4521  // 新客服日程
  4522  //
  4523  // 示例值:
  4524  func (builder *CreateAgentSchedulePathReqBodyBuilder) AgentSchedules(agentSchedules []*AgentScheduleUpdateInfo) *CreateAgentSchedulePathReqBodyBuilder {
  4525  	builder.agentSchedules = agentSchedules
  4526  	builder.agentSchedulesFlag = true
  4527  	return builder
  4528  }
  4529  
  4530  func (builder *CreateAgentSchedulePathReqBodyBuilder) Build() (*CreateAgentScheduleReqBody, error) {
  4531  	req := &CreateAgentScheduleReqBody{}
  4532  	if builder.agentSchedulesFlag {
  4533  		req.AgentSchedules = builder.agentSchedules
  4534  	}
  4535  	return req, nil
  4536  }
  4537  
  4538  type CreateAgentScheduleReqBuilder struct {
  4539  	apiReq *larkcore.ApiReq
  4540  	body   *CreateAgentScheduleReqBody
  4541  }
  4542  
  4543  func NewCreateAgentScheduleReqBuilder() *CreateAgentScheduleReqBuilder {
  4544  	builder := &CreateAgentScheduleReqBuilder{}
  4545  	builder.apiReq = &larkcore.ApiReq{
  4546  		PathParams:  larkcore.PathParams{},
  4547  		QueryParams: larkcore.QueryParams{},
  4548  	}
  4549  	return builder
  4550  }
  4551  
  4552  // 该接口用于创建客服
  4553  func (builder *CreateAgentScheduleReqBuilder) Body(body *CreateAgentScheduleReqBody) *CreateAgentScheduleReqBuilder {
  4554  	builder.body = body
  4555  	return builder
  4556  }
  4557  
  4558  func (builder *CreateAgentScheduleReqBuilder) Build() *CreateAgentScheduleReq {
  4559  	req := &CreateAgentScheduleReq{}
  4560  	req.apiReq = &larkcore.ApiReq{}
  4561  	req.apiReq.Body = builder.body
  4562  	return req
  4563  }
  4564  
  4565  type CreateAgentScheduleReqBody struct {
  4566  	AgentSchedules []*AgentScheduleUpdateInfo `json:"agent_schedules,omitempty"` // 新客服日程
  4567  }
  4568  
  4569  type CreateAgentScheduleReq struct {
  4570  	apiReq *larkcore.ApiReq
  4571  	Body   *CreateAgentScheduleReqBody `body:""`
  4572  }
  4573  
  4574  type CreateAgentScheduleResp struct {
  4575  	*larkcore.ApiResp `json:"-"`
  4576  	larkcore.CodeError
  4577  }
  4578  
  4579  func (resp *CreateAgentScheduleResp) Success() bool {
  4580  	return resp.Code == 0
  4581  }
  4582  
  4583  type ListAgentScheduleReqBuilder struct {
  4584  	apiReq *larkcore.ApiReq
  4585  }
  4586  
  4587  func NewListAgentScheduleReqBuilder() *ListAgentScheduleReqBuilder {
  4588  	builder := &ListAgentScheduleReqBuilder{}
  4589  	builder.apiReq = &larkcore.ApiReq{
  4590  		PathParams:  larkcore.PathParams{},
  4591  		QueryParams: larkcore.QueryParams{},
  4592  	}
  4593  	return builder
  4594  }
  4595  
  4596  // 筛选条件, 1 - online客服, 2 - offline(手动)客服, 3 - off duty(下班)客服, 4 - 移除客服
  4597  //
  4598  // 示例值:status=1&status=2
  4599  func (builder *ListAgentScheduleReqBuilder) Status(status []int) *ListAgentScheduleReqBuilder {
  4600  	builder.apiReq.QueryParams.Set("status", fmt.Sprint(status))
  4601  	return builder
  4602  }
  4603  
  4604  func (builder *ListAgentScheduleReqBuilder) Build() *ListAgentScheduleReq {
  4605  	req := &ListAgentScheduleReq{}
  4606  	req.apiReq = &larkcore.ApiReq{}
  4607  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  4608  	return req
  4609  }
  4610  
  4611  type ListAgentScheduleReq struct {
  4612  	apiReq *larkcore.ApiReq
  4613  }
  4614  
  4615  type ListAgentScheduleRespData struct {
  4616  	AgentSchedules []*AgentSchedule `json:"agent_schedules,omitempty"` // 客服列表
  4617  }
  4618  
  4619  type ListAgentScheduleResp struct {
  4620  	*larkcore.ApiResp `json:"-"`
  4621  	larkcore.CodeError
  4622  	Data *ListAgentScheduleRespData `json:"data"` // 业务数据
  4623  }
  4624  
  4625  func (resp *ListAgentScheduleResp) Success() bool {
  4626  	return resp.Code == 0
  4627  }
  4628  
  4629  type CreateAgentSkillReqBodyBuilder struct {
  4630  	name         string // 技能名
  4631  	nameFlag     bool
  4632  	rules        []*AgentSkillRule // 技能rules
  4633  	rulesFlag    bool
  4634  	agentIds     []string // 客服 ids
  4635  	agentIdsFlag bool
  4636  }
  4637  
  4638  func NewCreateAgentSkillReqBodyBuilder() *CreateAgentSkillReqBodyBuilder {
  4639  	builder := &CreateAgentSkillReqBodyBuilder{}
  4640  	return builder
  4641  }
  4642  
  4643  // 技能名
  4644  //
  4645  //示例值:test-skill
  4646  func (builder *CreateAgentSkillReqBodyBuilder) Name(name string) *CreateAgentSkillReqBodyBuilder {
  4647  	builder.name = name
  4648  	builder.nameFlag = true
  4649  	return builder
  4650  }
  4651  
  4652  // 技能rules
  4653  //
  4654  //示例值:
  4655  func (builder *CreateAgentSkillReqBodyBuilder) Rules(rules []*AgentSkillRule) *CreateAgentSkillReqBodyBuilder {
  4656  	builder.rules = rules
  4657  	builder.rulesFlag = true
  4658  	return builder
  4659  }
  4660  
  4661  // 客服 ids
  4662  //
  4663  //示例值:["客服ID"]
  4664  func (builder *CreateAgentSkillReqBodyBuilder) AgentIds(agentIds []string) *CreateAgentSkillReqBodyBuilder {
  4665  	builder.agentIds = agentIds
  4666  	builder.agentIdsFlag = true
  4667  	return builder
  4668  }
  4669  
  4670  func (builder *CreateAgentSkillReqBodyBuilder) Build() *CreateAgentSkillReqBody {
  4671  	req := &CreateAgentSkillReqBody{}
  4672  	if builder.nameFlag {
  4673  		req.Name = &builder.name
  4674  	}
  4675  	if builder.rulesFlag {
  4676  		req.Rules = builder.rules
  4677  	}
  4678  	if builder.agentIdsFlag {
  4679  		req.AgentIds = builder.agentIds
  4680  	}
  4681  	return req
  4682  }
  4683  
  4684  type CreateAgentSkillPathReqBodyBuilder struct {
  4685  	name         string // 技能名
  4686  	nameFlag     bool
  4687  	rules        []*AgentSkillRule // 技能rules
  4688  	rulesFlag    bool
  4689  	agentIds     []string // 客服 ids
  4690  	agentIdsFlag bool
  4691  }
  4692  
  4693  func NewCreateAgentSkillPathReqBodyBuilder() *CreateAgentSkillPathReqBodyBuilder {
  4694  	builder := &CreateAgentSkillPathReqBodyBuilder{}
  4695  	return builder
  4696  }
  4697  
  4698  // 技能名
  4699  //
  4700  // 示例值:test-skill
  4701  func (builder *CreateAgentSkillPathReqBodyBuilder) Name(name string) *CreateAgentSkillPathReqBodyBuilder {
  4702  	builder.name = name
  4703  	builder.nameFlag = true
  4704  	return builder
  4705  }
  4706  
  4707  // 技能rules
  4708  //
  4709  // 示例值:
  4710  func (builder *CreateAgentSkillPathReqBodyBuilder) Rules(rules []*AgentSkillRule) *CreateAgentSkillPathReqBodyBuilder {
  4711  	builder.rules = rules
  4712  	builder.rulesFlag = true
  4713  	return builder
  4714  }
  4715  
  4716  // 客服 ids
  4717  //
  4718  // 示例值:["客服ID"]
  4719  func (builder *CreateAgentSkillPathReqBodyBuilder) AgentIds(agentIds []string) *CreateAgentSkillPathReqBodyBuilder {
  4720  	builder.agentIds = agentIds
  4721  	builder.agentIdsFlag = true
  4722  	return builder
  4723  }
  4724  
  4725  func (builder *CreateAgentSkillPathReqBodyBuilder) Build() (*CreateAgentSkillReqBody, error) {
  4726  	req := &CreateAgentSkillReqBody{}
  4727  	if builder.nameFlag {
  4728  		req.Name = &builder.name
  4729  	}
  4730  	if builder.rulesFlag {
  4731  		req.Rules = builder.rules
  4732  	}
  4733  	if builder.agentIdsFlag {
  4734  		req.AgentIds = builder.agentIds
  4735  	}
  4736  	return req, nil
  4737  }
  4738  
  4739  type CreateAgentSkillReqBuilder struct {
  4740  	apiReq *larkcore.ApiReq
  4741  	body   *CreateAgentSkillReqBody
  4742  }
  4743  
  4744  func NewCreateAgentSkillReqBuilder() *CreateAgentSkillReqBuilder {
  4745  	builder := &CreateAgentSkillReqBuilder{}
  4746  	builder.apiReq = &larkcore.ApiReq{
  4747  		PathParams:  larkcore.PathParams{},
  4748  		QueryParams: larkcore.QueryParams{},
  4749  	}
  4750  	return builder
  4751  }
  4752  
  4753  // 该接口用于创建客服技能
  4754  func (builder *CreateAgentSkillReqBuilder) Body(body *CreateAgentSkillReqBody) *CreateAgentSkillReqBuilder {
  4755  	builder.body = body
  4756  	return builder
  4757  }
  4758  
  4759  func (builder *CreateAgentSkillReqBuilder) Build() *CreateAgentSkillReq {
  4760  	req := &CreateAgentSkillReq{}
  4761  	req.apiReq = &larkcore.ApiReq{}
  4762  	req.apiReq.Body = builder.body
  4763  	return req
  4764  }
  4765  
  4766  type CreateAgentSkillReqBody struct {
  4767  	Name     *string           `json:"name,omitempty"`      // 技能名
  4768  	Rules    []*AgentSkillRule `json:"rules,omitempty"`     // 技能rules
  4769  	AgentIds []string          `json:"agent_ids,omitempty"` // 客服 ids
  4770  }
  4771  
  4772  type CreateAgentSkillReq struct {
  4773  	apiReq *larkcore.ApiReq
  4774  	Body   *CreateAgentSkillReqBody `body:""`
  4775  }
  4776  
  4777  type CreateAgentSkillRespData struct {
  4778  	AgentSkillId *string `json:"agent_skill_id,omitempty"` // 客服技能id
  4779  }
  4780  
  4781  type CreateAgentSkillResp struct {
  4782  	*larkcore.ApiResp `json:"-"`
  4783  	larkcore.CodeError
  4784  	Data *CreateAgentSkillRespData `json:"data"` // 业务数据
  4785  }
  4786  
  4787  func (resp *CreateAgentSkillResp) Success() bool {
  4788  	return resp.Code == 0
  4789  }
  4790  
  4791  type DeleteAgentSkillReqBuilder struct {
  4792  	apiReq *larkcore.ApiReq
  4793  }
  4794  
  4795  func NewDeleteAgentSkillReqBuilder() *DeleteAgentSkillReqBuilder {
  4796  	builder := &DeleteAgentSkillReqBuilder{}
  4797  	builder.apiReq = &larkcore.ApiReq{
  4798  		PathParams:  larkcore.PathParams{},
  4799  		QueryParams: larkcore.QueryParams{},
  4800  	}
  4801  	return builder
  4802  }
  4803  
  4804  // agent group id
  4805  //
  4806  // 示例值:test-skill-id
  4807  func (builder *DeleteAgentSkillReqBuilder) AgentSkillId(agentSkillId string) *DeleteAgentSkillReqBuilder {
  4808  	builder.apiReq.PathParams.Set("agent_skill_id", fmt.Sprint(agentSkillId))
  4809  	return builder
  4810  }
  4811  
  4812  func (builder *DeleteAgentSkillReqBuilder) Build() *DeleteAgentSkillReq {
  4813  	req := &DeleteAgentSkillReq{}
  4814  	req.apiReq = &larkcore.ApiReq{}
  4815  	req.apiReq.PathParams = builder.apiReq.PathParams
  4816  	return req
  4817  }
  4818  
  4819  type DeleteAgentSkillReq struct {
  4820  	apiReq *larkcore.ApiReq
  4821  }
  4822  
  4823  type DeleteAgentSkillResp struct {
  4824  	*larkcore.ApiResp `json:"-"`
  4825  	larkcore.CodeError
  4826  }
  4827  
  4828  func (resp *DeleteAgentSkillResp) Success() bool {
  4829  	return resp.Code == 0
  4830  }
  4831  
  4832  type GetAgentSkillReqBuilder struct {
  4833  	apiReq *larkcore.ApiReq
  4834  }
  4835  
  4836  func NewGetAgentSkillReqBuilder() *GetAgentSkillReqBuilder {
  4837  	builder := &GetAgentSkillReqBuilder{}
  4838  	builder.apiReq = &larkcore.ApiReq{
  4839  		PathParams:  larkcore.PathParams{},
  4840  		QueryParams: larkcore.QueryParams{},
  4841  	}
  4842  	return builder
  4843  }
  4844  
  4845  // agent skill id
  4846  //
  4847  // 示例值:6941215891786825756
  4848  func (builder *GetAgentSkillReqBuilder) AgentSkillId(agentSkillId string) *GetAgentSkillReqBuilder {
  4849  	builder.apiReq.PathParams.Set("agent_skill_id", fmt.Sprint(agentSkillId))
  4850  	return builder
  4851  }
  4852  
  4853  func (builder *GetAgentSkillReqBuilder) Build() *GetAgentSkillReq {
  4854  	req := &GetAgentSkillReq{}
  4855  	req.apiReq = &larkcore.ApiReq{}
  4856  	req.apiReq.PathParams = builder.apiReq.PathParams
  4857  	return req
  4858  }
  4859  
  4860  type GetAgentSkillReq struct {
  4861  	apiReq *larkcore.ApiReq
  4862  }
  4863  
  4864  type GetAgentSkillRespData struct {
  4865  	AgentSkill *AgentSkill `json:"agent_skill,omitempty"` // 技能
  4866  }
  4867  
  4868  type GetAgentSkillResp struct {
  4869  	*larkcore.ApiResp `json:"-"`
  4870  	larkcore.CodeError
  4871  	Data *GetAgentSkillRespData `json:"data"` // 业务数据
  4872  }
  4873  
  4874  func (resp *GetAgentSkillResp) Success() bool {
  4875  	return resp.Code == 0
  4876  }
  4877  
  4878  type ListAgentSkillRespData struct {
  4879  	AgentSkills []*AgentSkill `json:"agent_skills,omitempty"` // 客服技能列表
  4880  }
  4881  
  4882  type ListAgentSkillResp struct {
  4883  	*larkcore.ApiResp `json:"-"`
  4884  	larkcore.CodeError
  4885  	Data *ListAgentSkillRespData `json:"data"` // 业务数据
  4886  }
  4887  
  4888  func (resp *ListAgentSkillResp) Success() bool {
  4889  	return resp.Code == 0
  4890  }
  4891  
  4892  type PatchAgentSkillReqBodyBuilder struct {
  4893  	agentSkill     *AgentSkill // 更新技能
  4894  	agentSkillFlag bool
  4895  }
  4896  
  4897  func NewPatchAgentSkillReqBodyBuilder() *PatchAgentSkillReqBodyBuilder {
  4898  	builder := &PatchAgentSkillReqBodyBuilder{}
  4899  	return builder
  4900  }
  4901  
  4902  // 更新技能
  4903  //
  4904  //示例值:
  4905  func (builder *PatchAgentSkillReqBodyBuilder) AgentSkill(agentSkill *AgentSkill) *PatchAgentSkillReqBodyBuilder {
  4906  	builder.agentSkill = agentSkill
  4907  	builder.agentSkillFlag = true
  4908  	return builder
  4909  }
  4910  
  4911  func (builder *PatchAgentSkillReqBodyBuilder) Build() *PatchAgentSkillReqBody {
  4912  	req := &PatchAgentSkillReqBody{}
  4913  	if builder.agentSkillFlag {
  4914  		req.AgentSkill = builder.agentSkill
  4915  	}
  4916  	return req
  4917  }
  4918  
  4919  type PatchAgentSkillPathReqBodyBuilder struct {
  4920  	agentSkill     *AgentSkill // 更新技能
  4921  	agentSkillFlag bool
  4922  }
  4923  
  4924  func NewPatchAgentSkillPathReqBodyBuilder() *PatchAgentSkillPathReqBodyBuilder {
  4925  	builder := &PatchAgentSkillPathReqBodyBuilder{}
  4926  	return builder
  4927  }
  4928  
  4929  // 更新技能
  4930  //
  4931  // 示例值:
  4932  func (builder *PatchAgentSkillPathReqBodyBuilder) AgentSkill(agentSkill *AgentSkill) *PatchAgentSkillPathReqBodyBuilder {
  4933  	builder.agentSkill = agentSkill
  4934  	builder.agentSkillFlag = true
  4935  	return builder
  4936  }
  4937  
  4938  func (builder *PatchAgentSkillPathReqBodyBuilder) Build() (*PatchAgentSkillReqBody, error) {
  4939  	req := &PatchAgentSkillReqBody{}
  4940  	if builder.agentSkillFlag {
  4941  		req.AgentSkill = builder.agentSkill
  4942  	}
  4943  	return req, nil
  4944  }
  4945  
  4946  type PatchAgentSkillReqBuilder struct {
  4947  	apiReq *larkcore.ApiReq
  4948  	body   *PatchAgentSkillReqBody
  4949  }
  4950  
  4951  func NewPatchAgentSkillReqBuilder() *PatchAgentSkillReqBuilder {
  4952  	builder := &PatchAgentSkillReqBuilder{}
  4953  	builder.apiReq = &larkcore.ApiReq{
  4954  		PathParams:  larkcore.PathParams{},
  4955  		QueryParams: larkcore.QueryParams{},
  4956  	}
  4957  	return builder
  4958  }
  4959  
  4960  // agent skill id
  4961  //
  4962  // 示例值:test-skill-id
  4963  func (builder *PatchAgentSkillReqBuilder) AgentSkillId(agentSkillId string) *PatchAgentSkillReqBuilder {
  4964  	builder.apiReq.PathParams.Set("agent_skill_id", fmt.Sprint(agentSkillId))
  4965  	return builder
  4966  }
  4967  
  4968  // 该接口用于更新客服技能
  4969  func (builder *PatchAgentSkillReqBuilder) Body(body *PatchAgentSkillReqBody) *PatchAgentSkillReqBuilder {
  4970  	builder.body = body
  4971  	return builder
  4972  }
  4973  
  4974  func (builder *PatchAgentSkillReqBuilder) Build() *PatchAgentSkillReq {
  4975  	req := &PatchAgentSkillReq{}
  4976  	req.apiReq = &larkcore.ApiReq{}
  4977  	req.apiReq.PathParams = builder.apiReq.PathParams
  4978  	req.apiReq.Body = builder.body
  4979  	return req
  4980  }
  4981  
  4982  type PatchAgentSkillReqBody struct {
  4983  	AgentSkill *AgentSkill `json:"agent_skill,omitempty"` // 更新技能
  4984  }
  4985  
  4986  type PatchAgentSkillReq struct {
  4987  	apiReq *larkcore.ApiReq
  4988  	Body   *PatchAgentSkillReqBody `body:""`
  4989  }
  4990  
  4991  type PatchAgentSkillResp struct {
  4992  	*larkcore.ApiResp `json:"-"`
  4993  	larkcore.CodeError
  4994  }
  4995  
  4996  func (resp *PatchAgentSkillResp) Success() bool {
  4997  	return resp.Code == 0
  4998  }
  4999  
  5000  type ListAgentSkillRuleRespData struct {
  5001  	Rules []*AgentSkillRule `json:"rules,omitempty"` // rules列表
  5002  }
  5003  
  5004  type ListAgentSkillRuleResp struct {
  5005  	*larkcore.ApiResp `json:"-"`
  5006  	larkcore.CodeError
  5007  	Data *ListAgentSkillRuleRespData `json:"data"` // 业务数据
  5008  }
  5009  
  5010  func (resp *ListAgentSkillRuleResp) Success() bool {
  5011  	return resp.Code == 0
  5012  }
  5013  
  5014  type CreateBotMessageReqBuilder struct {
  5015  	apiReq     *larkcore.ApiReq
  5016  	botMessage *BotMessage
  5017  }
  5018  
  5019  func NewCreateBotMessageReqBuilder() *CreateBotMessageReqBuilder {
  5020  	builder := &CreateBotMessageReqBuilder{}
  5021  	builder.apiReq = &larkcore.ApiReq{
  5022  		PathParams:  larkcore.PathParams{},
  5023  		QueryParams: larkcore.QueryParams{},
  5024  	}
  5025  	return builder
  5026  }
  5027  
  5028  // 此次调用中使用的用户ID的类型
  5029  //
  5030  // 示例值:
  5031  func (builder *CreateBotMessageReqBuilder) UserIdType(userIdType string) *CreateBotMessageReqBuilder {
  5032  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  5033  	return builder
  5034  }
  5035  
  5036  // 通过服务台机器人给指定用户的服务台专属群或私聊发送消息,支持文本、富文本、卡片、图片。
  5037  func (builder *CreateBotMessageReqBuilder) BotMessage(botMessage *BotMessage) *CreateBotMessageReqBuilder {
  5038  	builder.botMessage = botMessage
  5039  	return builder
  5040  }
  5041  
  5042  func (builder *CreateBotMessageReqBuilder) Build() *CreateBotMessageReq {
  5043  	req := &CreateBotMessageReq{}
  5044  	req.apiReq = &larkcore.ApiReq{}
  5045  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  5046  	req.apiReq.Body = builder.botMessage
  5047  	return req
  5048  }
  5049  
  5050  type CreateBotMessageReq struct {
  5051  	apiReq     *larkcore.ApiReq
  5052  	BotMessage *BotMessage `body:""`
  5053  }
  5054  
  5055  type CreateBotMessageRespData struct {
  5056  	MessageId *string `json:"message_id,omitempty"` // chat消息open_id
  5057  }
  5058  
  5059  type CreateBotMessageResp struct {
  5060  	*larkcore.ApiResp `json:"-"`
  5061  	larkcore.CodeError
  5062  	Data *CreateBotMessageRespData `json:"data"` // 业务数据
  5063  }
  5064  
  5065  func (resp *CreateBotMessageResp) Success() bool {
  5066  	return resp.Code == 0
  5067  }
  5068  
  5069  type CreateCategoryReqBuilder struct {
  5070  	apiReq   *larkcore.ApiReq
  5071  	category *Category
  5072  }
  5073  
  5074  func NewCreateCategoryReqBuilder() *CreateCategoryReqBuilder {
  5075  	builder := &CreateCategoryReqBuilder{}
  5076  	builder.apiReq = &larkcore.ApiReq{
  5077  		PathParams:  larkcore.PathParams{},
  5078  		QueryParams: larkcore.QueryParams{},
  5079  	}
  5080  	return builder
  5081  }
  5082  
  5083  // 该接口用于创建知识库分类。
  5084  func (builder *CreateCategoryReqBuilder) Category(category *Category) *CreateCategoryReqBuilder {
  5085  	builder.category = category
  5086  	return builder
  5087  }
  5088  
  5089  func (builder *CreateCategoryReqBuilder) Build() *CreateCategoryReq {
  5090  	req := &CreateCategoryReq{}
  5091  	req.apiReq = &larkcore.ApiReq{}
  5092  	req.apiReq.Body = builder.category
  5093  	return req
  5094  }
  5095  
  5096  type CreateCategoryReq struct {
  5097  	apiReq   *larkcore.ApiReq
  5098  	Category *Category `body:""`
  5099  }
  5100  
  5101  type CreateCategoryRespData struct {
  5102  	Category *Category `json:"category,omitempty"` // 知识库分类
  5103  }
  5104  
  5105  type CreateCategoryResp struct {
  5106  	*larkcore.ApiResp `json:"-"`
  5107  	larkcore.CodeError
  5108  	Data *CreateCategoryRespData `json:"data"` // 业务数据
  5109  }
  5110  
  5111  func (resp *CreateCategoryResp) Success() bool {
  5112  	return resp.Code == 0
  5113  }
  5114  
  5115  type DeleteCategoryReqBuilder struct {
  5116  	apiReq *larkcore.ApiReq
  5117  }
  5118  
  5119  func NewDeleteCategoryReqBuilder() *DeleteCategoryReqBuilder {
  5120  	builder := &DeleteCategoryReqBuilder{}
  5121  	builder.apiReq = &larkcore.ApiReq{
  5122  		PathParams:  larkcore.PathParams{},
  5123  		QueryParams: larkcore.QueryParams{},
  5124  	}
  5125  	return builder
  5126  }
  5127  
  5128  // 知识库分类ID
  5129  //
  5130  // 示例值:6948728206392295444
  5131  func (builder *DeleteCategoryReqBuilder) Id(id string) *DeleteCategoryReqBuilder {
  5132  	builder.apiReq.PathParams.Set("id", fmt.Sprint(id))
  5133  	return builder
  5134  }
  5135  
  5136  func (builder *DeleteCategoryReqBuilder) Build() *DeleteCategoryReq {
  5137  	req := &DeleteCategoryReq{}
  5138  	req.apiReq = &larkcore.ApiReq{}
  5139  	req.apiReq.PathParams = builder.apiReq.PathParams
  5140  	return req
  5141  }
  5142  
  5143  type DeleteCategoryReq struct {
  5144  	apiReq *larkcore.ApiReq
  5145  }
  5146  
  5147  type DeleteCategoryResp struct {
  5148  	*larkcore.ApiResp `json:"-"`
  5149  	larkcore.CodeError
  5150  }
  5151  
  5152  func (resp *DeleteCategoryResp) Success() bool {
  5153  	return resp.Code == 0
  5154  }
  5155  
  5156  type GetCategoryReqBuilder struct {
  5157  	apiReq *larkcore.ApiReq
  5158  }
  5159  
  5160  func NewGetCategoryReqBuilder() *GetCategoryReqBuilder {
  5161  	builder := &GetCategoryReqBuilder{}
  5162  	builder.apiReq = &larkcore.ApiReq{
  5163  		PathParams:  larkcore.PathParams{},
  5164  		QueryParams: larkcore.QueryParams{},
  5165  	}
  5166  	return builder
  5167  }
  5168  
  5169  // 知识库分类ID
  5170  //
  5171  // 示例值:6948728206392295444
  5172  func (builder *GetCategoryReqBuilder) Id(id string) *GetCategoryReqBuilder {
  5173  	builder.apiReq.PathParams.Set("id", fmt.Sprint(id))
  5174  	return builder
  5175  }
  5176  
  5177  func (builder *GetCategoryReqBuilder) Build() *GetCategoryReq {
  5178  	req := &GetCategoryReq{}
  5179  	req.apiReq = &larkcore.ApiReq{}
  5180  	req.apiReq.PathParams = builder.apiReq.PathParams
  5181  	return req
  5182  }
  5183  
  5184  type GetCategoryReq struct {
  5185  	apiReq *larkcore.ApiReq
  5186  }
  5187  
  5188  type GetCategoryRespData struct {
  5189  	CategoryId *string `json:"category_id,omitempty"` // category id
  5190  	Id         *string `json:"id,omitempty"`          // category id, for backward compatibility
  5191  	Name       *string `json:"name,omitempty"`        // category name
  5192  	HelpdeskId *string `json:"helpdesk_id,omitempty"` // helpdesk id
  5193  	Language   *string `json:"language,omitempty"`    // category language
  5194  }
  5195  
  5196  type GetCategoryResp struct {
  5197  	*larkcore.ApiResp `json:"-"`
  5198  	larkcore.CodeError
  5199  	Data *GetCategoryRespData `json:"data"` // 业务数据
  5200  }
  5201  
  5202  func (resp *GetCategoryResp) Success() bool {
  5203  	return resp.Code == 0
  5204  }
  5205  
  5206  type ListCategoryReqBuilder struct {
  5207  	apiReq *larkcore.ApiReq
  5208  }
  5209  
  5210  func NewListCategoryReqBuilder() *ListCategoryReqBuilder {
  5211  	builder := &ListCategoryReqBuilder{}
  5212  	builder.apiReq = &larkcore.ApiReq{
  5213  		PathParams:  larkcore.PathParams{},
  5214  		QueryParams: larkcore.QueryParams{},
  5215  	}
  5216  	return builder
  5217  }
  5218  
  5219  // 知识库分类语言
  5220  //
  5221  // 示例值:zh_cn
  5222  func (builder *ListCategoryReqBuilder) Lang(lang string) *ListCategoryReqBuilder {
  5223  	builder.apiReq.QueryParams.Set("lang", fmt.Sprint(lang))
  5224  	return builder
  5225  }
  5226  
  5227  // 排序键。1: 根据知识库分类更新时间排序
  5228  //
  5229  // 示例值:1
  5230  func (builder *ListCategoryReqBuilder) OrderBy(orderBy int) *ListCategoryReqBuilder {
  5231  	builder.apiReq.QueryParams.Set("order_by", fmt.Sprint(orderBy))
  5232  	return builder
  5233  }
  5234  
  5235  // 顺序。true: 正序;false:反序
  5236  //
  5237  // 示例值:true
  5238  func (builder *ListCategoryReqBuilder) Asc(asc bool) *ListCategoryReqBuilder {
  5239  	builder.apiReq.QueryParams.Set("asc", fmt.Sprint(asc))
  5240  	return builder
  5241  }
  5242  
  5243  func (builder *ListCategoryReqBuilder) Build() *ListCategoryReq {
  5244  	req := &ListCategoryReq{}
  5245  	req.apiReq = &larkcore.ApiReq{}
  5246  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  5247  	return req
  5248  }
  5249  
  5250  type ListCategoryReq struct {
  5251  	apiReq *larkcore.ApiReq
  5252  }
  5253  
  5254  type ListCategoryRespData struct {
  5255  	Categories []*Category `json:"categories,omitempty"` // 知识库分类列表
  5256  }
  5257  
  5258  type ListCategoryResp struct {
  5259  	*larkcore.ApiResp `json:"-"`
  5260  	larkcore.CodeError
  5261  	Data *ListCategoryRespData `json:"data"` // 业务数据
  5262  }
  5263  
  5264  func (resp *ListCategoryResp) Success() bool {
  5265  	return resp.Code == 0
  5266  }
  5267  
  5268  type PatchCategoryReqBuilder struct {
  5269  	apiReq   *larkcore.ApiReq
  5270  	category *Category
  5271  }
  5272  
  5273  func NewPatchCategoryReqBuilder() *PatchCategoryReqBuilder {
  5274  	builder := &PatchCategoryReqBuilder{}
  5275  	builder.apiReq = &larkcore.ApiReq{
  5276  		PathParams:  larkcore.PathParams{},
  5277  		QueryParams: larkcore.QueryParams{},
  5278  	}
  5279  	return builder
  5280  }
  5281  
  5282  // category id
  5283  //
  5284  // 示例值:6948728206392295444
  5285  func (builder *PatchCategoryReqBuilder) Id(id string) *PatchCategoryReqBuilder {
  5286  	builder.apiReq.PathParams.Set("id", fmt.Sprint(id))
  5287  	return builder
  5288  }
  5289  
  5290  // 该接口用于更新知识库分类详情。
  5291  func (builder *PatchCategoryReqBuilder) Category(category *Category) *PatchCategoryReqBuilder {
  5292  	builder.category = category
  5293  	return builder
  5294  }
  5295  
  5296  func (builder *PatchCategoryReqBuilder) Build() *PatchCategoryReq {
  5297  	req := &PatchCategoryReq{}
  5298  	req.apiReq = &larkcore.ApiReq{}
  5299  	req.apiReq.PathParams = builder.apiReq.PathParams
  5300  	req.apiReq.Body = builder.category
  5301  	return req
  5302  }
  5303  
  5304  type PatchCategoryReq struct {
  5305  	apiReq   *larkcore.ApiReq
  5306  	Category *Category `body:""`
  5307  }
  5308  
  5309  type PatchCategoryResp struct {
  5310  	*larkcore.ApiResp `json:"-"`
  5311  	larkcore.CodeError
  5312  }
  5313  
  5314  func (resp *PatchCategoryResp) Success() bool {
  5315  	return resp.Code == 0
  5316  }
  5317  
  5318  type SubscribeEventReqBodyBuilder struct {
  5319  	events     []*Event // 可订阅的事件列表
  5320  	eventsFlag bool
  5321  }
  5322  
  5323  func NewSubscribeEventReqBodyBuilder() *SubscribeEventReqBodyBuilder {
  5324  	builder := &SubscribeEventReqBodyBuilder{}
  5325  	return builder
  5326  }
  5327  
  5328  // 可订阅的事件列表
  5329  //
  5330  //示例值:
  5331  func (builder *SubscribeEventReqBodyBuilder) Events(events []*Event) *SubscribeEventReqBodyBuilder {
  5332  	builder.events = events
  5333  	builder.eventsFlag = true
  5334  	return builder
  5335  }
  5336  
  5337  func (builder *SubscribeEventReqBodyBuilder) Build() *SubscribeEventReqBody {
  5338  	req := &SubscribeEventReqBody{}
  5339  	if builder.eventsFlag {
  5340  		req.Events = builder.events
  5341  	}
  5342  	return req
  5343  }
  5344  
  5345  type SubscribeEventPathReqBodyBuilder struct {
  5346  	events     []*Event // 可订阅的事件列表
  5347  	eventsFlag bool
  5348  }
  5349  
  5350  func NewSubscribeEventPathReqBodyBuilder() *SubscribeEventPathReqBodyBuilder {
  5351  	builder := &SubscribeEventPathReqBodyBuilder{}
  5352  	return builder
  5353  }
  5354  
  5355  // 可订阅的事件列表
  5356  //
  5357  // 示例值:
  5358  func (builder *SubscribeEventPathReqBodyBuilder) Events(events []*Event) *SubscribeEventPathReqBodyBuilder {
  5359  	builder.events = events
  5360  	builder.eventsFlag = true
  5361  	return builder
  5362  }
  5363  
  5364  func (builder *SubscribeEventPathReqBodyBuilder) Build() (*SubscribeEventReqBody, error) {
  5365  	req := &SubscribeEventReqBody{}
  5366  	if builder.eventsFlag {
  5367  		req.Events = builder.events
  5368  	}
  5369  	return req, nil
  5370  }
  5371  
  5372  type SubscribeEventReqBuilder struct {
  5373  	apiReq *larkcore.ApiReq
  5374  	body   *SubscribeEventReqBody
  5375  }
  5376  
  5377  func NewSubscribeEventReqBuilder() *SubscribeEventReqBuilder {
  5378  	builder := &SubscribeEventReqBuilder{}
  5379  	builder.apiReq = &larkcore.ApiReq{
  5380  		PathParams:  larkcore.PathParams{},
  5381  		QueryParams: larkcore.QueryParams{},
  5382  	}
  5383  	return builder
  5384  }
  5385  
  5386  // 用于订阅服务台事件
  5387  func (builder *SubscribeEventReqBuilder) Body(body *SubscribeEventReqBody) *SubscribeEventReqBuilder {
  5388  	builder.body = body
  5389  	return builder
  5390  }
  5391  
  5392  func (builder *SubscribeEventReqBuilder) Build() *SubscribeEventReq {
  5393  	req := &SubscribeEventReq{}
  5394  	req.apiReq = &larkcore.ApiReq{}
  5395  	req.apiReq.Body = builder.body
  5396  	return req
  5397  }
  5398  
  5399  type SubscribeEventReqBody struct {
  5400  	Events []*Event `json:"events,omitempty"` // 可订阅的事件列表
  5401  }
  5402  
  5403  type SubscribeEventReq struct {
  5404  	apiReq *larkcore.ApiReq
  5405  	Body   *SubscribeEventReqBody `body:""`
  5406  }
  5407  
  5408  type SubscribeEventResp struct {
  5409  	*larkcore.ApiResp `json:"-"`
  5410  	larkcore.CodeError
  5411  }
  5412  
  5413  func (resp *SubscribeEventResp) Success() bool {
  5414  	return resp.Code == 0
  5415  }
  5416  
  5417  type UnsubscribeEventReqBodyBuilder struct {
  5418  	events     []*Event // event list to unsubscribe
  5419  	eventsFlag bool
  5420  }
  5421  
  5422  func NewUnsubscribeEventReqBodyBuilder() *UnsubscribeEventReqBodyBuilder {
  5423  	builder := &UnsubscribeEventReqBodyBuilder{}
  5424  	return builder
  5425  }
  5426  
  5427  // event list to unsubscribe
  5428  //
  5429  //示例值:
  5430  func (builder *UnsubscribeEventReqBodyBuilder) Events(events []*Event) *UnsubscribeEventReqBodyBuilder {
  5431  	builder.events = events
  5432  	builder.eventsFlag = true
  5433  	return builder
  5434  }
  5435  
  5436  func (builder *UnsubscribeEventReqBodyBuilder) Build() *UnsubscribeEventReqBody {
  5437  	req := &UnsubscribeEventReqBody{}
  5438  	if builder.eventsFlag {
  5439  		req.Events = builder.events
  5440  	}
  5441  	return req
  5442  }
  5443  
  5444  type UnsubscribeEventPathReqBodyBuilder struct {
  5445  	events     []*Event // event list to unsubscribe
  5446  	eventsFlag bool
  5447  }
  5448  
  5449  func NewUnsubscribeEventPathReqBodyBuilder() *UnsubscribeEventPathReqBodyBuilder {
  5450  	builder := &UnsubscribeEventPathReqBodyBuilder{}
  5451  	return builder
  5452  }
  5453  
  5454  // event list to unsubscribe
  5455  //
  5456  // 示例值:
  5457  func (builder *UnsubscribeEventPathReqBodyBuilder) Events(events []*Event) *UnsubscribeEventPathReqBodyBuilder {
  5458  	builder.events = events
  5459  	builder.eventsFlag = true
  5460  	return builder
  5461  }
  5462  
  5463  func (builder *UnsubscribeEventPathReqBodyBuilder) Build() (*UnsubscribeEventReqBody, error) {
  5464  	req := &UnsubscribeEventReqBody{}
  5465  	if builder.eventsFlag {
  5466  		req.Events = builder.events
  5467  	}
  5468  	return req, nil
  5469  }
  5470  
  5471  type UnsubscribeEventReqBuilder struct {
  5472  	apiReq *larkcore.ApiReq
  5473  	body   *UnsubscribeEventReqBody
  5474  }
  5475  
  5476  func NewUnsubscribeEventReqBuilder() *UnsubscribeEventReqBuilder {
  5477  	builder := &UnsubscribeEventReqBuilder{}
  5478  	builder.apiReq = &larkcore.ApiReq{
  5479  		PathParams:  larkcore.PathParams{},
  5480  		QueryParams: larkcore.QueryParams{},
  5481  	}
  5482  	return builder
  5483  }
  5484  
  5485  // 用于取消订阅服务台事件
  5486  func (builder *UnsubscribeEventReqBuilder) Body(body *UnsubscribeEventReqBody) *UnsubscribeEventReqBuilder {
  5487  	builder.body = body
  5488  	return builder
  5489  }
  5490  
  5491  func (builder *UnsubscribeEventReqBuilder) Build() *UnsubscribeEventReq {
  5492  	req := &UnsubscribeEventReq{}
  5493  	req.apiReq = &larkcore.ApiReq{}
  5494  	req.apiReq.Body = builder.body
  5495  	return req
  5496  }
  5497  
  5498  type UnsubscribeEventReqBody struct {
  5499  	Events []*Event `json:"events,omitempty"` // event list to unsubscribe
  5500  }
  5501  
  5502  type UnsubscribeEventReq struct {
  5503  	apiReq *larkcore.ApiReq
  5504  	Body   *UnsubscribeEventReqBody `body:""`
  5505  }
  5506  
  5507  type UnsubscribeEventResp struct {
  5508  	*larkcore.ApiResp `json:"-"`
  5509  	larkcore.CodeError
  5510  }
  5511  
  5512  func (resp *UnsubscribeEventResp) Success() bool {
  5513  	return resp.Code == 0
  5514  }
  5515  
  5516  type CreateFaqReqBodyBuilder struct {
  5517  	faq     *FaqUpdateInfo // 知识库详情
  5518  	faqFlag bool
  5519  }
  5520  
  5521  func NewCreateFaqReqBodyBuilder() *CreateFaqReqBodyBuilder {
  5522  	builder := &CreateFaqReqBodyBuilder{}
  5523  	return builder
  5524  }
  5525  
  5526  // 知识库详情
  5527  //
  5528  //示例值:
  5529  func (builder *CreateFaqReqBodyBuilder) Faq(faq *FaqUpdateInfo) *CreateFaqReqBodyBuilder {
  5530  	builder.faq = faq
  5531  	builder.faqFlag = true
  5532  	return builder
  5533  }
  5534  
  5535  func (builder *CreateFaqReqBodyBuilder) Build() *CreateFaqReqBody {
  5536  	req := &CreateFaqReqBody{}
  5537  	if builder.faqFlag {
  5538  		req.Faq = builder.faq
  5539  	}
  5540  	return req
  5541  }
  5542  
  5543  type CreateFaqPathReqBodyBuilder struct {
  5544  	faq     *FaqUpdateInfo // 知识库详情
  5545  	faqFlag bool
  5546  }
  5547  
  5548  func NewCreateFaqPathReqBodyBuilder() *CreateFaqPathReqBodyBuilder {
  5549  	builder := &CreateFaqPathReqBodyBuilder{}
  5550  	return builder
  5551  }
  5552  
  5553  // 知识库详情
  5554  //
  5555  // 示例值:
  5556  func (builder *CreateFaqPathReqBodyBuilder) Faq(faq *FaqUpdateInfo) *CreateFaqPathReqBodyBuilder {
  5557  	builder.faq = faq
  5558  	builder.faqFlag = true
  5559  	return builder
  5560  }
  5561  
  5562  func (builder *CreateFaqPathReqBodyBuilder) Build() (*CreateFaqReqBody, error) {
  5563  	req := &CreateFaqReqBody{}
  5564  	if builder.faqFlag {
  5565  		req.Faq = builder.faq
  5566  	}
  5567  	return req, nil
  5568  }
  5569  
  5570  type CreateFaqReqBuilder struct {
  5571  	apiReq *larkcore.ApiReq
  5572  	body   *CreateFaqReqBody
  5573  }
  5574  
  5575  func NewCreateFaqReqBuilder() *CreateFaqReqBuilder {
  5576  	builder := &CreateFaqReqBuilder{}
  5577  	builder.apiReq = &larkcore.ApiReq{
  5578  		PathParams:  larkcore.PathParams{},
  5579  		QueryParams: larkcore.QueryParams{},
  5580  	}
  5581  	return builder
  5582  }
  5583  
  5584  // 该接口用于创建知识库。
  5585  func (builder *CreateFaqReqBuilder) Body(body *CreateFaqReqBody) *CreateFaqReqBuilder {
  5586  	builder.body = body
  5587  	return builder
  5588  }
  5589  
  5590  func (builder *CreateFaqReqBuilder) Build() *CreateFaqReq {
  5591  	req := &CreateFaqReq{}
  5592  	req.apiReq = &larkcore.ApiReq{}
  5593  	req.apiReq.Body = builder.body
  5594  	return req
  5595  }
  5596  
  5597  type CreateFaqReqBody struct {
  5598  	Faq *FaqUpdateInfo `json:"faq,omitempty"` // 知识库详情
  5599  }
  5600  
  5601  type CreateFaqReq struct {
  5602  	apiReq *larkcore.ApiReq
  5603  	Body   *CreateFaqReqBody `body:""`
  5604  }
  5605  
  5606  type CreateFaqRespData struct {
  5607  	Faq *Faq `json:"faq,omitempty"` // 知识库详情
  5608  }
  5609  
  5610  type CreateFaqResp struct {
  5611  	*larkcore.ApiResp `json:"-"`
  5612  	larkcore.CodeError
  5613  	Data *CreateFaqRespData `json:"data"` // 业务数据
  5614  }
  5615  
  5616  func (resp *CreateFaqResp) Success() bool {
  5617  	return resp.Code == 0
  5618  }
  5619  
  5620  type DeleteFaqReqBuilder struct {
  5621  	apiReq *larkcore.ApiReq
  5622  }
  5623  
  5624  func NewDeleteFaqReqBuilder() *DeleteFaqReqBuilder {
  5625  	builder := &DeleteFaqReqBuilder{}
  5626  	builder.apiReq = &larkcore.ApiReq{
  5627  		PathParams:  larkcore.PathParams{},
  5628  		QueryParams: larkcore.QueryParams{},
  5629  	}
  5630  	return builder
  5631  }
  5632  
  5633  // id
  5634  //
  5635  // 示例值:12345
  5636  func (builder *DeleteFaqReqBuilder) Id(id string) *DeleteFaqReqBuilder {
  5637  	builder.apiReq.PathParams.Set("id", fmt.Sprint(id))
  5638  	return builder
  5639  }
  5640  
  5641  func (builder *DeleteFaqReqBuilder) Build() *DeleteFaqReq {
  5642  	req := &DeleteFaqReq{}
  5643  	req.apiReq = &larkcore.ApiReq{}
  5644  	req.apiReq.PathParams = builder.apiReq.PathParams
  5645  	return req
  5646  }
  5647  
  5648  type DeleteFaqReq struct {
  5649  	apiReq *larkcore.ApiReq
  5650  }
  5651  
  5652  type DeleteFaqResp struct {
  5653  	*larkcore.ApiResp `json:"-"`
  5654  	larkcore.CodeError
  5655  }
  5656  
  5657  func (resp *DeleteFaqResp) Success() bool {
  5658  	return resp.Code == 0
  5659  }
  5660  
  5661  type FaqImageFaqReqBuilder struct {
  5662  	apiReq *larkcore.ApiReq
  5663  }
  5664  
  5665  func NewFaqImageFaqReqBuilder() *FaqImageFaqReqBuilder {
  5666  	builder := &FaqImageFaqReqBuilder{}
  5667  	builder.apiReq = &larkcore.ApiReq{
  5668  		PathParams:  larkcore.PathParams{},
  5669  		QueryParams: larkcore.QueryParams{},
  5670  	}
  5671  	return builder
  5672  }
  5673  
  5674  // 知识库ID
  5675  //
  5676  // 示例值:12345
  5677  func (builder *FaqImageFaqReqBuilder) Id(id string) *FaqImageFaqReqBuilder {
  5678  	builder.apiReq.PathParams.Set("id", fmt.Sprint(id))
  5679  	return builder
  5680  }
  5681  
  5682  // 图像key
  5683  //
  5684  // 示例值:img_b07ffac0-19c1-48a3-afca-599f8ea825fj
  5685  func (builder *FaqImageFaqReqBuilder) ImageKey(imageKey string) *FaqImageFaqReqBuilder {
  5686  	builder.apiReq.PathParams.Set("image_key", fmt.Sprint(imageKey))
  5687  	return builder
  5688  }
  5689  
  5690  func (builder *FaqImageFaqReqBuilder) Build() *FaqImageFaqReq {
  5691  	req := &FaqImageFaqReq{}
  5692  	req.apiReq = &larkcore.ApiReq{}
  5693  	req.apiReq.PathParams = builder.apiReq.PathParams
  5694  	return req
  5695  }
  5696  
  5697  type FaqImageFaqReq struct {
  5698  	apiReq *larkcore.ApiReq
  5699  }
  5700  
  5701  type FaqImageFaqResp struct {
  5702  	*larkcore.ApiResp `json:"-"`
  5703  	larkcore.CodeError
  5704  	File     io.Reader `json:"-"`
  5705  	FileName string    `json:"-"`
  5706  }
  5707  
  5708  func (resp *FaqImageFaqResp) Success() bool {
  5709  	return resp.Code == 0
  5710  }
  5711  
  5712  func (resp *FaqImageFaqResp) WriteFile(fileName string) error {
  5713  	bs, err := ioutil.ReadAll(resp.File)
  5714  	if err != nil {
  5715  		return err
  5716  	}
  5717  
  5718  	err = ioutil.WriteFile(fileName, bs, 0666)
  5719  	if err != nil {
  5720  		return err
  5721  	}
  5722  	return nil
  5723  }
  5724  
  5725  type GetFaqReqBuilder struct {
  5726  	apiReq *larkcore.ApiReq
  5727  }
  5728  
  5729  func NewGetFaqReqBuilder() *GetFaqReqBuilder {
  5730  	builder := &GetFaqReqBuilder{}
  5731  	builder.apiReq = &larkcore.ApiReq{
  5732  		PathParams:  larkcore.PathParams{},
  5733  		QueryParams: larkcore.QueryParams{},
  5734  	}
  5735  	return builder
  5736  }
  5737  
  5738  // 知识库ID
  5739  //
  5740  // 示例值:6856395634652479491
  5741  func (builder *GetFaqReqBuilder) Id(id string) *GetFaqReqBuilder {
  5742  	builder.apiReq.PathParams.Set("id", fmt.Sprint(id))
  5743  	return builder
  5744  }
  5745  
  5746  func (builder *GetFaqReqBuilder) Build() *GetFaqReq {
  5747  	req := &GetFaqReq{}
  5748  	req.apiReq = &larkcore.ApiReq{}
  5749  	req.apiReq.PathParams = builder.apiReq.PathParams
  5750  	return req
  5751  }
  5752  
  5753  type GetFaqReq struct {
  5754  	apiReq *larkcore.ApiReq
  5755  }
  5756  
  5757  type GetFaqRespData struct {
  5758  	Faq *Faq `json:"faq,omitempty"` // 知识库详情
  5759  }
  5760  
  5761  type GetFaqResp struct {
  5762  	*larkcore.ApiResp `json:"-"`
  5763  	larkcore.CodeError
  5764  	Data *GetFaqRespData `json:"data"` // 业务数据
  5765  }
  5766  
  5767  func (resp *GetFaqResp) Success() bool {
  5768  	return resp.Code == 0
  5769  }
  5770  
  5771  type ListFaqReqBuilder struct {
  5772  	apiReq *larkcore.ApiReq
  5773  	limit  int // 最大返回多少记录,当使用迭代器访问时才有效
  5774  }
  5775  
  5776  func NewListFaqReqBuilder() *ListFaqReqBuilder {
  5777  	builder := &ListFaqReqBuilder{}
  5778  	builder.apiReq = &larkcore.ApiReq{
  5779  		PathParams:  larkcore.PathParams{},
  5780  		QueryParams: larkcore.QueryParams{},
  5781  	}
  5782  	return builder
  5783  }
  5784  
  5785  // 最大返回多少记录,当使用迭代器访问时才有效
  5786  func (builder *ListFaqReqBuilder) Limit(limit int) *ListFaqReqBuilder {
  5787  	builder.limit = limit
  5788  	return builder
  5789  }
  5790  
  5791  //  知识库分类ID
  5792  //
  5793  // 示例值:6856395522433908739
  5794  func (builder *ListFaqReqBuilder) CategoryId(categoryId string) *ListFaqReqBuilder {
  5795  	builder.apiReq.QueryParams.Set("category_id", fmt.Sprint(categoryId))
  5796  	return builder
  5797  }
  5798  
  5799  // 搜索条件: 知识库状态 1:在线 0:删除,可恢复 2:删除,不可恢复
  5800  //
  5801  // 示例值:1
  5802  func (builder *ListFaqReqBuilder) Status(status string) *ListFaqReqBuilder {
  5803  	builder.apiReq.QueryParams.Set("status", fmt.Sprint(status))
  5804  	return builder
  5805  }
  5806  
  5807  // 搜索条件: 关键词,匹配问题标题,问题关键字,用户姓名
  5808  //
  5809  // 示例值:点餐
  5810  func (builder *ListFaqReqBuilder) Search(search string) *ListFaqReqBuilder {
  5811  	builder.apiReq.QueryParams.Set("search", fmt.Sprint(search))
  5812  	return builder
  5813  }
  5814  
  5815  //
  5816  //
  5817  // 示例值:6856395634652479491
  5818  func (builder *ListFaqReqBuilder) PageToken(pageToken string) *ListFaqReqBuilder {
  5819  	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
  5820  	return builder
  5821  }
  5822  
  5823  //
  5824  //
  5825  // 示例值:10
  5826  func (builder *ListFaqReqBuilder) PageSize(pageSize int) *ListFaqReqBuilder {
  5827  	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
  5828  	return builder
  5829  }
  5830  
  5831  func (builder *ListFaqReqBuilder) Build() *ListFaqReq {
  5832  	req := &ListFaqReq{}
  5833  	req.apiReq = &larkcore.ApiReq{}
  5834  	req.Limit = builder.limit
  5835  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  5836  	return req
  5837  }
  5838  
  5839  type ListFaqReq struct {
  5840  	apiReq *larkcore.ApiReq
  5841  	Limit  int // 最多返回多少记录,只有在使用迭代器访问时,才有效
  5842  
  5843  }
  5844  
  5845  type ListFaqRespData struct {
  5846  	HasMore   *bool   `json:"has_more,omitempty"`   // if there's next page
  5847  	PageToken *string `json:"page_token,omitempty"` // the next page token
  5848  	PageSize  *int    `json:"page_size,omitempty"`  // 实际返回的FAQ数量
  5849  	Total     *int    `json:"total,omitempty"`      // 总数
  5850  	Items     []*Faq  `json:"items,omitempty"`      // 知识库列表
  5851  }
  5852  
  5853  type ListFaqResp struct {
  5854  	*larkcore.ApiResp `json:"-"`
  5855  	larkcore.CodeError
  5856  	Data *ListFaqRespData `json:"data"` // 业务数据
  5857  }
  5858  
  5859  func (resp *ListFaqResp) Success() bool {
  5860  	return resp.Code == 0
  5861  }
  5862  
  5863  type PatchFaqReqBodyBuilder struct {
  5864  	faq     *FaqUpdateInfo // 修改的知识库内容
  5865  	faqFlag bool
  5866  }
  5867  
  5868  func NewPatchFaqReqBodyBuilder() *PatchFaqReqBodyBuilder {
  5869  	builder := &PatchFaqReqBodyBuilder{}
  5870  	return builder
  5871  }
  5872  
  5873  // 修改的知识库内容
  5874  //
  5875  //示例值:
  5876  func (builder *PatchFaqReqBodyBuilder) Faq(faq *FaqUpdateInfo) *PatchFaqReqBodyBuilder {
  5877  	builder.faq = faq
  5878  	builder.faqFlag = true
  5879  	return builder
  5880  }
  5881  
  5882  func (builder *PatchFaqReqBodyBuilder) Build() *PatchFaqReqBody {
  5883  	req := &PatchFaqReqBody{}
  5884  	if builder.faqFlag {
  5885  		req.Faq = builder.faq
  5886  	}
  5887  	return req
  5888  }
  5889  
  5890  type PatchFaqPathReqBodyBuilder struct {
  5891  	faq     *FaqUpdateInfo // 修改的知识库内容
  5892  	faqFlag bool
  5893  }
  5894  
  5895  func NewPatchFaqPathReqBodyBuilder() *PatchFaqPathReqBodyBuilder {
  5896  	builder := &PatchFaqPathReqBodyBuilder{}
  5897  	return builder
  5898  }
  5899  
  5900  // 修改的知识库内容
  5901  //
  5902  // 示例值:
  5903  func (builder *PatchFaqPathReqBodyBuilder) Faq(faq *FaqUpdateInfo) *PatchFaqPathReqBodyBuilder {
  5904  	builder.faq = faq
  5905  	builder.faqFlag = true
  5906  	return builder
  5907  }
  5908  
  5909  func (builder *PatchFaqPathReqBodyBuilder) Build() (*PatchFaqReqBody, error) {
  5910  	req := &PatchFaqReqBody{}
  5911  	if builder.faqFlag {
  5912  		req.Faq = builder.faq
  5913  	}
  5914  	return req, nil
  5915  }
  5916  
  5917  type PatchFaqReqBuilder struct {
  5918  	apiReq *larkcore.ApiReq
  5919  	body   *PatchFaqReqBody
  5920  }
  5921  
  5922  func NewPatchFaqReqBuilder() *PatchFaqReqBuilder {
  5923  	builder := &PatchFaqReqBuilder{}
  5924  	builder.apiReq = &larkcore.ApiReq{
  5925  		PathParams:  larkcore.PathParams{},
  5926  		QueryParams: larkcore.QueryParams{},
  5927  	}
  5928  	return builder
  5929  }
  5930  
  5931  // 知识库ID
  5932  //
  5933  // 示例值:6856395634652479491
  5934  func (builder *PatchFaqReqBuilder) Id(id string) *PatchFaqReqBuilder {
  5935  	builder.apiReq.PathParams.Set("id", fmt.Sprint(id))
  5936  	return builder
  5937  }
  5938  
  5939  // 该接口用于修改知识库。
  5940  func (builder *PatchFaqReqBuilder) Body(body *PatchFaqReqBody) *PatchFaqReqBuilder {
  5941  	builder.body = body
  5942  	return builder
  5943  }
  5944  
  5945  func (builder *PatchFaqReqBuilder) Build() *PatchFaqReq {
  5946  	req := &PatchFaqReq{}
  5947  	req.apiReq = &larkcore.ApiReq{}
  5948  	req.apiReq.PathParams = builder.apiReq.PathParams
  5949  	req.apiReq.Body = builder.body
  5950  	return req
  5951  }
  5952  
  5953  type PatchFaqReqBody struct {
  5954  	Faq *FaqUpdateInfo `json:"faq,omitempty"` // 修改的知识库内容
  5955  }
  5956  
  5957  type PatchFaqReq struct {
  5958  	apiReq *larkcore.ApiReq
  5959  	Body   *PatchFaqReqBody `body:""`
  5960  }
  5961  
  5962  type PatchFaqResp struct {
  5963  	*larkcore.ApiResp `json:"-"`
  5964  	larkcore.CodeError
  5965  }
  5966  
  5967  func (resp *PatchFaqResp) Success() bool {
  5968  	return resp.Code == 0
  5969  }
  5970  
  5971  type SearchFaqReqBuilder struct {
  5972  	apiReq *larkcore.ApiReq
  5973  	limit  int // 最大返回多少记录,当使用迭代器访问时才有效
  5974  }
  5975  
  5976  func NewSearchFaqReqBuilder() *SearchFaqReqBuilder {
  5977  	builder := &SearchFaqReqBuilder{}
  5978  	builder.apiReq = &larkcore.ApiReq{
  5979  		PathParams:  larkcore.PathParams{},
  5980  		QueryParams: larkcore.QueryParams{},
  5981  	}
  5982  	return builder
  5983  }
  5984  
  5985  // 最大返回多少记录,当使用迭代器访问时才有效
  5986  func (builder *SearchFaqReqBuilder) Limit(limit int) *SearchFaqReqBuilder {
  5987  	builder.limit = limit
  5988  	return builder
  5989  }
  5990  
  5991  // 搜索query;,query内容如果不是英文,包含中文空格等有两种编码策略:1. url编码 2. base64编码,同时加上base64=true参数
  5992  //
  5993  // 示例值:wifi
  5994  func (builder *SearchFaqReqBuilder) Query(query string) *SearchFaqReqBuilder {
  5995  	builder.apiReq.QueryParams.Set("query", fmt.Sprint(query))
  5996  	return builder
  5997  }
  5998  
  5999  // 是否转换为base64,输入true表示是,不填写表示否,中文需要转换为base64
  6000  //
  6001  // 示例值:5bel5Y2V
  6002  func (builder *SearchFaqReqBuilder) Base64(base64 string) *SearchFaqReqBuilder {
  6003  	builder.apiReq.QueryParams.Set("base64", fmt.Sprint(base64))
  6004  	return builder
  6005  }
  6006  
  6007  //
  6008  //
  6009  // 示例值:6936004780707807251
  6010  func (builder *SearchFaqReqBuilder) PageToken(pageToken string) *SearchFaqReqBuilder {
  6011  	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
  6012  	return builder
  6013  }
  6014  
  6015  //
  6016  //
  6017  // 示例值:10
  6018  func (builder *SearchFaqReqBuilder) PageSize(pageSize int) *SearchFaqReqBuilder {
  6019  	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
  6020  	return builder
  6021  }
  6022  
  6023  func (builder *SearchFaqReqBuilder) Build() *SearchFaqReq {
  6024  	req := &SearchFaqReq{}
  6025  	req.apiReq = &larkcore.ApiReq{}
  6026  	req.Limit = builder.limit
  6027  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  6028  	return req
  6029  }
  6030  
  6031  type SearchFaqReq struct {
  6032  	apiReq *larkcore.ApiReq
  6033  	Limit  int // 最多返回多少记录,只有在使用迭代器访问时,才有效
  6034  
  6035  }
  6036  
  6037  type SearchFaqRespData struct {
  6038  	HasMore   *bool   `json:"has_more,omitempty"`   // if there's next page
  6039  	PageToken *string `json:"page_token,omitempty"` // the next page token
  6040  	Items     []*Faq  `json:"items,omitempty"`      // 知识库列表
  6041  }
  6042  
  6043  type SearchFaqResp struct {
  6044  	*larkcore.ApiResp `json:"-"`
  6045  	larkcore.CodeError
  6046  	Data *SearchFaqRespData `json:"data"` // 业务数据
  6047  }
  6048  
  6049  func (resp *SearchFaqResp) Success() bool {
  6050  	return resp.Code == 0
  6051  }
  6052  
  6053  type CancelApproveNotificationReqBuilder struct {
  6054  	apiReq *larkcore.ApiReq
  6055  }
  6056  
  6057  func NewCancelApproveNotificationReqBuilder() *CancelApproveNotificationReqBuilder {
  6058  	builder := &CancelApproveNotificationReqBuilder{}
  6059  	builder.apiReq = &larkcore.ApiReq{
  6060  		PathParams:  larkcore.PathParams{},
  6061  		QueryParams: larkcore.QueryParams{},
  6062  	}
  6063  	return builder
  6064  }
  6065  
  6066  // 唯一ID
  6067  //
  6068  // 示例值:6981801914270744596
  6069  func (builder *CancelApproveNotificationReqBuilder) NotificationId(notificationId string) *CancelApproveNotificationReqBuilder {
  6070  	builder.apiReq.PathParams.Set("notification_id", fmt.Sprint(notificationId))
  6071  	return builder
  6072  }
  6073  
  6074  func (builder *CancelApproveNotificationReqBuilder) Build() *CancelApproveNotificationReq {
  6075  	req := &CancelApproveNotificationReq{}
  6076  	req.apiReq = &larkcore.ApiReq{}
  6077  	req.apiReq.PathParams = builder.apiReq.PathParams
  6078  	return req
  6079  }
  6080  
  6081  type CancelApproveNotificationReq struct {
  6082  	apiReq *larkcore.ApiReq
  6083  }
  6084  
  6085  type CancelApproveNotificationResp struct {
  6086  	*larkcore.ApiResp `json:"-"`
  6087  	larkcore.CodeError
  6088  }
  6089  
  6090  func (resp *CancelApproveNotificationResp) Success() bool {
  6091  	return resp.Code == 0
  6092  }
  6093  
  6094  type CancelSendNotificationReqBodyBuilder struct {
  6095  	isRecall     bool // 是否召回已发送的消息,新人入职消息同样适用
  6096  	isRecallFlag bool
  6097  }
  6098  
  6099  func NewCancelSendNotificationReqBodyBuilder() *CancelSendNotificationReqBodyBuilder {
  6100  	builder := &CancelSendNotificationReqBodyBuilder{}
  6101  	return builder
  6102  }
  6103  
  6104  // 是否召回已发送的消息,新人入职消息同样适用
  6105  //
  6106  //示例值:true
  6107  func (builder *CancelSendNotificationReqBodyBuilder) IsRecall(isRecall bool) *CancelSendNotificationReqBodyBuilder {
  6108  	builder.isRecall = isRecall
  6109  	builder.isRecallFlag = true
  6110  	return builder
  6111  }
  6112  
  6113  func (builder *CancelSendNotificationReqBodyBuilder) Build() *CancelSendNotificationReqBody {
  6114  	req := &CancelSendNotificationReqBody{}
  6115  	if builder.isRecallFlag {
  6116  		req.IsRecall = &builder.isRecall
  6117  	}
  6118  	return req
  6119  }
  6120  
  6121  type CancelSendNotificationPathReqBodyBuilder struct {
  6122  	isRecall     bool // 是否召回已发送的消息,新人入职消息同样适用
  6123  	isRecallFlag bool
  6124  }
  6125  
  6126  func NewCancelSendNotificationPathReqBodyBuilder() *CancelSendNotificationPathReqBodyBuilder {
  6127  	builder := &CancelSendNotificationPathReqBodyBuilder{}
  6128  	return builder
  6129  }
  6130  
  6131  // 是否召回已发送的消息,新人入职消息同样适用
  6132  //
  6133  // 示例值:true
  6134  func (builder *CancelSendNotificationPathReqBodyBuilder) IsRecall(isRecall bool) *CancelSendNotificationPathReqBodyBuilder {
  6135  	builder.isRecall = isRecall
  6136  	builder.isRecallFlag = true
  6137  	return builder
  6138  }
  6139  
  6140  func (builder *CancelSendNotificationPathReqBodyBuilder) Build() (*CancelSendNotificationReqBody, error) {
  6141  	req := &CancelSendNotificationReqBody{}
  6142  	if builder.isRecallFlag {
  6143  		req.IsRecall = &builder.isRecall
  6144  	}
  6145  	return req, nil
  6146  }
  6147  
  6148  type CancelSendNotificationReqBuilder struct {
  6149  	apiReq *larkcore.ApiReq
  6150  	body   *CancelSendNotificationReqBody
  6151  }
  6152  
  6153  func NewCancelSendNotificationReqBuilder() *CancelSendNotificationReqBuilder {
  6154  	builder := &CancelSendNotificationReqBuilder{}
  6155  	builder.apiReq = &larkcore.ApiReq{
  6156  		PathParams:  larkcore.PathParams{},
  6157  		QueryParams: larkcore.QueryParams{},
  6158  	}
  6159  	return builder
  6160  }
  6161  
  6162  // 唯一ID
  6163  //
  6164  // 示例值:6981801914270744596
  6165  func (builder *CancelSendNotificationReqBuilder) NotificationId(notificationId string) *CancelSendNotificationReqBuilder {
  6166  	builder.apiReq.PathParams.Set("notification_id", fmt.Sprint(notificationId))
  6167  	return builder
  6168  }
  6169  
  6170  // 取消推送接口,审核通过后待调度可以调用,发送过程中可以调用(会撤回已发送的消息),发送完成后可以需要推送(会撤回所有已发送的消息)
  6171  func (builder *CancelSendNotificationReqBuilder) Body(body *CancelSendNotificationReqBody) *CancelSendNotificationReqBuilder {
  6172  	builder.body = body
  6173  	return builder
  6174  }
  6175  
  6176  func (builder *CancelSendNotificationReqBuilder) Build() *CancelSendNotificationReq {
  6177  	req := &CancelSendNotificationReq{}
  6178  	req.apiReq = &larkcore.ApiReq{}
  6179  	req.apiReq.PathParams = builder.apiReq.PathParams
  6180  	req.apiReq.Body = builder.body
  6181  	return req
  6182  }
  6183  
  6184  type CancelSendNotificationReqBody struct {
  6185  	IsRecall *bool `json:"is_recall,omitempty"` // 是否召回已发送的消息,新人入职消息同样适用
  6186  }
  6187  
  6188  type CancelSendNotificationReq struct {
  6189  	apiReq *larkcore.ApiReq
  6190  	Body   *CancelSendNotificationReqBody `body:""`
  6191  }
  6192  
  6193  type CancelSendNotificationResp struct {
  6194  	*larkcore.ApiResp `json:"-"`
  6195  	larkcore.CodeError
  6196  }
  6197  
  6198  func (resp *CancelSendNotificationResp) Success() bool {
  6199  	return resp.Code == 0
  6200  }
  6201  
  6202  type CreateNotificationReqBuilder struct {
  6203  	apiReq       *larkcore.ApiReq
  6204  	notification *Notification
  6205  }
  6206  
  6207  func NewCreateNotificationReqBuilder() *CreateNotificationReqBuilder {
  6208  	builder := &CreateNotificationReqBuilder{}
  6209  	builder.apiReq = &larkcore.ApiReq{
  6210  		PathParams:  larkcore.PathParams{},
  6211  		QueryParams: larkcore.QueryParams{},
  6212  	}
  6213  	return builder
  6214  }
  6215  
  6216  // 此次调用中使用的用户ID的类型
  6217  //
  6218  // 示例值:
  6219  func (builder *CreateNotificationReqBuilder) UserIdType(userIdType string) *CreateNotificationReqBuilder {
  6220  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  6221  	return builder
  6222  }
  6223  
  6224  // 调用接口创建推送,创建成功后为草稿状态
  6225  func (builder *CreateNotificationReqBuilder) Notification(notification *Notification) *CreateNotificationReqBuilder {
  6226  	builder.notification = notification
  6227  	return builder
  6228  }
  6229  
  6230  func (builder *CreateNotificationReqBuilder) Build() *CreateNotificationReq {
  6231  	req := &CreateNotificationReq{}
  6232  	req.apiReq = &larkcore.ApiReq{}
  6233  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  6234  	req.apiReq.Body = builder.notification
  6235  	return req
  6236  }
  6237  
  6238  type CreateNotificationReq struct {
  6239  	apiReq       *larkcore.ApiReq
  6240  	Notification *Notification `body:""`
  6241  }
  6242  
  6243  type CreateNotificationRespData struct {
  6244  	NotificationId *string `json:"notification_id,omitempty"` // 创建成功后的唯一id
  6245  	Status         *int    `json:"status,omitempty"`          // 当前状态
  6246  }
  6247  
  6248  type CreateNotificationResp struct {
  6249  	*larkcore.ApiResp `json:"-"`
  6250  	larkcore.CodeError
  6251  	Data *CreateNotificationRespData `json:"data"` // 业务数据
  6252  }
  6253  
  6254  func (resp *CreateNotificationResp) Success() bool {
  6255  	return resp.Code == 0
  6256  }
  6257  
  6258  type ExecuteSendNotificationReqBodyBuilder struct {
  6259  	sendAt     string // 发送时间戳(毫秒)
  6260  	sendAtFlag bool
  6261  }
  6262  
  6263  func NewExecuteSendNotificationReqBodyBuilder() *ExecuteSendNotificationReqBodyBuilder {
  6264  	builder := &ExecuteSendNotificationReqBodyBuilder{}
  6265  	return builder
  6266  }
  6267  
  6268  // 发送时间戳(毫秒)
  6269  //
  6270  //示例值:1624326025000
  6271  func (builder *ExecuteSendNotificationReqBodyBuilder) SendAt(sendAt string) *ExecuteSendNotificationReqBodyBuilder {
  6272  	builder.sendAt = sendAt
  6273  	builder.sendAtFlag = true
  6274  	return builder
  6275  }
  6276  
  6277  func (builder *ExecuteSendNotificationReqBodyBuilder) Build() *ExecuteSendNotificationReqBody {
  6278  	req := &ExecuteSendNotificationReqBody{}
  6279  	if builder.sendAtFlag {
  6280  		req.SendAt = &builder.sendAt
  6281  	}
  6282  	return req
  6283  }
  6284  
  6285  type ExecuteSendNotificationPathReqBodyBuilder struct {
  6286  	sendAt     string // 发送时间戳(毫秒)
  6287  	sendAtFlag bool
  6288  }
  6289  
  6290  func NewExecuteSendNotificationPathReqBodyBuilder() *ExecuteSendNotificationPathReqBodyBuilder {
  6291  	builder := &ExecuteSendNotificationPathReqBodyBuilder{}
  6292  	return builder
  6293  }
  6294  
  6295  // 发送时间戳(毫秒)
  6296  //
  6297  // 示例值:1624326025000
  6298  func (builder *ExecuteSendNotificationPathReqBodyBuilder) SendAt(sendAt string) *ExecuteSendNotificationPathReqBodyBuilder {
  6299  	builder.sendAt = sendAt
  6300  	builder.sendAtFlag = true
  6301  	return builder
  6302  }
  6303  
  6304  func (builder *ExecuteSendNotificationPathReqBodyBuilder) Build() (*ExecuteSendNotificationReqBody, error) {
  6305  	req := &ExecuteSendNotificationReqBody{}
  6306  	if builder.sendAtFlag {
  6307  		req.SendAt = &builder.sendAt
  6308  	}
  6309  	return req, nil
  6310  }
  6311  
  6312  type ExecuteSendNotificationReqBuilder struct {
  6313  	apiReq *larkcore.ApiReq
  6314  	body   *ExecuteSendNotificationReqBody
  6315  }
  6316  
  6317  func NewExecuteSendNotificationReqBuilder() *ExecuteSendNotificationReqBuilder {
  6318  	builder := &ExecuteSendNotificationReqBuilder{}
  6319  	builder.apiReq = &larkcore.ApiReq{
  6320  		PathParams:  larkcore.PathParams{},
  6321  		QueryParams: larkcore.QueryParams{},
  6322  	}
  6323  	return builder
  6324  }
  6325  
  6326  // 创建接口返回的唯一id
  6327  //
  6328  // 示例值:6985032626234982420
  6329  func (builder *ExecuteSendNotificationReqBuilder) NotificationId(notificationId string) *ExecuteSendNotificationReqBuilder {
  6330  	builder.apiReq.PathParams.Set("notification_id", fmt.Sprint(notificationId))
  6331  	return builder
  6332  }
  6333  
  6334  // 审核通过后调用此接口设置推送时间,等待调度系统调度,发送消息
  6335  func (builder *ExecuteSendNotificationReqBuilder) Body(body *ExecuteSendNotificationReqBody) *ExecuteSendNotificationReqBuilder {
  6336  	builder.body = body
  6337  	return builder
  6338  }
  6339  
  6340  func (builder *ExecuteSendNotificationReqBuilder) Build() *ExecuteSendNotificationReq {
  6341  	req := &ExecuteSendNotificationReq{}
  6342  	req.apiReq = &larkcore.ApiReq{}
  6343  	req.apiReq.PathParams = builder.apiReq.PathParams
  6344  	req.apiReq.Body = builder.body
  6345  	return req
  6346  }
  6347  
  6348  type ExecuteSendNotificationReqBody struct {
  6349  	SendAt *string `json:"send_at,omitempty"` // 发送时间戳(毫秒)
  6350  }
  6351  
  6352  type ExecuteSendNotificationReq struct {
  6353  	apiReq *larkcore.ApiReq
  6354  	Body   *ExecuteSendNotificationReqBody `body:""`
  6355  }
  6356  
  6357  type ExecuteSendNotificationResp struct {
  6358  	*larkcore.ApiResp `json:"-"`
  6359  	larkcore.CodeError
  6360  }
  6361  
  6362  func (resp *ExecuteSendNotificationResp) Success() bool {
  6363  	return resp.Code == 0
  6364  }
  6365  
  6366  type GetNotificationReqBuilder struct {
  6367  	apiReq *larkcore.ApiReq
  6368  }
  6369  
  6370  func NewGetNotificationReqBuilder() *GetNotificationReqBuilder {
  6371  	builder := &GetNotificationReqBuilder{}
  6372  	builder.apiReq = &larkcore.ApiReq{
  6373  		PathParams:  larkcore.PathParams{},
  6374  		QueryParams: larkcore.QueryParams{},
  6375  	}
  6376  	return builder
  6377  }
  6378  
  6379  // 唯一ID
  6380  //
  6381  // 示例值:1624326025000
  6382  func (builder *GetNotificationReqBuilder) NotificationId(notificationId string) *GetNotificationReqBuilder {
  6383  	builder.apiReq.PathParams.Set("notification_id", fmt.Sprint(notificationId))
  6384  	return builder
  6385  }
  6386  
  6387  // 此次调用中使用的用户ID的类型
  6388  //
  6389  // 示例值:
  6390  func (builder *GetNotificationReqBuilder) UserIdType(userIdType string) *GetNotificationReqBuilder {
  6391  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  6392  	return builder
  6393  }
  6394  
  6395  func (builder *GetNotificationReqBuilder) Build() *GetNotificationReq {
  6396  	req := &GetNotificationReq{}
  6397  	req.apiReq = &larkcore.ApiReq{}
  6398  	req.apiReq.PathParams = builder.apiReq.PathParams
  6399  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  6400  	return req
  6401  }
  6402  
  6403  type GetNotificationReq struct {
  6404  	apiReq *larkcore.ApiReq
  6405  }
  6406  
  6407  type GetNotificationRespData struct {
  6408  	Notification    *Notification `json:"notification,omitempty"`      // push任务详情
  6409  	ApprovalAppLink *string       `json:"approval_app_link,omitempty"` // 审批链接
  6410  }
  6411  
  6412  type GetNotificationResp struct {
  6413  	*larkcore.ApiResp `json:"-"`
  6414  	larkcore.CodeError
  6415  	Data *GetNotificationRespData `json:"data"` // 业务数据
  6416  }
  6417  
  6418  func (resp *GetNotificationResp) Success() bool {
  6419  	return resp.Code == 0
  6420  }
  6421  
  6422  type PatchNotificationReqBuilder struct {
  6423  	apiReq       *larkcore.ApiReq
  6424  	notification *Notification
  6425  }
  6426  
  6427  func NewPatchNotificationReqBuilder() *PatchNotificationReqBuilder {
  6428  	builder := &PatchNotificationReqBuilder{}
  6429  	builder.apiReq = &larkcore.ApiReq{
  6430  		PathParams:  larkcore.PathParams{},
  6431  		QueryParams: larkcore.QueryParams{},
  6432  	}
  6433  	return builder
  6434  }
  6435  
  6436  // push任务唯一id
  6437  //
  6438  // 示例值:6985032626234982420
  6439  func (builder *PatchNotificationReqBuilder) NotificationId(notificationId string) *PatchNotificationReqBuilder {
  6440  	builder.apiReq.PathParams.Set("notification_id", fmt.Sprint(notificationId))
  6441  	return builder
  6442  }
  6443  
  6444  // 此次调用中使用的用户ID的类型
  6445  //
  6446  // 示例值:
  6447  func (builder *PatchNotificationReqBuilder) UserIdType(userIdType string) *PatchNotificationReqBuilder {
  6448  	builder.apiReq.QueryParams.Set("user_id_type", fmt.Sprint(userIdType))
  6449  	return builder
  6450  }
  6451  
  6452  // 更新推送信息,只有在草稿状态下才可以调用此接口进行更新
  6453  func (builder *PatchNotificationReqBuilder) Notification(notification *Notification) *PatchNotificationReqBuilder {
  6454  	builder.notification = notification
  6455  	return builder
  6456  }
  6457  
  6458  func (builder *PatchNotificationReqBuilder) Build() *PatchNotificationReq {
  6459  	req := &PatchNotificationReq{}
  6460  	req.apiReq = &larkcore.ApiReq{}
  6461  	req.apiReq.PathParams = builder.apiReq.PathParams
  6462  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  6463  	req.apiReq.Body = builder.notification
  6464  	return req
  6465  }
  6466  
  6467  type PatchNotificationReq struct {
  6468  	apiReq       *larkcore.ApiReq
  6469  	Notification *Notification `body:""`
  6470  }
  6471  
  6472  type PatchNotificationResp struct {
  6473  	*larkcore.ApiResp `json:"-"`
  6474  	larkcore.CodeError
  6475  }
  6476  
  6477  func (resp *PatchNotificationResp) Success() bool {
  6478  	return resp.Code == 0
  6479  }
  6480  
  6481  type PreviewNotificationReqBuilder struct {
  6482  	apiReq *larkcore.ApiReq
  6483  }
  6484  
  6485  func NewPreviewNotificationReqBuilder() *PreviewNotificationReqBuilder {
  6486  	builder := &PreviewNotificationReqBuilder{}
  6487  	builder.apiReq = &larkcore.ApiReq{
  6488  		PathParams:  larkcore.PathParams{},
  6489  		QueryParams: larkcore.QueryParams{},
  6490  	}
  6491  	return builder
  6492  }
  6493  
  6494  // 创建推送接口成功后返回的唯一id
  6495  //
  6496  // 示例值:6985032626234982420
  6497  func (builder *PreviewNotificationReqBuilder) NotificationId(notificationId string) *PreviewNotificationReqBuilder {
  6498  	builder.apiReq.PathParams.Set("notification_id", fmt.Sprint(notificationId))
  6499  	return builder
  6500  }
  6501  
  6502  func (builder *PreviewNotificationReqBuilder) Build() *PreviewNotificationReq {
  6503  	req := &PreviewNotificationReq{}
  6504  	req.apiReq = &larkcore.ApiReq{}
  6505  	req.apiReq.PathParams = builder.apiReq.PathParams
  6506  	return req
  6507  }
  6508  
  6509  type PreviewNotificationReq struct {
  6510  	apiReq *larkcore.ApiReq
  6511  }
  6512  
  6513  type PreviewNotificationResp struct {
  6514  	*larkcore.ApiResp `json:"-"`
  6515  	larkcore.CodeError
  6516  }
  6517  
  6518  func (resp *PreviewNotificationResp) Success() bool {
  6519  	return resp.Code == 0
  6520  }
  6521  
  6522  type SubmitApproveNotificationReqBodyBuilder struct {
  6523  	reason     string // 提交审批理由
  6524  	reasonFlag bool
  6525  }
  6526  
  6527  func NewSubmitApproveNotificationReqBodyBuilder() *SubmitApproveNotificationReqBodyBuilder {
  6528  	builder := &SubmitApproveNotificationReqBodyBuilder{}
  6529  	return builder
  6530  }
  6531  
  6532  // 提交审批理由
  6533  //
  6534  //示例值:测试发送消息
  6535  func (builder *SubmitApproveNotificationReqBodyBuilder) Reason(reason string) *SubmitApproveNotificationReqBodyBuilder {
  6536  	builder.reason = reason
  6537  	builder.reasonFlag = true
  6538  	return builder
  6539  }
  6540  
  6541  func (builder *SubmitApproveNotificationReqBodyBuilder) Build() *SubmitApproveNotificationReqBody {
  6542  	req := &SubmitApproveNotificationReqBody{}
  6543  	if builder.reasonFlag {
  6544  		req.Reason = &builder.reason
  6545  	}
  6546  	return req
  6547  }
  6548  
  6549  type SubmitApproveNotificationPathReqBodyBuilder struct {
  6550  	reason     string // 提交审批理由
  6551  	reasonFlag bool
  6552  }
  6553  
  6554  func NewSubmitApproveNotificationPathReqBodyBuilder() *SubmitApproveNotificationPathReqBodyBuilder {
  6555  	builder := &SubmitApproveNotificationPathReqBodyBuilder{}
  6556  	return builder
  6557  }
  6558  
  6559  // 提交审批理由
  6560  //
  6561  // 示例值:测试发送消息
  6562  func (builder *SubmitApproveNotificationPathReqBodyBuilder) Reason(reason string) *SubmitApproveNotificationPathReqBodyBuilder {
  6563  	builder.reason = reason
  6564  	builder.reasonFlag = true
  6565  	return builder
  6566  }
  6567  
  6568  func (builder *SubmitApproveNotificationPathReqBodyBuilder) Build() (*SubmitApproveNotificationReqBody, error) {
  6569  	req := &SubmitApproveNotificationReqBody{}
  6570  	if builder.reasonFlag {
  6571  		req.Reason = &builder.reason
  6572  	}
  6573  	return req, nil
  6574  }
  6575  
  6576  type SubmitApproveNotificationReqBuilder struct {
  6577  	apiReq *larkcore.ApiReq
  6578  	body   *SubmitApproveNotificationReqBody
  6579  }
  6580  
  6581  func NewSubmitApproveNotificationReqBuilder() *SubmitApproveNotificationReqBuilder {
  6582  	builder := &SubmitApproveNotificationReqBuilder{}
  6583  	builder.apiReq = &larkcore.ApiReq{
  6584  		PathParams:  larkcore.PathParams{},
  6585  		QueryParams: larkcore.QueryParams{},
  6586  	}
  6587  	return builder
  6588  }
  6589  
  6590  // 创建接口返回的唯一id
  6591  //
  6592  // 示例值:6985032626234982420
  6593  func (builder *SubmitApproveNotificationReqBuilder) NotificationId(notificationId string) *SubmitApproveNotificationReqBuilder {
  6594  	builder.apiReq.PathParams.Set("notification_id", fmt.Sprint(notificationId))
  6595  	return builder
  6596  }
  6597  
  6598  // 正常情况下调用创建推送接口后,就可以调用提交审核接口,如果创建人是服务台owner则会自动审核通过,否则会通知服务台owner审核此推送信息
  6599  func (builder *SubmitApproveNotificationReqBuilder) Body(body *SubmitApproveNotificationReqBody) *SubmitApproveNotificationReqBuilder {
  6600  	builder.body = body
  6601  	return builder
  6602  }
  6603  
  6604  func (builder *SubmitApproveNotificationReqBuilder) Build() *SubmitApproveNotificationReq {
  6605  	req := &SubmitApproveNotificationReq{}
  6606  	req.apiReq = &larkcore.ApiReq{}
  6607  	req.apiReq.PathParams = builder.apiReq.PathParams
  6608  	req.apiReq.Body = builder.body
  6609  	return req
  6610  }
  6611  
  6612  type SubmitApproveNotificationReqBody struct {
  6613  	Reason *string `json:"reason,omitempty"` // 提交审批理由
  6614  }
  6615  
  6616  type SubmitApproveNotificationReq struct {
  6617  	apiReq *larkcore.ApiReq
  6618  	Body   *SubmitApproveNotificationReqBody `body:""`
  6619  }
  6620  
  6621  type SubmitApproveNotificationRespData struct {
  6622  	HasAccess *bool `json:"has_access,omitempty"` // 是否有权限创建或者管理审批流程 (有两种情况会导致没有权限: 1:用户没有安装服务台小程序,需要在https://app.feishu.cn/app/cli_9f9f8825d53b900d 安装小程序 2:用户安装的服务台小程序版本过低)
  6623  }
  6624  
  6625  type SubmitApproveNotificationResp struct {
  6626  	*larkcore.ApiResp `json:"-"`
  6627  	larkcore.CodeError
  6628  	Data *SubmitApproveNotificationRespData `json:"data"` // 业务数据
  6629  }
  6630  
  6631  func (resp *SubmitApproveNotificationResp) Success() bool {
  6632  	return resp.Code == 0
  6633  }
  6634  
  6635  type AnswerUserQueryTicketReqBodyBuilder struct {
  6636  	eventId     string // 事件ID,可从订阅事件中提取
  6637  	eventIdFlag bool
  6638  	faqs        []*UserQueryFaqInfo // faq结果列表
  6639  	faqsFlag    bool
  6640  }
  6641  
  6642  func NewAnswerUserQueryTicketReqBodyBuilder() *AnswerUserQueryTicketReqBodyBuilder {
  6643  	builder := &AnswerUserQueryTicketReqBodyBuilder{}
  6644  	return builder
  6645  }
  6646  
  6647  // 事件ID,可从订阅事件中提取
  6648  //
  6649  //示例值:abcd
  6650  func (builder *AnswerUserQueryTicketReqBodyBuilder) EventId(eventId string) *AnswerUserQueryTicketReqBodyBuilder {
  6651  	builder.eventId = eventId
  6652  	builder.eventIdFlag = true
  6653  	return builder
  6654  }
  6655  
  6656  // faq结果列表
  6657  //
  6658  //示例值:
  6659  func (builder *AnswerUserQueryTicketReqBodyBuilder) Faqs(faqs []*UserQueryFaqInfo) *AnswerUserQueryTicketReqBodyBuilder {
  6660  	builder.faqs = faqs
  6661  	builder.faqsFlag = true
  6662  	return builder
  6663  }
  6664  
  6665  func (builder *AnswerUserQueryTicketReqBodyBuilder) Build() *AnswerUserQueryTicketReqBody {
  6666  	req := &AnswerUserQueryTicketReqBody{}
  6667  	if builder.eventIdFlag {
  6668  		req.EventId = &builder.eventId
  6669  	}
  6670  	if builder.faqsFlag {
  6671  		req.Faqs = builder.faqs
  6672  	}
  6673  	return req
  6674  }
  6675  
  6676  type AnswerUserQueryTicketPathReqBodyBuilder struct {
  6677  	eventId     string // 事件ID,可从订阅事件中提取
  6678  	eventIdFlag bool
  6679  	faqs        []*UserQueryFaqInfo // faq结果列表
  6680  	faqsFlag    bool
  6681  }
  6682  
  6683  func NewAnswerUserQueryTicketPathReqBodyBuilder() *AnswerUserQueryTicketPathReqBodyBuilder {
  6684  	builder := &AnswerUserQueryTicketPathReqBodyBuilder{}
  6685  	return builder
  6686  }
  6687  
  6688  // 事件ID,可从订阅事件中提取
  6689  //
  6690  // 示例值:abcd
  6691  func (builder *AnswerUserQueryTicketPathReqBodyBuilder) EventId(eventId string) *AnswerUserQueryTicketPathReqBodyBuilder {
  6692  	builder.eventId = eventId
  6693  	builder.eventIdFlag = true
  6694  	return builder
  6695  }
  6696  
  6697  // faq结果列表
  6698  //
  6699  // 示例值:
  6700  func (builder *AnswerUserQueryTicketPathReqBodyBuilder) Faqs(faqs []*UserQueryFaqInfo) *AnswerUserQueryTicketPathReqBodyBuilder {
  6701  	builder.faqs = faqs
  6702  	builder.faqsFlag = true
  6703  	return builder
  6704  }
  6705  
  6706  func (builder *AnswerUserQueryTicketPathReqBodyBuilder) Build() (*AnswerUserQueryTicketReqBody, error) {
  6707  	req := &AnswerUserQueryTicketReqBody{}
  6708  	if builder.eventIdFlag {
  6709  		req.EventId = &builder.eventId
  6710  	}
  6711  	if builder.faqsFlag {
  6712  		req.Faqs = builder.faqs
  6713  	}
  6714  	return req, nil
  6715  }
  6716  
  6717  type AnswerUserQueryTicketReqBuilder struct {
  6718  	apiReq *larkcore.ApiReq
  6719  	body   *AnswerUserQueryTicketReqBody
  6720  }
  6721  
  6722  func NewAnswerUserQueryTicketReqBuilder() *AnswerUserQueryTicketReqBuilder {
  6723  	builder := &AnswerUserQueryTicketReqBuilder{}
  6724  	builder.apiReq = &larkcore.ApiReq{
  6725  		PathParams:  larkcore.PathParams{},
  6726  		QueryParams: larkcore.QueryParams{},
  6727  	}
  6728  	return builder
  6729  }
  6730  
  6731  // 工单ID
  6732  //
  6733  // 示例值:6945345902185807891
  6734  func (builder *AnswerUserQueryTicketReqBuilder) TicketId(ticketId string) *AnswerUserQueryTicketReqBuilder {
  6735  	builder.apiReq.PathParams.Set("ticket_id", fmt.Sprint(ticketId))
  6736  	return builder
  6737  }
  6738  
  6739  // 该接口用于回复用户提问结果至工单,需要工单仍处于进行中且未接入人工状态。仅支持自建应用。
  6740  func (builder *AnswerUserQueryTicketReqBuilder) Body(body *AnswerUserQueryTicketReqBody) *AnswerUserQueryTicketReqBuilder {
  6741  	builder.body = body
  6742  	return builder
  6743  }
  6744  
  6745  func (builder *AnswerUserQueryTicketReqBuilder) Build() *AnswerUserQueryTicketReq {
  6746  	req := &AnswerUserQueryTicketReq{}
  6747  	req.apiReq = &larkcore.ApiReq{}
  6748  	req.apiReq.PathParams = builder.apiReq.PathParams
  6749  	req.apiReq.Body = builder.body
  6750  	return req
  6751  }
  6752  
  6753  type AnswerUserQueryTicketReqBody struct {
  6754  	EventId *string             `json:"event_id,omitempty"` // 事件ID,可从订阅事件中提取
  6755  	Faqs    []*UserQueryFaqInfo `json:"faqs,omitempty"`     // faq结果列表
  6756  }
  6757  
  6758  type AnswerUserQueryTicketReq struct {
  6759  	apiReq *larkcore.ApiReq
  6760  	Body   *AnswerUserQueryTicketReqBody `body:""`
  6761  }
  6762  
  6763  type AnswerUserQueryTicketResp struct {
  6764  	*larkcore.ApiResp `json:"-"`
  6765  	larkcore.CodeError
  6766  }
  6767  
  6768  func (resp *AnswerUserQueryTicketResp) Success() bool {
  6769  	return resp.Code == 0
  6770  }
  6771  
  6772  type CustomizedFieldsTicketReqBuilder struct {
  6773  	apiReq *larkcore.ApiReq
  6774  }
  6775  
  6776  func NewCustomizedFieldsTicketReqBuilder() *CustomizedFieldsTicketReqBuilder {
  6777  	builder := &CustomizedFieldsTicketReqBuilder{}
  6778  	builder.apiReq = &larkcore.ApiReq{
  6779  		PathParams:  larkcore.PathParams{},
  6780  		QueryParams: larkcore.QueryParams{},
  6781  	}
  6782  	return builder
  6783  }
  6784  
  6785  // visible only
  6786  //
  6787  // 示例值:true
  6788  func (builder *CustomizedFieldsTicketReqBuilder) VisibleOnly(visibleOnly bool) *CustomizedFieldsTicketReqBuilder {
  6789  	builder.apiReq.QueryParams.Set("visible_only", fmt.Sprint(visibleOnly))
  6790  	return builder
  6791  }
  6792  
  6793  func (builder *CustomizedFieldsTicketReqBuilder) Build() *CustomizedFieldsTicketReq {
  6794  	req := &CustomizedFieldsTicketReq{}
  6795  	req.apiReq = &larkcore.ApiReq{}
  6796  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  6797  	return req
  6798  }
  6799  
  6800  type CustomizedFieldsTicketReq struct {
  6801  	apiReq *larkcore.ApiReq
  6802  }
  6803  
  6804  type CustomizedFieldsTicketRespData struct {
  6805  	UserCustomizedFields   []*UserCustomizedField   `json:"user_customized_fields,omitempty"`   // 用户自定义字段
  6806  	TicketCustomizedFields []*TicketCustomizedField `json:"ticket_customized_fields,omitempty"` // 自定义工单字段
  6807  }
  6808  
  6809  type CustomizedFieldsTicketResp struct {
  6810  	*larkcore.ApiResp `json:"-"`
  6811  	larkcore.CodeError
  6812  	Data *CustomizedFieldsTicketRespData `json:"data"` // 业务数据
  6813  }
  6814  
  6815  func (resp *CustomizedFieldsTicketResp) Success() bool {
  6816  	return resp.Code == 0
  6817  }
  6818  
  6819  type GetTicketReqBuilder struct {
  6820  	apiReq *larkcore.ApiReq
  6821  }
  6822  
  6823  func NewGetTicketReqBuilder() *GetTicketReqBuilder {
  6824  	builder := &GetTicketReqBuilder{}
  6825  	builder.apiReq = &larkcore.ApiReq{
  6826  		PathParams:  larkcore.PathParams{},
  6827  		QueryParams: larkcore.QueryParams{},
  6828  	}
  6829  	return builder
  6830  }
  6831  
  6832  // ticket id
  6833  //
  6834  // 示例值:123456
  6835  func (builder *GetTicketReqBuilder) TicketId(ticketId string) *GetTicketReqBuilder {
  6836  	builder.apiReq.PathParams.Set("ticket_id", fmt.Sprint(ticketId))
  6837  	return builder
  6838  }
  6839  
  6840  func (builder *GetTicketReqBuilder) Build() *GetTicketReq {
  6841  	req := &GetTicketReq{}
  6842  	req.apiReq = &larkcore.ApiReq{}
  6843  	req.apiReq.PathParams = builder.apiReq.PathParams
  6844  	return req
  6845  }
  6846  
  6847  type GetTicketReq struct {
  6848  	apiReq *larkcore.ApiReq
  6849  }
  6850  
  6851  type GetTicketRespData struct {
  6852  	Ticket *Ticket `json:"ticket,omitempty"` // 工单详情
  6853  }
  6854  
  6855  type GetTicketResp struct {
  6856  	*larkcore.ApiResp `json:"-"`
  6857  	larkcore.CodeError
  6858  	Data *GetTicketRespData `json:"data"` // 业务数据
  6859  }
  6860  
  6861  func (resp *GetTicketResp) Success() bool {
  6862  	return resp.Code == 0
  6863  }
  6864  
  6865  type ListTicketReqBuilder struct {
  6866  	apiReq *larkcore.ApiReq
  6867  }
  6868  
  6869  func NewListTicketReqBuilder() *ListTicketReqBuilder {
  6870  	builder := &ListTicketReqBuilder{}
  6871  	builder.apiReq = &larkcore.ApiReq{
  6872  		PathParams:  larkcore.PathParams{},
  6873  		QueryParams: larkcore.QueryParams{},
  6874  	}
  6875  	return builder
  6876  }
  6877  
  6878  // 搜索条件:工单ID
  6879  //
  6880  // 示例值:123456
  6881  func (builder *ListTicketReqBuilder) TicketId(ticketId string) *ListTicketReqBuilder {
  6882  	builder.apiReq.QueryParams.Set("ticket_id", fmt.Sprint(ticketId))
  6883  	return builder
  6884  }
  6885  
  6886  // 搜索条件: 客服id
  6887  //
  6888  // 示例值:ou_b5de90429xxx
  6889  func (builder *ListTicketReqBuilder) AgentId(agentId string) *ListTicketReqBuilder {
  6890  	builder.apiReq.QueryParams.Set("agent_id", fmt.Sprint(agentId))
  6891  	return builder
  6892  }
  6893  
  6894  // 搜索条件: 关单客服id
  6895  //
  6896  // 示例值:ou_b5de90429xxx
  6897  func (builder *ListTicketReqBuilder) ClosedById(closedById string) *ListTicketReqBuilder {
  6898  	builder.apiReq.QueryParams.Set("closed_by_id", fmt.Sprint(closedById))
  6899  	return builder
  6900  }
  6901  
  6902  // 搜索条件: 工单类型 1:bot 2:人工
  6903  //
  6904  // 示例值:1
  6905  func (builder *ListTicketReqBuilder) Type(type_ int) *ListTicketReqBuilder {
  6906  	builder.apiReq.QueryParams.Set("type", fmt.Sprint(type_))
  6907  	return builder
  6908  }
  6909  
  6910  // 搜索条件: 工单渠道
  6911  //
  6912  // 示例值:0
  6913  func (builder *ListTicketReqBuilder) Channel(channel int) *ListTicketReqBuilder {
  6914  	builder.apiReq.QueryParams.Set("channel", fmt.Sprint(channel))
  6915  	return builder
  6916  }
  6917  
  6918  // 搜索条件: 工单是否解决 1:没解决 2:已解决
  6919  //
  6920  // 示例值:1
  6921  func (builder *ListTicketReqBuilder) Solved(solved int) *ListTicketReqBuilder {
  6922  	builder.apiReq.QueryParams.Set("solved", fmt.Sprint(solved))
  6923  	return builder
  6924  }
  6925  
  6926  // 搜索条件: 工单评分
  6927  //
  6928  // 示例值:1
  6929  func (builder *ListTicketReqBuilder) Score(score int) *ListTicketReqBuilder {
  6930  	builder.apiReq.QueryParams.Set("score", fmt.Sprint(score))
  6931  	return builder
  6932  }
  6933  
  6934  // 搜索条件: 工单状态列表
  6935  //
  6936  // 示例值:1
  6937  func (builder *ListTicketReqBuilder) StatusList(statusList []int) *ListTicketReqBuilder {
  6938  	builder.apiReq.QueryParams.Set("status_list", fmt.Sprint(statusList))
  6939  	return builder
  6940  }
  6941  
  6942  // 搜索条件: 用户名称
  6943  //
  6944  // 示例值:abc
  6945  func (builder *ListTicketReqBuilder) GuestName(guestName string) *ListTicketReqBuilder {
  6946  	builder.apiReq.QueryParams.Set("guest_name", fmt.Sprint(guestName))
  6947  	return builder
  6948  }
  6949  
  6950  // 搜索条件: 用户id
  6951  //
  6952  // 示例值:ou_b5de90429xxx
  6953  func (builder *ListTicketReqBuilder) GuestId(guestId string) *ListTicketReqBuilder {
  6954  	builder.apiReq.QueryParams.Set("guest_id", fmt.Sprint(guestId))
  6955  	return builder
  6956  }
  6957  
  6958  // 搜索条件: 用户标签列表
  6959  //
  6960  // 示例值:备注
  6961  func (builder *ListTicketReqBuilder) Tags(tags []string) *ListTicketReqBuilder {
  6962  	builder.apiReq.QueryParams.Set("tags", fmt.Sprint(tags))
  6963  	return builder
  6964  }
  6965  
  6966  // 页数, 从1开始, 默认为1
  6967  //
  6968  // 示例值:1
  6969  func (builder *ListTicketReqBuilder) Page(page int) *ListTicketReqBuilder {
  6970  	builder.apiReq.QueryParams.Set("page", fmt.Sprint(page))
  6971  	return builder
  6972  }
  6973  
  6974  // 当前页大小,最大为200, 默认为20。分页查询最多累计返回一万条数据,超过一万条请更改查询条件,推荐通过时间查询。
  6975  //
  6976  // 示例值:20
  6977  func (builder *ListTicketReqBuilder) PageSize(pageSize int) *ListTicketReqBuilder {
  6978  	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
  6979  	return builder
  6980  }
  6981  
  6982  // 搜索条件: 工单创建起始时间 ms (也需要填上create_time_end),相当于>=create_time_start
  6983  //
  6984  // 示例值:1616920429000
  6985  func (builder *ListTicketReqBuilder) CreateTimeStart(createTimeStart int) *ListTicketReqBuilder {
  6986  	builder.apiReq.QueryParams.Set("create_time_start", fmt.Sprint(createTimeStart))
  6987  	return builder
  6988  }
  6989  
  6990  // 搜索条件: 工单创建结束时间 ms (也需要填上create_time_start),相当于<=create_time_end
  6991  //
  6992  // 示例值:1616920429000
  6993  func (builder *ListTicketReqBuilder) CreateTimeEnd(createTimeEnd int) *ListTicketReqBuilder {
  6994  	builder.apiReq.QueryParams.Set("create_time_end", fmt.Sprint(createTimeEnd))
  6995  	return builder
  6996  }
  6997  
  6998  // 搜索条件: 工单修改起始时间 ms (也需要填上update_time_end)
  6999  //
  7000  // 示例值:1616920429000
  7001  func (builder *ListTicketReqBuilder) UpdateTimeStart(updateTimeStart int) *ListTicketReqBuilder {
  7002  	builder.apiReq.QueryParams.Set("update_time_start", fmt.Sprint(updateTimeStart))
  7003  	return builder
  7004  }
  7005  
  7006  // 搜索条件: 工单修改结束时间 ms(也需要填上update_time_start)
  7007  //
  7008  // 示例值:1616920429000
  7009  func (builder *ListTicketReqBuilder) UpdateTimeEnd(updateTimeEnd int) *ListTicketReqBuilder {
  7010  	builder.apiReq.QueryParams.Set("update_time_end", fmt.Sprint(updateTimeEnd))
  7011  	return builder
  7012  }
  7013  
  7014  func (builder *ListTicketReqBuilder) Build() *ListTicketReq {
  7015  	req := &ListTicketReq{}
  7016  	req.apiReq = &larkcore.ApiReq{}
  7017  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  7018  	return req
  7019  }
  7020  
  7021  type ListTicketReq struct {
  7022  	apiReq *larkcore.ApiReq
  7023  }
  7024  
  7025  type ListTicketRespData struct {
  7026  	Total   *int      `json:"total,omitempty"`   // 工单总数 (单次请求最大为10000条)
  7027  	Tickets []*Ticket `json:"tickets,omitempty"` // 工单
  7028  }
  7029  
  7030  type ListTicketResp struct {
  7031  	*larkcore.ApiResp `json:"-"`
  7032  	larkcore.CodeError
  7033  	Data *ListTicketRespData `json:"data"` // 业务数据
  7034  }
  7035  
  7036  func (resp *ListTicketResp) Success() bool {
  7037  	return resp.Code == 0
  7038  }
  7039  
  7040  type StartServiceTicketReqBodyBuilder struct {
  7041  	humanService        bool // 是否直接进入人工(若appointed_agents填写了,该值为必填)
  7042  	humanServiceFlag    bool
  7043  	appointedAgents     []string // 客服 open ids (获取方式参考[获取单个用户信息](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get)),human_service需要为true
  7044  	appointedAgentsFlag bool
  7045  	openId              string // 用户 open id,(获取方式参考[获取单个用户信息](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get))
  7046  	openIdFlag          bool
  7047  	customizedInfo      string // 工单来源自定义信息,长度限制1024字符,如设置,[获取工单详情](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/get)会返回此信息
  7048  	customizedInfoFlag  bool
  7049  }
  7050  
  7051  func NewStartServiceTicketReqBodyBuilder() *StartServiceTicketReqBodyBuilder {
  7052  	builder := &StartServiceTicketReqBodyBuilder{}
  7053  	return builder
  7054  }
  7055  
  7056  // 是否直接进入人工(若appointed_agents填写了,该值为必填)
  7057  //
  7058  //示例值:false
  7059  func (builder *StartServiceTicketReqBodyBuilder) HumanService(humanService bool) *StartServiceTicketReqBodyBuilder {
  7060  	builder.humanService = humanService
  7061  	builder.humanServiceFlag = true
  7062  	return builder
  7063  }
  7064  
  7065  // 客服 open ids (获取方式参考[获取单个用户信息](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get)),human_service需要为true
  7066  //
  7067  //示例值:[ou_7dab8a3d3cdcc9da365777c7ad535d62]
  7068  func (builder *StartServiceTicketReqBodyBuilder) AppointedAgents(appointedAgents []string) *StartServiceTicketReqBodyBuilder {
  7069  	builder.appointedAgents = appointedAgents
  7070  	builder.appointedAgentsFlag = true
  7071  	return builder
  7072  }
  7073  
  7074  // 用户 open id,(获取方式参考[获取单个用户信息](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get))
  7075  //
  7076  //示例值:ou_7dab8a3d3cdcc9da365777c7ad535d62
  7077  func (builder *StartServiceTicketReqBodyBuilder) OpenId(openId string) *StartServiceTicketReqBodyBuilder {
  7078  	builder.openId = openId
  7079  	builder.openIdFlag = true
  7080  	return builder
  7081  }
  7082  
  7083  // 工单来源自定义信息,长度限制1024字符,如设置,[获取工单详情](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/get)会返回此信息
  7084  //
  7085  //示例值:测试自定义字段信息
  7086  func (builder *StartServiceTicketReqBodyBuilder) CustomizedInfo(customizedInfo string) *StartServiceTicketReqBodyBuilder {
  7087  	builder.customizedInfo = customizedInfo
  7088  	builder.customizedInfoFlag = true
  7089  	return builder
  7090  }
  7091  
  7092  func (builder *StartServiceTicketReqBodyBuilder) Build() *StartServiceTicketReqBody {
  7093  	req := &StartServiceTicketReqBody{}
  7094  	if builder.humanServiceFlag {
  7095  		req.HumanService = &builder.humanService
  7096  	}
  7097  	if builder.appointedAgentsFlag {
  7098  		req.AppointedAgents = builder.appointedAgents
  7099  	}
  7100  	if builder.openIdFlag {
  7101  		req.OpenId = &builder.openId
  7102  	}
  7103  	if builder.customizedInfoFlag {
  7104  		req.CustomizedInfo = &builder.customizedInfo
  7105  	}
  7106  	return req
  7107  }
  7108  
  7109  type StartServiceTicketPathReqBodyBuilder struct {
  7110  	humanService        bool // 是否直接进入人工(若appointed_agents填写了,该值为必填)
  7111  	humanServiceFlag    bool
  7112  	appointedAgents     []string // 客服 open ids (获取方式参考[获取单个用户信息](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get)),human_service需要为true
  7113  	appointedAgentsFlag bool
  7114  	openId              string // 用户 open id,(获取方式参考[获取单个用户信息](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get))
  7115  	openIdFlag          bool
  7116  	customizedInfo      string // 工单来源自定义信息,长度限制1024字符,如设置,[获取工单详情](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/get)会返回此信息
  7117  	customizedInfoFlag  bool
  7118  }
  7119  
  7120  func NewStartServiceTicketPathReqBodyBuilder() *StartServiceTicketPathReqBodyBuilder {
  7121  	builder := &StartServiceTicketPathReqBodyBuilder{}
  7122  	return builder
  7123  }
  7124  
  7125  // 是否直接进入人工(若appointed_agents填写了,该值为必填)
  7126  //
  7127  // 示例值:false
  7128  func (builder *StartServiceTicketPathReqBodyBuilder) HumanService(humanService bool) *StartServiceTicketPathReqBodyBuilder {
  7129  	builder.humanService = humanService
  7130  	builder.humanServiceFlag = true
  7131  	return builder
  7132  }
  7133  
  7134  // 客服 open ids (获取方式参考[获取单个用户信息](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get)),human_service需要为true
  7135  //
  7136  // 示例值:[ou_7dab8a3d3cdcc9da365777c7ad535d62]
  7137  func (builder *StartServiceTicketPathReqBodyBuilder) AppointedAgents(appointedAgents []string) *StartServiceTicketPathReqBodyBuilder {
  7138  	builder.appointedAgents = appointedAgents
  7139  	builder.appointedAgentsFlag = true
  7140  	return builder
  7141  }
  7142  
  7143  // 用户 open id,(获取方式参考[获取单个用户信息](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get))
  7144  //
  7145  // 示例值:ou_7dab8a3d3cdcc9da365777c7ad535d62
  7146  func (builder *StartServiceTicketPathReqBodyBuilder) OpenId(openId string) *StartServiceTicketPathReqBodyBuilder {
  7147  	builder.openId = openId
  7148  	builder.openIdFlag = true
  7149  	return builder
  7150  }
  7151  
  7152  // 工单来源自定义信息,长度限制1024字符,如设置,[获取工单详情](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/get)会返回此信息
  7153  //
  7154  // 示例值:测试自定义字段信息
  7155  func (builder *StartServiceTicketPathReqBodyBuilder) CustomizedInfo(customizedInfo string) *StartServiceTicketPathReqBodyBuilder {
  7156  	builder.customizedInfo = customizedInfo
  7157  	builder.customizedInfoFlag = true
  7158  	return builder
  7159  }
  7160  
  7161  func (builder *StartServiceTicketPathReqBodyBuilder) Build() (*StartServiceTicketReqBody, error) {
  7162  	req := &StartServiceTicketReqBody{}
  7163  	if builder.humanServiceFlag {
  7164  		req.HumanService = &builder.humanService
  7165  	}
  7166  	if builder.appointedAgentsFlag {
  7167  		req.AppointedAgents = builder.appointedAgents
  7168  	}
  7169  	if builder.openIdFlag {
  7170  		req.OpenId = &builder.openId
  7171  	}
  7172  	if builder.customizedInfoFlag {
  7173  		req.CustomizedInfo = &builder.customizedInfo
  7174  	}
  7175  	return req, nil
  7176  }
  7177  
  7178  type StartServiceTicketReqBuilder struct {
  7179  	apiReq *larkcore.ApiReq
  7180  	body   *StartServiceTicketReqBody
  7181  }
  7182  
  7183  func NewStartServiceTicketReqBuilder() *StartServiceTicketReqBuilder {
  7184  	builder := &StartServiceTicketReqBuilder{}
  7185  	builder.apiReq = &larkcore.ApiReq{
  7186  		PathParams:  larkcore.PathParams{},
  7187  		QueryParams: larkcore.QueryParams{},
  7188  	}
  7189  	return builder
  7190  }
  7191  
  7192  // 该接口用于创建服务台对话。
  7193  func (builder *StartServiceTicketReqBuilder) Body(body *StartServiceTicketReqBody) *StartServiceTicketReqBuilder {
  7194  	builder.body = body
  7195  	return builder
  7196  }
  7197  
  7198  func (builder *StartServiceTicketReqBuilder) Build() *StartServiceTicketReq {
  7199  	req := &StartServiceTicketReq{}
  7200  	req.apiReq = &larkcore.ApiReq{}
  7201  	req.apiReq.Body = builder.body
  7202  	return req
  7203  }
  7204  
  7205  type StartServiceTicketReqBody struct {
  7206  	HumanService    *bool    `json:"human_service,omitempty"`    // 是否直接进入人工(若appointed_agents填写了,该值为必填)
  7207  	AppointedAgents []string `json:"appointed_agents,omitempty"` // 客服 open ids (获取方式参考[获取单个用户信息](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get)),human_service需要为true
  7208  	OpenId          *string  `json:"open_id,omitempty"`          // 用户 open id,(获取方式参考[获取单个用户信息](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/get))
  7209  	CustomizedInfo  *string  `json:"customized_info,omitempty"`  // 工单来源自定义信息,长度限制1024字符,如设置,[获取工单详情](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket/get)会返回此信息
  7210  }
  7211  
  7212  type StartServiceTicketReq struct {
  7213  	apiReq *larkcore.ApiReq
  7214  	Body   *StartServiceTicketReqBody `body:""`
  7215  }
  7216  
  7217  type StartServiceTicketRespData struct {
  7218  	ChatId *string `json:"chat_id,omitempty"` // 客服群open ID
  7219  }
  7220  
  7221  type StartServiceTicketResp struct {
  7222  	*larkcore.ApiResp `json:"-"`
  7223  	larkcore.CodeError
  7224  	Data *StartServiceTicketRespData `json:"data"` // 业务数据
  7225  }
  7226  
  7227  func (resp *StartServiceTicketResp) Success() bool {
  7228  	return resp.Code == 0
  7229  }
  7230  
  7231  type TicketImageTicketReqBuilder struct {
  7232  	apiReq *larkcore.ApiReq
  7233  }
  7234  
  7235  func NewTicketImageTicketReqBuilder() *TicketImageTicketReqBuilder {
  7236  	builder := &TicketImageTicketReqBuilder{}
  7237  	builder.apiReq = &larkcore.ApiReq{
  7238  		PathParams:  larkcore.PathParams{},
  7239  		QueryParams: larkcore.QueryParams{},
  7240  	}
  7241  	return builder
  7242  }
  7243  
  7244  // 工单ID
  7245  //
  7246  // 示例值:12345
  7247  func (builder *TicketImageTicketReqBuilder) TicketId(ticketId string) *TicketImageTicketReqBuilder {
  7248  	builder.apiReq.QueryParams.Set("ticket_id", fmt.Sprint(ticketId))
  7249  	return builder
  7250  }
  7251  
  7252  // 消息ID;;[查询消息ID](/ssl:ttdoc/uAjLw4CM/ukTMukTMukTM/helpdesk-v1/ticket-message/list)
  7253  //
  7254  // 示例值:12345
  7255  func (builder *TicketImageTicketReqBuilder) MsgId(msgId string) *TicketImageTicketReqBuilder {
  7256  	builder.apiReq.QueryParams.Set("msg_id", fmt.Sprint(msgId))
  7257  	return builder
  7258  }
  7259  
  7260  // index,当消息类型为post时,需指定图片index,index从0开始。当消息类型为img时,无需index
  7261  //
  7262  // 示例值:0
  7263  func (builder *TicketImageTicketReqBuilder) Index(index int) *TicketImageTicketReqBuilder {
  7264  	builder.apiReq.QueryParams.Set("index", fmt.Sprint(index))
  7265  	return builder
  7266  }
  7267  
  7268  func (builder *TicketImageTicketReqBuilder) Build() *TicketImageTicketReq {
  7269  	req := &TicketImageTicketReq{}
  7270  	req.apiReq = &larkcore.ApiReq{}
  7271  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  7272  	return req
  7273  }
  7274  
  7275  type TicketImageTicketReq struct {
  7276  	apiReq *larkcore.ApiReq
  7277  }
  7278  
  7279  type TicketImageTicketResp struct {
  7280  	*larkcore.ApiResp `json:"-"`
  7281  	larkcore.CodeError
  7282  	File     io.Reader `json:"-"`
  7283  	FileName string    `json:"-"`
  7284  }
  7285  
  7286  func (resp *TicketImageTicketResp) Success() bool {
  7287  	return resp.Code == 0
  7288  }
  7289  
  7290  func (resp *TicketImageTicketResp) WriteFile(fileName string) error {
  7291  	bs, err := ioutil.ReadAll(resp.File)
  7292  	if err != nil {
  7293  		return err
  7294  	}
  7295  
  7296  	err = ioutil.WriteFile(fileName, bs, 0666)
  7297  	if err != nil {
  7298  		return err
  7299  	}
  7300  	return nil
  7301  }
  7302  
  7303  type UpdateTicketReqBodyBuilder struct {
  7304  	status               int // new status, 1: 已创建, 2: 处理中, 3: 排队中, 5: 待定, 50: 机器人关闭工单, 51: 关闭工单
  7305  	statusFlag           bool
  7306  	tagNames             []string // 新标签名
  7307  	tagNamesFlag         bool
  7308  	comment              string // 新评论
  7309  	commentFlag          bool
  7310  	customizedFields     []*CustomizedFieldDisplayItem // 自定义字段
  7311  	customizedFieldsFlag bool
  7312  	ticketType           int // ticket stage
  7313  	ticketTypeFlag       bool
  7314  	solved               int // 工单是否解决,1: 未解决, 2: 已解决
  7315  	solvedFlag           bool
  7316  	channel              int // 工单来源渠道ID
  7317  	channelFlag          bool
  7318  }
  7319  
  7320  func NewUpdateTicketReqBodyBuilder() *UpdateTicketReqBodyBuilder {
  7321  	builder := &UpdateTicketReqBodyBuilder{}
  7322  	return builder
  7323  }
  7324  
  7325  // new status, 1: 已创建, 2: 处理中, 3: 排队中, 5: 待定, 50: 机器人关闭工单, 51: 关闭工单
  7326  //
  7327  //示例值:1
  7328  func (builder *UpdateTicketReqBodyBuilder) Status(status int) *UpdateTicketReqBodyBuilder {
  7329  	builder.status = status
  7330  	builder.statusFlag = true
  7331  	return builder
  7332  }
  7333  
  7334  // 新标签名
  7335  //
  7336  //示例值:abc
  7337  func (builder *UpdateTicketReqBodyBuilder) TagNames(tagNames []string) *UpdateTicketReqBodyBuilder {
  7338  	builder.tagNames = tagNames
  7339  	builder.tagNamesFlag = true
  7340  	return builder
  7341  }
  7342  
  7343  // 新评论
  7344  //
  7345  //示例值:good
  7346  func (builder *UpdateTicketReqBodyBuilder) Comment(comment string) *UpdateTicketReqBodyBuilder {
  7347  	builder.comment = comment
  7348  	builder.commentFlag = true
  7349  	return builder
  7350  }
  7351  
  7352  // 自定义字段
  7353  //
  7354  //示例值:
  7355  func (builder *UpdateTicketReqBodyBuilder) CustomizedFields(customizedFields []*CustomizedFieldDisplayItem) *UpdateTicketReqBodyBuilder {
  7356  	builder.customizedFields = customizedFields
  7357  	builder.customizedFieldsFlag = true
  7358  	return builder
  7359  }
  7360  
  7361  // ticket stage
  7362  //
  7363  //示例值:1
  7364  func (builder *UpdateTicketReqBodyBuilder) TicketType(ticketType int) *UpdateTicketReqBodyBuilder {
  7365  	builder.ticketType = ticketType
  7366  	builder.ticketTypeFlag = true
  7367  	return builder
  7368  }
  7369  
  7370  // 工单是否解决,1: 未解决, 2: 已解决
  7371  //
  7372  //示例值:1
  7373  func (builder *UpdateTicketReqBodyBuilder) Solved(solved int) *UpdateTicketReqBodyBuilder {
  7374  	builder.solved = solved
  7375  	builder.solvedFlag = true
  7376  	return builder
  7377  }
  7378  
  7379  // 工单来源渠道ID
  7380  //
  7381  //示例值:1
  7382  func (builder *UpdateTicketReqBodyBuilder) Channel(channel int) *UpdateTicketReqBodyBuilder {
  7383  	builder.channel = channel
  7384  	builder.channelFlag = true
  7385  	return builder
  7386  }
  7387  
  7388  func (builder *UpdateTicketReqBodyBuilder) Build() *UpdateTicketReqBody {
  7389  	req := &UpdateTicketReqBody{}
  7390  	if builder.statusFlag {
  7391  		req.Status = &builder.status
  7392  	}
  7393  	if builder.tagNamesFlag {
  7394  		req.TagNames = builder.tagNames
  7395  	}
  7396  	if builder.commentFlag {
  7397  		req.Comment = &builder.comment
  7398  	}
  7399  	if builder.customizedFieldsFlag {
  7400  		req.CustomizedFields = builder.customizedFields
  7401  	}
  7402  	if builder.ticketTypeFlag {
  7403  		req.TicketType = &builder.ticketType
  7404  	}
  7405  	if builder.solvedFlag {
  7406  		req.Solved = &builder.solved
  7407  	}
  7408  	if builder.channelFlag {
  7409  		req.Channel = &builder.channel
  7410  	}
  7411  	return req
  7412  }
  7413  
  7414  type UpdateTicketPathReqBodyBuilder struct {
  7415  	status               int // new status, 1: 已创建, 2: 处理中, 3: 排队中, 5: 待定, 50: 机器人关闭工单, 51: 关闭工单
  7416  	statusFlag           bool
  7417  	tagNames             []string // 新标签名
  7418  	tagNamesFlag         bool
  7419  	comment              string // 新评论
  7420  	commentFlag          bool
  7421  	customizedFields     []*CustomizedFieldDisplayItem // 自定义字段
  7422  	customizedFieldsFlag bool
  7423  	ticketType           int // ticket stage
  7424  	ticketTypeFlag       bool
  7425  	solved               int // 工单是否解决,1: 未解决, 2: 已解决
  7426  	solvedFlag           bool
  7427  	channel              int // 工单来源渠道ID
  7428  	channelFlag          bool
  7429  }
  7430  
  7431  func NewUpdateTicketPathReqBodyBuilder() *UpdateTicketPathReqBodyBuilder {
  7432  	builder := &UpdateTicketPathReqBodyBuilder{}
  7433  	return builder
  7434  }
  7435  
  7436  // new status, 1: 已创建, 2: 处理中, 3: 排队中, 5: 待定, 50: 机器人关闭工单, 51: 关闭工单
  7437  //
  7438  // 示例值:1
  7439  func (builder *UpdateTicketPathReqBodyBuilder) Status(status int) *UpdateTicketPathReqBodyBuilder {
  7440  	builder.status = status
  7441  	builder.statusFlag = true
  7442  	return builder
  7443  }
  7444  
  7445  // 新标签名
  7446  //
  7447  // 示例值:abc
  7448  func (builder *UpdateTicketPathReqBodyBuilder) TagNames(tagNames []string) *UpdateTicketPathReqBodyBuilder {
  7449  	builder.tagNames = tagNames
  7450  	builder.tagNamesFlag = true
  7451  	return builder
  7452  }
  7453  
  7454  // 新评论
  7455  //
  7456  // 示例值:good
  7457  func (builder *UpdateTicketPathReqBodyBuilder) Comment(comment string) *UpdateTicketPathReqBodyBuilder {
  7458  	builder.comment = comment
  7459  	builder.commentFlag = true
  7460  	return builder
  7461  }
  7462  
  7463  // 自定义字段
  7464  //
  7465  // 示例值:
  7466  func (builder *UpdateTicketPathReqBodyBuilder) CustomizedFields(customizedFields []*CustomizedFieldDisplayItem) *UpdateTicketPathReqBodyBuilder {
  7467  	builder.customizedFields = customizedFields
  7468  	builder.customizedFieldsFlag = true
  7469  	return builder
  7470  }
  7471  
  7472  // ticket stage
  7473  //
  7474  // 示例值:1
  7475  func (builder *UpdateTicketPathReqBodyBuilder) TicketType(ticketType int) *UpdateTicketPathReqBodyBuilder {
  7476  	builder.ticketType = ticketType
  7477  	builder.ticketTypeFlag = true
  7478  	return builder
  7479  }
  7480  
  7481  // 工单是否解决,1: 未解决, 2: 已解决
  7482  //
  7483  // 示例值:1
  7484  func (builder *UpdateTicketPathReqBodyBuilder) Solved(solved int) *UpdateTicketPathReqBodyBuilder {
  7485  	builder.solved = solved
  7486  	builder.solvedFlag = true
  7487  	return builder
  7488  }
  7489  
  7490  // 工单来源渠道ID
  7491  //
  7492  // 示例值:1
  7493  func (builder *UpdateTicketPathReqBodyBuilder) Channel(channel int) *UpdateTicketPathReqBodyBuilder {
  7494  	builder.channel = channel
  7495  	builder.channelFlag = true
  7496  	return builder
  7497  }
  7498  
  7499  func (builder *UpdateTicketPathReqBodyBuilder) Build() (*UpdateTicketReqBody, error) {
  7500  	req := &UpdateTicketReqBody{}
  7501  	if builder.statusFlag {
  7502  		req.Status = &builder.status
  7503  	}
  7504  	if builder.tagNamesFlag {
  7505  		req.TagNames = builder.tagNames
  7506  	}
  7507  	if builder.commentFlag {
  7508  		req.Comment = &builder.comment
  7509  	}
  7510  	if builder.customizedFieldsFlag {
  7511  		req.CustomizedFields = builder.customizedFields
  7512  	}
  7513  	if builder.ticketTypeFlag {
  7514  		req.TicketType = &builder.ticketType
  7515  	}
  7516  	if builder.solvedFlag {
  7517  		req.Solved = &builder.solved
  7518  	}
  7519  	if builder.channelFlag {
  7520  		req.Channel = &builder.channel
  7521  	}
  7522  	return req, nil
  7523  }
  7524  
  7525  type UpdateTicketReqBuilder struct {
  7526  	apiReq *larkcore.ApiReq
  7527  	body   *UpdateTicketReqBody
  7528  }
  7529  
  7530  func NewUpdateTicketReqBuilder() *UpdateTicketReqBuilder {
  7531  	builder := &UpdateTicketReqBuilder{}
  7532  	builder.apiReq = &larkcore.ApiReq{
  7533  		PathParams:  larkcore.PathParams{},
  7534  		QueryParams: larkcore.QueryParams{},
  7535  	}
  7536  	return builder
  7537  }
  7538  
  7539  // 工单ID
  7540  //
  7541  // 示例值:6945345902185807891
  7542  func (builder *UpdateTicketReqBuilder) TicketId(ticketId string) *UpdateTicketReqBuilder {
  7543  	builder.apiReq.PathParams.Set("ticket_id", fmt.Sprint(ticketId))
  7544  	return builder
  7545  }
  7546  
  7547  // 该接口用于更新服务台工单详情。只会更新数据,不会触发相关操作。如修改工单状态到关单,不会关闭聊天页面。仅支持自建应用。要更新的工单字段必须至少输入一项。
  7548  func (builder *UpdateTicketReqBuilder) Body(body *UpdateTicketReqBody) *UpdateTicketReqBuilder {
  7549  	builder.body = body
  7550  	return builder
  7551  }
  7552  
  7553  func (builder *UpdateTicketReqBuilder) Build() *UpdateTicketReq {
  7554  	req := &UpdateTicketReq{}
  7555  	req.apiReq = &larkcore.ApiReq{}
  7556  	req.apiReq.PathParams = builder.apiReq.PathParams
  7557  	req.apiReq.Body = builder.body
  7558  	return req
  7559  }
  7560  
  7561  type UpdateTicketReqBody struct {
  7562  	Status           *int                          `json:"status,omitempty"`            // new status, 1: 已创建, 2: 处理中, 3: 排队中, 5: 待定, 50: 机器人关闭工单, 51: 关闭工单
  7563  	TagNames         []string                      `json:"tag_names,omitempty"`         // 新标签名
  7564  	Comment          *string                       `json:"comment,omitempty"`           // 新评论
  7565  	CustomizedFields []*CustomizedFieldDisplayItem `json:"customized_fields,omitempty"` // 自定义字段
  7566  	TicketType       *int                          `json:"ticket_type,omitempty"`       // ticket stage
  7567  	Solved           *int                          `json:"solved,omitempty"`            // 工单是否解决,1: 未解决, 2: 已解决
  7568  	Channel          *int                          `json:"channel,omitempty"`           // 工单来源渠道ID
  7569  }
  7570  
  7571  type UpdateTicketReq struct {
  7572  	apiReq *larkcore.ApiReq
  7573  	Body   *UpdateTicketReqBody `body:""`
  7574  }
  7575  
  7576  type UpdateTicketResp struct {
  7577  	*larkcore.ApiResp `json:"-"`
  7578  	larkcore.CodeError
  7579  }
  7580  
  7581  func (resp *UpdateTicketResp) Success() bool {
  7582  	return resp.Code == 0
  7583  }
  7584  
  7585  type CreateTicketMessageReqBodyBuilder struct {
  7586  	msgType     string // 消息类型;text:纯文本;post:富文本
  7587  	msgTypeFlag bool
  7588  	content     string // - 纯文本,参考[发送文本消息](/ssl:ttdoc/ukTMukTMukTM/uUjNz4SN2MjL1YzM)中的content;;- 富文本,参考[发送富文本消息](/ssl:ttdoc/ukTMukTMukTM/uMDMxEjLzATMx4yMwETM)中的content
  7589  	contentFlag bool
  7590  }
  7591  
  7592  func NewCreateTicketMessageReqBodyBuilder() *CreateTicketMessageReqBodyBuilder {
  7593  	builder := &CreateTicketMessageReqBodyBuilder{}
  7594  	return builder
  7595  }
  7596  
  7597  // 消息类型;text:纯文本;post:富文本
  7598  //
  7599  //示例值:post
  7600  func (builder *CreateTicketMessageReqBodyBuilder) MsgType(msgType string) *CreateTicketMessageReqBodyBuilder {
  7601  	builder.msgType = msgType
  7602  	builder.msgTypeFlag = true
  7603  	return builder
  7604  }
  7605  
  7606  // - 纯文本,参考[发送文本消息](/ssl:ttdoc/ukTMukTMukTM/uUjNz4SN2MjL1YzM)中的content;;- 富文本,参考[发送富文本消息](/ssl:ttdoc/ukTMukTMukTM/uMDMxEjLzATMx4yMwETM)中的content
  7607  //
  7608  //示例值:{;	"msg_type": "post",;	"content": {;		"post": {;			"zh_cn": {;				"title": "this is title",;				"content": [;					[;						{;							"tag": "text",;							"un_escape": true,;							"text": "第一行&nbsp;:";						},;						{;							"tag": "a",;							"text": "超链接",;							"href": "http://www.feishu.cn";						};					],;					[;						{;							"tag": "text",;							"text": "第二行 :";						},;						{;							"tag": "text",;							"text": "文本测试";						};					];				];			};		};	};}
  7609  func (builder *CreateTicketMessageReqBodyBuilder) Content(content string) *CreateTicketMessageReqBodyBuilder {
  7610  	builder.content = content
  7611  	builder.contentFlag = true
  7612  	return builder
  7613  }
  7614  
  7615  func (builder *CreateTicketMessageReqBodyBuilder) Build() *CreateTicketMessageReqBody {
  7616  	req := &CreateTicketMessageReqBody{}
  7617  	if builder.msgTypeFlag {
  7618  		req.MsgType = &builder.msgType
  7619  	}
  7620  	if builder.contentFlag {
  7621  		req.Content = &builder.content
  7622  	}
  7623  	return req
  7624  }
  7625  
  7626  type CreateTicketMessagePathReqBodyBuilder struct {
  7627  	msgType     string // 消息类型;text:纯文本;post:富文本
  7628  	msgTypeFlag bool
  7629  	content     string // - 纯文本,参考[发送文本消息](/ssl:ttdoc/ukTMukTMukTM/uUjNz4SN2MjL1YzM)中的content;;- 富文本,参考[发送富文本消息](/ssl:ttdoc/ukTMukTMukTM/uMDMxEjLzATMx4yMwETM)中的content
  7630  	contentFlag bool
  7631  }
  7632  
  7633  func NewCreateTicketMessagePathReqBodyBuilder() *CreateTicketMessagePathReqBodyBuilder {
  7634  	builder := &CreateTicketMessagePathReqBodyBuilder{}
  7635  	return builder
  7636  }
  7637  
  7638  // 消息类型;text:纯文本;post:富文本
  7639  //
  7640  // 示例值:post
  7641  func (builder *CreateTicketMessagePathReqBodyBuilder) MsgType(msgType string) *CreateTicketMessagePathReqBodyBuilder {
  7642  	builder.msgType = msgType
  7643  	builder.msgTypeFlag = true
  7644  	return builder
  7645  }
  7646  
  7647  // - 纯文本,参考[发送文本消息](/ssl:ttdoc/ukTMukTMukTM/uUjNz4SN2MjL1YzM)中的content;;- 富文本,参考[发送富文本消息](/ssl:ttdoc/ukTMukTMukTM/uMDMxEjLzATMx4yMwETM)中的content
  7648  //
  7649  // 示例值:{;	"msg_type": "post",;	"content": {;		"post": {;			"zh_cn": {;				"title": "this is title",;				"content": [;					[;						{;							"tag": "text",;							"un_escape": true,;							"text": "第一行&nbsp;:";						},;						{;							"tag": "a",;							"text": "超链接",;							"href": "http://www.feishu.cn";						};					],;					[;						{;							"tag": "text",;							"text": "第二行 :";						},;						{;							"tag": "text",;							"text": "文本测试";						};					];				];			};		};	};}
  7650  func (builder *CreateTicketMessagePathReqBodyBuilder) Content(content string) *CreateTicketMessagePathReqBodyBuilder {
  7651  	builder.content = content
  7652  	builder.contentFlag = true
  7653  	return builder
  7654  }
  7655  
  7656  func (builder *CreateTicketMessagePathReqBodyBuilder) Build() (*CreateTicketMessageReqBody, error) {
  7657  	req := &CreateTicketMessageReqBody{}
  7658  	if builder.msgTypeFlag {
  7659  		req.MsgType = &builder.msgType
  7660  	}
  7661  	if builder.contentFlag {
  7662  		req.Content = &builder.content
  7663  	}
  7664  	return req, nil
  7665  }
  7666  
  7667  type CreateTicketMessageReqBuilder struct {
  7668  	apiReq *larkcore.ApiReq
  7669  	body   *CreateTicketMessageReqBody
  7670  }
  7671  
  7672  func NewCreateTicketMessageReqBuilder() *CreateTicketMessageReqBuilder {
  7673  	builder := &CreateTicketMessageReqBuilder{}
  7674  	builder.apiReq = &larkcore.ApiReq{
  7675  		PathParams:  larkcore.PathParams{},
  7676  		QueryParams: larkcore.QueryParams{},
  7677  	}
  7678  	return builder
  7679  }
  7680  
  7681  // 工单ID
  7682  //
  7683  // 示例值:6948728206392295444
  7684  func (builder *CreateTicketMessageReqBuilder) TicketId(ticketId string) *CreateTicketMessageReqBuilder {
  7685  	builder.apiReq.PathParams.Set("ticket_id", fmt.Sprint(ticketId))
  7686  	return builder
  7687  }
  7688  
  7689  // 该接口用于工单发送消息。
  7690  func (builder *CreateTicketMessageReqBuilder) Body(body *CreateTicketMessageReqBody) *CreateTicketMessageReqBuilder {
  7691  	builder.body = body
  7692  	return builder
  7693  }
  7694  
  7695  func (builder *CreateTicketMessageReqBuilder) Build() *CreateTicketMessageReq {
  7696  	req := &CreateTicketMessageReq{}
  7697  	req.apiReq = &larkcore.ApiReq{}
  7698  	req.apiReq.PathParams = builder.apiReq.PathParams
  7699  	req.apiReq.Body = builder.body
  7700  	return req
  7701  }
  7702  
  7703  type CreateTicketMessageReqBody struct {
  7704  	MsgType *string `json:"msg_type,omitempty"` // 消息类型;text:纯文本;post:富文本
  7705  	Content *string `json:"content,omitempty"`  // - 纯文本,参考[发送文本消息](/ssl:ttdoc/ukTMukTMukTM/uUjNz4SN2MjL1YzM)中的content;;- 富文本,参考[发送富文本消息](/ssl:ttdoc/ukTMukTMukTM/uMDMxEjLzATMx4yMwETM)中的content
  7706  }
  7707  
  7708  type CreateTicketMessageReq struct {
  7709  	apiReq *larkcore.ApiReq
  7710  	Body   *CreateTicketMessageReqBody `body:""`
  7711  }
  7712  
  7713  type CreateTicketMessageRespData struct {
  7714  	MessageId *string `json:"message_id,omitempty"` // chat消息open ID
  7715  }
  7716  
  7717  type CreateTicketMessageResp struct {
  7718  	*larkcore.ApiResp `json:"-"`
  7719  	larkcore.CodeError
  7720  	Data *CreateTicketMessageRespData `json:"data"` // 业务数据
  7721  }
  7722  
  7723  func (resp *CreateTicketMessageResp) Success() bool {
  7724  	return resp.Code == 0
  7725  }
  7726  
  7727  type ListTicketMessageReqBuilder struct {
  7728  	apiReq *larkcore.ApiReq
  7729  }
  7730  
  7731  func NewListTicketMessageReqBuilder() *ListTicketMessageReqBuilder {
  7732  	builder := &ListTicketMessageReqBuilder{}
  7733  	builder.apiReq = &larkcore.ApiReq{
  7734  		PathParams:  larkcore.PathParams{},
  7735  		QueryParams: larkcore.QueryParams{},
  7736  	}
  7737  	return builder
  7738  }
  7739  
  7740  // 工单ID
  7741  //
  7742  // 示例值:6948728206392295444
  7743  func (builder *ListTicketMessageReqBuilder) TicketId(ticketId string) *ListTicketMessageReqBuilder {
  7744  	builder.apiReq.PathParams.Set("ticket_id", fmt.Sprint(ticketId))
  7745  	return builder
  7746  }
  7747  
  7748  // 起始时间
  7749  //
  7750  // 示例值:1617960686
  7751  func (builder *ListTicketMessageReqBuilder) TimeStart(timeStart int) *ListTicketMessageReqBuilder {
  7752  	builder.apiReq.QueryParams.Set("time_start", fmt.Sprint(timeStart))
  7753  	return builder
  7754  }
  7755  
  7756  // 结束时间
  7757  //
  7758  // 示例值:1617960687
  7759  func (builder *ListTicketMessageReqBuilder) TimeEnd(timeEnd int) *ListTicketMessageReqBuilder {
  7760  	builder.apiReq.QueryParams.Set("time_end", fmt.Sprint(timeEnd))
  7761  	return builder
  7762  }
  7763  
  7764  // 页数ID
  7765  //
  7766  // 示例值:1
  7767  func (builder *ListTicketMessageReqBuilder) Page(page int) *ListTicketMessageReqBuilder {
  7768  	builder.apiReq.QueryParams.Set("page", fmt.Sprint(page))
  7769  	return builder
  7770  }
  7771  
  7772  // 消息数量,最大200,默认20
  7773  //
  7774  // 示例值:10
  7775  func (builder *ListTicketMessageReqBuilder) PageSize(pageSize int) *ListTicketMessageReqBuilder {
  7776  	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
  7777  	return builder
  7778  }
  7779  
  7780  func (builder *ListTicketMessageReqBuilder) Build() *ListTicketMessageReq {
  7781  	req := &ListTicketMessageReq{}
  7782  	req.apiReq = &larkcore.ApiReq{}
  7783  	req.apiReq.PathParams = builder.apiReq.PathParams
  7784  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  7785  	return req
  7786  }
  7787  
  7788  type ListTicketMessageReq struct {
  7789  	apiReq *larkcore.ApiReq
  7790  }
  7791  
  7792  type ListTicketMessageRespData struct {
  7793  	Messages []*TicketMessage `json:"messages,omitempty"` // 工单消息列表
  7794  	Total    *int             `json:"total,omitempty"`    // 消息总数
  7795  }
  7796  
  7797  type ListTicketMessageResp struct {
  7798  	*larkcore.ApiResp `json:"-"`
  7799  	larkcore.CodeError
  7800  	Data *ListTicketMessageRespData `json:"data"` // 业务数据
  7801  }
  7802  
  7803  func (resp *ListTicketMessageResp) Success() bool {
  7804  	return resp.Code == 0
  7805  }
  7806  
  7807  type CreateTicketCustomizedFieldReqBuilder struct {
  7808  	apiReq                *larkcore.ApiReq
  7809  	ticketCustomizedField *TicketCustomizedField
  7810  }
  7811  
  7812  func NewCreateTicketCustomizedFieldReqBuilder() *CreateTicketCustomizedFieldReqBuilder {
  7813  	builder := &CreateTicketCustomizedFieldReqBuilder{}
  7814  	builder.apiReq = &larkcore.ApiReq{
  7815  		PathParams:  larkcore.PathParams{},
  7816  		QueryParams: larkcore.QueryParams{},
  7817  	}
  7818  	return builder
  7819  }
  7820  
  7821  // 该接口用于创建自定义字段
  7822  func (builder *CreateTicketCustomizedFieldReqBuilder) TicketCustomizedField(ticketCustomizedField *TicketCustomizedField) *CreateTicketCustomizedFieldReqBuilder {
  7823  	builder.ticketCustomizedField = ticketCustomizedField
  7824  	return builder
  7825  }
  7826  
  7827  func (builder *CreateTicketCustomizedFieldReqBuilder) Build() *CreateTicketCustomizedFieldReq {
  7828  	req := &CreateTicketCustomizedFieldReq{}
  7829  	req.apiReq = &larkcore.ApiReq{}
  7830  	req.apiReq.Body = builder.ticketCustomizedField
  7831  	return req
  7832  }
  7833  
  7834  type CreateTicketCustomizedFieldReq struct {
  7835  	apiReq                *larkcore.ApiReq
  7836  	TicketCustomizedField *TicketCustomizedField `body:""`
  7837  }
  7838  
  7839  type CreateTicketCustomizedFieldResp struct {
  7840  	*larkcore.ApiResp `json:"-"`
  7841  	larkcore.CodeError
  7842  }
  7843  
  7844  func (resp *CreateTicketCustomizedFieldResp) Success() bool {
  7845  	return resp.Code == 0
  7846  }
  7847  
  7848  type DeleteTicketCustomizedFieldReqBuilder struct {
  7849  	apiReq *larkcore.ApiReq
  7850  }
  7851  
  7852  func NewDeleteTicketCustomizedFieldReqBuilder() *DeleteTicketCustomizedFieldReqBuilder {
  7853  	builder := &DeleteTicketCustomizedFieldReqBuilder{}
  7854  	builder.apiReq = &larkcore.ApiReq{
  7855  		PathParams:  larkcore.PathParams{},
  7856  		QueryParams: larkcore.QueryParams{},
  7857  	}
  7858  	return builder
  7859  }
  7860  
  7861  // 工单自定义字段ID
  7862  //
  7863  // 示例值:6948728206392295444
  7864  func (builder *DeleteTicketCustomizedFieldReqBuilder) TicketCustomizedFieldId(ticketCustomizedFieldId string) *DeleteTicketCustomizedFieldReqBuilder {
  7865  	builder.apiReq.PathParams.Set("ticket_customized_field_id", fmt.Sprint(ticketCustomizedFieldId))
  7866  	return builder
  7867  }
  7868  
  7869  func (builder *DeleteTicketCustomizedFieldReqBuilder) Build() *DeleteTicketCustomizedFieldReq {
  7870  	req := &DeleteTicketCustomizedFieldReq{}
  7871  	req.apiReq = &larkcore.ApiReq{}
  7872  	req.apiReq.PathParams = builder.apiReq.PathParams
  7873  	return req
  7874  }
  7875  
  7876  type DeleteTicketCustomizedFieldReq struct {
  7877  	apiReq *larkcore.ApiReq
  7878  }
  7879  
  7880  type DeleteTicketCustomizedFieldResp struct {
  7881  	*larkcore.ApiResp `json:"-"`
  7882  	larkcore.CodeError
  7883  }
  7884  
  7885  func (resp *DeleteTicketCustomizedFieldResp) Success() bool {
  7886  	return resp.Code == 0
  7887  }
  7888  
  7889  type GetTicketCustomizedFieldReqBuilder struct {
  7890  	apiReq *larkcore.ApiReq
  7891  }
  7892  
  7893  func NewGetTicketCustomizedFieldReqBuilder() *GetTicketCustomizedFieldReqBuilder {
  7894  	builder := &GetTicketCustomizedFieldReqBuilder{}
  7895  	builder.apiReq = &larkcore.ApiReq{
  7896  		PathParams:  larkcore.PathParams{},
  7897  		QueryParams: larkcore.QueryParams{},
  7898  	}
  7899  	return builder
  7900  }
  7901  
  7902  // 工单自定义字段ID
  7903  //
  7904  // 示例值:6948728206392295444
  7905  func (builder *GetTicketCustomizedFieldReqBuilder) TicketCustomizedFieldId(ticketCustomizedFieldId string) *GetTicketCustomizedFieldReqBuilder {
  7906  	builder.apiReq.PathParams.Set("ticket_customized_field_id", fmt.Sprint(ticketCustomizedFieldId))
  7907  	return builder
  7908  }
  7909  
  7910  func (builder *GetTicketCustomizedFieldReqBuilder) Build() *GetTicketCustomizedFieldReq {
  7911  	req := &GetTicketCustomizedFieldReq{}
  7912  	req.apiReq = &larkcore.ApiReq{}
  7913  	req.apiReq.PathParams = builder.apiReq.PathParams
  7914  	return req
  7915  }
  7916  
  7917  type GetTicketCustomizedFieldReq struct {
  7918  	apiReq *larkcore.ApiReq
  7919  }
  7920  
  7921  type GetTicketCustomizedFieldRespData struct {
  7922  	TicketCustomizedFieldId *string     `json:"ticket_customized_field_id,omitempty"` // ticket customized field id
  7923  	HelpdeskId              *string     `json:"helpdesk_id,omitempty"`                // help desk id
  7924  	KeyName                 *string     `json:"key_name,omitempty"`                   // key name
  7925  	DisplayName             *string     `json:"display_name,omitempty"`               // display name
  7926  	Position                *string     `json:"position,omitempty"`                   // the position of ticket customized field in the page
  7927  	FieldType               *string     `json:"field_type,omitempty"`                 // type of the field
  7928  	Description             *string     `json:"description,omitempty"`                // description of the field
  7929  	Visible                 *bool       `json:"visible,omitempty"`                    // if the field is visible
  7930  	Editable                *bool       `json:"editable,omitempty"`                   // if the field is editable
  7931  	Required                *bool       `json:"required,omitempty"`                   // if the field is required
  7932  	CreatedAt               *string     `json:"created_at,omitempty"`                 // the time when the field is created
  7933  	UpdatedAt               *string     `json:"updated_at,omitempty"`                 // the time when the field is updated
  7934  	CreatedBy               *TicketUser `json:"created_by,omitempty"`                 // the user who created the ticket customized field
  7935  	UpdatedBy               *TicketUser `json:"updated_by,omitempty"`                 // the user who recently updated the ticket customized field
  7936  	DropdownAllowMultiple   *bool       `json:"dropdown_allow_multiple,omitempty"`    // if the dropdown field supports multi-select
  7937  }
  7938  
  7939  type GetTicketCustomizedFieldResp struct {
  7940  	*larkcore.ApiResp `json:"-"`
  7941  	larkcore.CodeError
  7942  	Data *GetTicketCustomizedFieldRespData `json:"data"` // 业务数据
  7943  }
  7944  
  7945  func (resp *GetTicketCustomizedFieldResp) Success() bool {
  7946  	return resp.Code == 0
  7947  }
  7948  
  7949  type ListTicketCustomizedFieldReqBodyBuilder struct {
  7950  	visible     bool // 是否可见
  7951  	visibleFlag bool
  7952  }
  7953  
  7954  func NewListTicketCustomizedFieldReqBodyBuilder() *ListTicketCustomizedFieldReqBodyBuilder {
  7955  	builder := &ListTicketCustomizedFieldReqBodyBuilder{}
  7956  	return builder
  7957  }
  7958  
  7959  // 是否可见
  7960  //
  7961  //示例值:true
  7962  func (builder *ListTicketCustomizedFieldReqBodyBuilder) Visible(visible bool) *ListTicketCustomizedFieldReqBodyBuilder {
  7963  	builder.visible = visible
  7964  	builder.visibleFlag = true
  7965  	return builder
  7966  }
  7967  
  7968  func (builder *ListTicketCustomizedFieldReqBodyBuilder) Build() *ListTicketCustomizedFieldReqBody {
  7969  	req := &ListTicketCustomizedFieldReqBody{}
  7970  	if builder.visibleFlag {
  7971  		req.Visible = &builder.visible
  7972  	}
  7973  	return req
  7974  }
  7975  
  7976  type ListTicketCustomizedFieldPathReqBodyBuilder struct {
  7977  	visible     bool // 是否可见
  7978  	visibleFlag bool
  7979  }
  7980  
  7981  func NewListTicketCustomizedFieldPathReqBodyBuilder() *ListTicketCustomizedFieldPathReqBodyBuilder {
  7982  	builder := &ListTicketCustomizedFieldPathReqBodyBuilder{}
  7983  	return builder
  7984  }
  7985  
  7986  // 是否可见
  7987  //
  7988  // 示例值:true
  7989  func (builder *ListTicketCustomizedFieldPathReqBodyBuilder) Visible(visible bool) *ListTicketCustomizedFieldPathReqBodyBuilder {
  7990  	builder.visible = visible
  7991  	builder.visibleFlag = true
  7992  	return builder
  7993  }
  7994  
  7995  func (builder *ListTicketCustomizedFieldPathReqBodyBuilder) Build() (*ListTicketCustomizedFieldReqBody, error) {
  7996  	req := &ListTicketCustomizedFieldReqBody{}
  7997  	if builder.visibleFlag {
  7998  		req.Visible = &builder.visible
  7999  	}
  8000  	return req, nil
  8001  }
  8002  
  8003  type ListTicketCustomizedFieldReqBuilder struct {
  8004  	apiReq *larkcore.ApiReq
  8005  	body   *ListTicketCustomizedFieldReqBody
  8006  }
  8007  
  8008  func NewListTicketCustomizedFieldReqBuilder() *ListTicketCustomizedFieldReqBuilder {
  8009  	builder := &ListTicketCustomizedFieldReqBuilder{}
  8010  	builder.apiReq = &larkcore.ApiReq{
  8011  		PathParams:  larkcore.PathParams{},
  8012  		QueryParams: larkcore.QueryParams{},
  8013  	}
  8014  	return builder
  8015  }
  8016  
  8017  //
  8018  //
  8019  // 示例值:6948728206392295444
  8020  func (builder *ListTicketCustomizedFieldReqBuilder) PageToken(pageToken string) *ListTicketCustomizedFieldReqBuilder {
  8021  	builder.apiReq.QueryParams.Set("page_token", fmt.Sprint(pageToken))
  8022  	return builder
  8023  }
  8024  
  8025  //
  8026  //
  8027  // 示例值:10;默认为20
  8028  func (builder *ListTicketCustomizedFieldReqBuilder) PageSize(pageSize int) *ListTicketCustomizedFieldReqBuilder {
  8029  	builder.apiReq.QueryParams.Set("page_size", fmt.Sprint(pageSize))
  8030  	return builder
  8031  }
  8032  
  8033  // 该接口用于获取全部工单自定义字段。
  8034  func (builder *ListTicketCustomizedFieldReqBuilder) Body(body *ListTicketCustomizedFieldReqBody) *ListTicketCustomizedFieldReqBuilder {
  8035  	builder.body = body
  8036  	return builder
  8037  }
  8038  
  8039  func (builder *ListTicketCustomizedFieldReqBuilder) Build() *ListTicketCustomizedFieldReq {
  8040  	req := &ListTicketCustomizedFieldReq{}
  8041  	req.apiReq = &larkcore.ApiReq{}
  8042  	req.apiReq.QueryParams = builder.apiReq.QueryParams
  8043  	req.apiReq.Body = builder.body
  8044  	return req
  8045  }
  8046  
  8047  type ListTicketCustomizedFieldReqBody struct {
  8048  	Visible *bool `json:"visible,omitempty"` // 是否可见
  8049  }
  8050  
  8051  type ListTicketCustomizedFieldReq struct {
  8052  	apiReq *larkcore.ApiReq
  8053  	Body   *ListTicketCustomizedFieldReqBody `body:""`
  8054  }
  8055  
  8056  type ListTicketCustomizedFieldRespData struct {
  8057  	HasMore       *bool                    `json:"has_more,omitempty"`        // whether there is more data
  8058  	NextPageToken *string                  `json:"next_page_token,omitempty"` // 下一分页标识
  8059  	Items         []*TicketCustomizedField `json:"items,omitempty"`           // 工单自定义字段列表
  8060  }
  8061  
  8062  type ListTicketCustomizedFieldResp struct {
  8063  	*larkcore.ApiResp `json:"-"`
  8064  	larkcore.CodeError
  8065  	Data *ListTicketCustomizedFieldRespData `json:"data"` // 业务数据
  8066  }
  8067  
  8068  func (resp *ListTicketCustomizedFieldResp) Success() bool {
  8069  	return resp.Code == 0
  8070  }
  8071  
  8072  type PatchTicketCustomizedFieldReqBuilder struct {
  8073  	apiReq                *larkcore.ApiReq
  8074  	ticketCustomizedField *TicketCustomizedField
  8075  }
  8076  
  8077  func NewPatchTicketCustomizedFieldReqBuilder() *PatchTicketCustomizedFieldReqBuilder {
  8078  	builder := &PatchTicketCustomizedFieldReqBuilder{}
  8079  	builder.apiReq = &larkcore.ApiReq{
  8080  		PathParams:  larkcore.PathParams{},
  8081  		QueryParams: larkcore.QueryParams{},
  8082  	}
  8083  	return builder
  8084  }
  8085  
  8086  // 工单自定义字段ID
  8087  //
  8088  // 示例值:6948728206392295444
  8089  func (builder *PatchTicketCustomizedFieldReqBuilder) TicketCustomizedFieldId(ticketCustomizedFieldId string) *PatchTicketCustomizedFieldReqBuilder {
  8090  	builder.apiReq.PathParams.Set("ticket_customized_field_id", fmt.Sprint(ticketCustomizedFieldId))
  8091  	return builder
  8092  }
  8093  
  8094  // 该接口用于更新自定义字段。
  8095  func (builder *PatchTicketCustomizedFieldReqBuilder) TicketCustomizedField(ticketCustomizedField *TicketCustomizedField) *PatchTicketCustomizedFieldReqBuilder {
  8096  	builder.ticketCustomizedField = ticketCustomizedField
  8097  	return builder
  8098  }
  8099  
  8100  func (builder *PatchTicketCustomizedFieldReqBuilder) Build() *PatchTicketCustomizedFieldReq {
  8101  	req := &PatchTicketCustomizedFieldReq{}
  8102  	req.apiReq = &larkcore.ApiReq{}
  8103  	req.apiReq.PathParams = builder.apiReq.PathParams
  8104  	req.apiReq.Body = builder.ticketCustomizedField
  8105  	return req
  8106  }
  8107  
  8108  type PatchTicketCustomizedFieldReq struct {
  8109  	apiReq                *larkcore.ApiReq
  8110  	TicketCustomizedField *TicketCustomizedField `body:""`
  8111  }
  8112  
  8113  type PatchTicketCustomizedFieldResp struct {
  8114  	*larkcore.ApiResp `json:"-"`
  8115  	larkcore.CodeError
  8116  }
  8117  
  8118  func (resp *PatchTicketCustomizedFieldResp) Success() bool {
  8119  	return resp.Code == 0
  8120  }
  8121  
  8122  type P2NotificationApproveV1Data struct {
  8123  	NotificationId *string `json:"notification_id,omitempty"` // 推送任务唯一ID
  8124  	HelpdeskId     *string `json:"helpdesk_id,omitempty"`     // 服务台唯一ID
  8125  	ApproveStatus  *string `json:"approve_status,omitempty"`  // REJECTED(审核不通过);APPROVED(审核通过);CANCELED(取消审核);DELETED(删除审核)
  8126  }
  8127  
  8128  type P2NotificationApproveV1 struct {
  8129  	*larkevent.EventV2Base                              // 事件基础数据
  8130  	*larkevent.EventReq                                 // 请求原生数据
  8131  	Event                  *P2NotificationApproveV1Data `json:"event"` // 事件内容
  8132  }
  8133  
  8134  func (m *P2NotificationApproveV1) RawReq(req *larkevent.EventReq) {
  8135  	m.EventReq = req
  8136  }
  8137  
  8138  type P2TicketCreatedV1Data struct {
  8139  	TicketId         *string                       `json:"ticket_id,omitempty"`         // ticket id
  8140  	HelpdeskId       *string                       `json:"helpdesk_id,omitempty"`       // helpdesk id
  8141  	Guest            *TicketUserEvent              `json:"guest,omitempty"`             // guest of this ticket
  8142  	Stage            *int                          `json:"stage,omitempty"`             // ticket stage
  8143  	Status           *int                          `json:"status,omitempty"`            // ticket status
  8144  	Score            *int                          `json:"score,omitempty"`             // ticket score
  8145  	CreatedAt        *int                          `json:"created_at,omitempty"`        // the time when the ticket is created
  8146  	UpdatedAt        *int                          `json:"updated_at,omitempty"`        // the time when the ticket is updated
  8147  	ClosedAt         *int                          `json:"closed_at,omitempty"`         // the time when the ticket is closed
  8148  	Channel          *int                          `json:"channel,omitempty"`           // the ticket channel
  8149  	Solve            *int                          `json:"solve,omitempty"`             // if ticket is solved
  8150  	CustomizedFields []*CustomizedFieldDisplayItem `json:"customized_fields,omitempty"` // ticket customized fields
  8151  	ChatId           *string                       `json:"chat_id,omitempty"`           //
  8152  }
  8153  
  8154  type P2TicketCreatedV1 struct {
  8155  	*larkevent.EventV2Base                        // 事件基础数据
  8156  	*larkevent.EventReq                           // 请求原生数据
  8157  	Event                  *P2TicketCreatedV1Data `json:"event"` // 事件内容
  8158  }
  8159  
  8160  func (m *P2TicketCreatedV1) RawReq(req *larkevent.EventReq) {
  8161  	m.EventReq = req
  8162  }
  8163  
  8164  type P2TicketUpdatedV1Data struct {
  8165  	Object    *TicketEvent           `json:"object,omitempty"`     // ticket after update
  8166  	OldObject *TicketEventUpdateInfo `json:"old_object,omitempty"` // ticket before update, only has updated fields
  8167  }
  8168  
  8169  type P2TicketUpdatedV1 struct {
  8170  	*larkevent.EventV2Base                        // 事件基础数据
  8171  	*larkevent.EventReq                           // 请求原生数据
  8172  	Event                  *P2TicketUpdatedV1Data `json:"event"` // 事件内容
  8173  }
  8174  
  8175  func (m *P2TicketUpdatedV1) RawReq(req *larkevent.EventReq) {
  8176  	m.EventReq = req
  8177  }
  8178  
  8179  type P2TicketMessageCreatedV1Data struct {
  8180  	TicketMessageId *string               `json:"ticket_message_id,omitempty"` // ticket message id
  8181  	MessageId       *string               `json:"message_id,omitempty"`        // open message id
  8182  	MsgType         *string               `json:"msg_type,omitempty"`          // message type, text is the only supported type
  8183  	Position        *string               `json:"position,omitempty"`          // position of the message
  8184  	SenderId        *UserId               `json:"sender_id,omitempty"`         // sender's open id, omitted if the sender is the bot
  8185  	SenderType      *int                  `json:"sender_type,omitempty"`       // sender type, 1 for bot, 2 for guest, 3 for agent
  8186  	Text            *string               `json:"text,omitempty"`              // message content
  8187  	Ticket          *Ticket               `json:"ticket,omitempty"`            // ticket related information
  8188  	EventId         *string               `json:"event_id,omitempty"`          // event id
  8189  	ChatId          *string               `json:"chat_id,omitempty"`           // chat id
  8190  	Content         *TicketMessageContent `json:"content,omitempty"`           // message content
  8191  }
  8192  
  8193  type P2TicketMessageCreatedV1 struct {
  8194  	*larkevent.EventV2Base                               // 事件基础数据
  8195  	*larkevent.EventReq                                  // 请求原生数据
  8196  	Event                  *P2TicketMessageCreatedV1Data `json:"event"` // 事件内容
  8197  }
  8198  
  8199  func (m *P2TicketMessageCreatedV1) RawReq(req *larkevent.EventReq) {
  8200  	m.EventReq = req
  8201  }
  8202  
  8203  type ListFaqIterator struct {
  8204  	nextPageToken *string
  8205  	items         []*Faq
  8206  	index         int
  8207  	limit         int
  8208  	ctx           context.Context
  8209  	req           *ListFaqReq
  8210  	listFunc      func(ctx context.Context, req *ListFaqReq, options ...larkcore.RequestOptionFunc) (*ListFaqResp, error)
  8211  	options       []larkcore.RequestOptionFunc
  8212  	curlNum       int
  8213  }
  8214  
  8215  func (iterator *ListFaqIterator) Next() (bool, *Faq, error) {
  8216  	// 达到最大量,则返回
  8217  	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
  8218  		return false, nil, nil
  8219  	}
  8220  
  8221  	// 为0则拉取数据
  8222  	if iterator.index == 0 || iterator.index >= len(iterator.items) {
  8223  		if iterator.index != 0 && iterator.nextPageToken == nil {
  8224  			return false, nil, nil
  8225  		}
  8226  		if iterator.nextPageToken != nil {
  8227  			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
  8228  		}
  8229  		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
  8230  		if err != nil {
  8231  			return false, nil, err
  8232  		}
  8233  
  8234  		if resp.Code != 0 {
  8235  			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
  8236  		}
  8237  
  8238  		if len(resp.Data.Items) == 0 {
  8239  			return false, nil, nil
  8240  		}
  8241  
  8242  		iterator.nextPageToken = resp.Data.PageToken
  8243  		iterator.items = resp.Data.Items
  8244  		iterator.index = 0
  8245  	}
  8246  
  8247  	block := iterator.items[iterator.index]
  8248  	iterator.index++
  8249  	iterator.curlNum++
  8250  	return true, block, nil
  8251  }
  8252  
  8253  func (iterator *ListFaqIterator) NextPageToken() *string {
  8254  	return iterator.nextPageToken
  8255  }
  8256  
  8257  type SearchFaqIterator struct {
  8258  	nextPageToken *string
  8259  	items         []*Faq
  8260  	index         int
  8261  	limit         int
  8262  	ctx           context.Context
  8263  	req           *SearchFaqReq
  8264  	listFunc      func(ctx context.Context, req *SearchFaqReq, options ...larkcore.RequestOptionFunc) (*SearchFaqResp, error)
  8265  	options       []larkcore.RequestOptionFunc
  8266  	curlNum       int
  8267  }
  8268  
  8269  func (iterator *SearchFaqIterator) Next() (bool, *Faq, error) {
  8270  	// 达到最大量,则返回
  8271  	if iterator.limit > 0 && iterator.curlNum >= iterator.limit {
  8272  		return false, nil, nil
  8273  	}
  8274  
  8275  	// 为0则拉取数据
  8276  	if iterator.index == 0 || iterator.index >= len(iterator.items) {
  8277  		if iterator.index != 0 && iterator.nextPageToken == nil {
  8278  			return false, nil, nil
  8279  		}
  8280  		if iterator.nextPageToken != nil {
  8281  			iterator.req.apiReq.QueryParams.Set("page_token", *iterator.nextPageToken)
  8282  		}
  8283  		resp, err := iterator.listFunc(iterator.ctx, iterator.req, iterator.options...)
  8284  		if err != nil {
  8285  			return false, nil, err
  8286  		}
  8287  
  8288  		if resp.Code != 0 {
  8289  			return false, nil, errors.New(fmt.Sprintf("Code:%d,Msg:%s", resp.Code, resp.Msg))
  8290  		}
  8291  
  8292  		if len(resp.Data.Items) == 0 {
  8293  			return false, nil, nil
  8294  		}
  8295  
  8296  		iterator.nextPageToken = resp.Data.PageToken
  8297  		iterator.items = resp.Data.Items
  8298  		iterator.index = 0
  8299  	}
  8300  
  8301  	block := iterator.items[iterator.index]
  8302  	iterator.index++
  8303  	iterator.curlNum++
  8304  	return true, block, nil
  8305  }
  8306  
  8307  func (iterator *SearchFaqIterator) NextPageToken() *string {
  8308  	return iterator.nextPageToken
  8309  }