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": "第一行 :"; },; {; "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": "第一行 :"; },; {; "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 }