请参阅 Application Integration 支持的连接器。
Zendesk 触发器
Zendesk 触发器是一种 Connector Event 触发器,可让您根据您在 Zendesk 连接中订阅的 Zendesk 事件调用集成。
准备工作
如果您打算为 Zendesk 触发器创建或配置新连接,请确保您拥有项目的以下 IAM 角色:
- 连接器管理员 (
roles/connectors.admin
)
如需了解如何授予角色,请参阅管理访问权限。
向要用于 Zendesk 触发器的服务帐号授予以下 IAM 角色:
- Application Integration 调用方 (
roles/integrations.integrationInvoker
)
如需了解如何向服务账号授予角色,请参阅管理对服务账号的访问权限。
添加 Zendesk 触发器
如需向集成添加 Zendesk 触发器,请执行以下步骤:
- 在 Google Cloud 控制台中,前往 Application Integration 页面。
- 在导航菜单中,点击 Integrations(集成)
此时将显示集成列表页面,其中列出了 Google Cloud 项目中提供的所有集成。
- 选择现有集成,或点击创建集成以创建新集成。
要创建新的集成,请执行以下操作:
- 在 Create Integration(创建集成)窗格中输入名称和说明。
- 选择集成区域。
- 为集成选择服务帐号。您随时可以在集成工具栏的 集成摘要窗格中更改或更新集成的服务帐号详细信息。
- 点击创建。
系统会在集成编辑器中打开集成。
- 在集成编辑器导航栏中,点击触发器以查看可用触发器的列表。
- 点击 Zendesk 触发器元素并将其放置在集成编辑器中。
如需配置 Zendesk 触发器,您可以使用 Integration Connectors 中提供的现有 Zendesk 连接,或者使用内嵌连接创建选项创建新的 Zendesk 连接。
使用现有连接配置 Zendesk 触发器
您可以使用 Integration Connectors 中的现有 Zendesk 连接配置 Zendesk 触发器。请注意,Zendesk 触发器是一种 Connector Event 触发器,因此您只能使用启用了事件订阅的 Zendesk 连接来配置触发器。
如需了解如何使用新的 Zendesk 连接配置 Zendesk 触发器,请参阅使用新连接配置 Zendesk 触发器
如需使用现有 Zendesk 连接配置 Zendesk 触发器,请执行以下步骤:
- 点击集成编辑器中的 Zendesk 触发器元素,以打开触发器配置窗格。
- 点击配置触发器。
- 在连接器事件触发器编辑器页面提供以下配置详细信息:
- 点击完成,完成触发器配置并关闭页面。
使用新连接配置 Zendesk 触发器
如需使用新的 Zendesk 连接配置 Zendesk 触发器,请执行以下步骤:
- 点击集成编辑器中的 Zendesk 触发器元素,以打开触发器配置窗格。
- 点击配置触发器。
- 跳过区域字段。
- 点击连接,然后从下拉菜单中选择创建连接选项。
- 在创建连接窗格中完成以下步骤:
- 在位置步骤中,选择新 Zendesk 连接的位置:
- 区域:从下拉列表中选择一个区域。
- 点击下一步。
- 在 Connection Details 步骤中,提供新 Zendesk 连接的详细信息:
- 连接器版本:从下拉列表中选择一个可用的 Zendesk 连接器版本。
- Connection Name(连接名称):输入 Zendesk 连接的名称。
- (可选)说明 :输入连接说明。
- (可选)启用 Cloud Logging:选中此复选框可存储连接的所有日志数据。
- 服务帐号:选择具有 Zendesk 连接所需 IAM 角色的服务帐号。
- Enable event subscription(启用事件订阅):选择为 Zendesk 连接创建和启用新的事件订阅。您可以仅启用事件订阅,也可以将连接实体、操作和操作包含在内。
- (可选)展开高级设置以配置连接节点设置。
如需详细了解 Zendesk 的连接节点设置,请参阅 Zendesk 连接文档。
- (可选)点击 + 添加标签,以键值对的形式为连接添加标签。
- 点击下一步。
-
在目标位置步骤中,提供 Zendesk 实例详细信息:
- 目标类型:选择主机地址。
- 主机:输入 Zendesk 实例的主机名或 IP 地址。
- 点击下一步。
-
在身份验证步骤中,提供 Zendesk 实例的身份验证详细信息:
- 选择所需的身份验证类型,然后输入相关详细信息,以访问所提供的 Zendesk 主机网址。
如需了解如何配置这些身份验证类型,请参阅配置身份验证。
- 点击下一步。
- 选择所需的身份验证类型,然后输入相关详细信息,以访问所提供的 Zendesk 主机网址。
-
在事件订阅详情步骤中,提供将在其中创建事件订阅的 Zendesk 实例的详细信息。
- 目标类型:选择主机地址。
- Host(主机):输入 Zendesk 实例的注册网址。系统将为此网址创建事件订阅。
- 用户名:输入用户名以访问所提供的注册网址。
- Password:选择包含与用户名关联的密码的 Secret Manager Secret。
- 密钥版本:选择密钥版本。
- 启用数据丰富化:如果您希望 Zendesk 触发器从 Zendesk 实例中检索完整的事件载荷,请选中此复选框。有关示例,请参阅触发器输出。
- 点击下一步。
- 查看:查看所提供的 Zendesk 连接详情。
- 点击 Create(创建)以完成新的 Zendesk 连接。
- 在位置步骤中,选择新 Zendesk 连接的位置:
- 事件订阅类型:选择触发集成的事件订阅类型。如需了解此触发器支持的事件订阅类型,请参阅支持的事件订阅类型。
- 点击完成,然后关闭页面。
触发器输出
Zendesk 触发器需要几分钟时间才能完成事件订阅配置。您可以在事件订阅详情下的触发器配置窗格中查看事件订阅的状态。
Zendesk 触发器使用以下状态来指示事件订阅的状态:
Creating
:表示触发器正在订阅事件订阅。Active
:表示触发器已成功订阅事件订阅。Error
:表示所配置的事件订阅存在问题。
除了事件订阅状态之外,事件订阅详情部分还会显示其他详细信息,例如连接区域、连接名称、事件订阅名称等。
下图显示了 Zendesk 触发器配置窗格的示例布局:
![显示 Zendesk 触发器配置窗格的图片](https://cloud.google.com/static/application-integration/images/zendesk_trigger_1.png?authuser=0000&hl=zh-cn)
![显示 Zendesk 触发器配置窗格的图片](https://cloud.google.com/static/application-integration/images/zendesk_trigger_1.png?authuser=0000&hl=zh-cn)
触发器输出变量
对于每个事件,Zendesk 触发器都会生成一个 ConnectorEventPayload
输出变量,您可以在下游任务中使用该变量。输出变量采用 JSON 格式,其中包含输出 Zendesk 载荷架构。
示例 1:Zendesk 事件的输出载荷:Agent Assignment Changed(代理分配已更改)
{ "description": "The root schema of event that has occurred in Zendesk.", "type": "object", "properties": { "data": { "description": "", "type": "object", "properties": { "accountId": { "description": "Zendesk account ID.", "type": "number", "readOnly": false }, "integration_key": { "description": "Integration Key retrieved from ZIS bundle.", "type": "string", "readOnly": false }, "subdomain": { "description": "Account subdomain.", "type": "string", "readOnly": false }, "input": { "description": "Contains information about events changes.", "type": "object", "properties": { "ticket_event": { "description": "Type of event is ticket event.", "type": "object", "properties": { "meta": { "description": "Metadata about the ticket.", "type": "object", "properties": { "version": { "description": "Event version", "type": ["string", "null"] }, "occurred_at": { "description": "Timestamp when the event occurred.", "type": "string" }, "ref": { "description": "Reference ID", "type": ["string", "null"] }, "sequence": { "description": "Sequence of Occurrence", "type": "object", "properties": { "id": { "description": "", "type": ["string", "null"] }, "position": { "description": "", "type": ["number","null"] }, "total": { "description": "", "type": ["number","null"] } } } } }, "type": { "description": "Type of Ticket Event ", "type": "string" }, "previous": { "description": "Previous ID", "type": ["number","null"] }, "current": { "description": "Current ID", "type": ["number","null"] }, "ticket": { "description": "Properties related to the ticket", "type": "object", "properties": { "id": { "description": "Ticket ID", "type": "number" }, "created_at": { "description": "Timestamp of ticket creation.", "type": "string" }, "updated_at": { "description": "Timestamp of ticket updation.", "type": "string" }, "type": { "description": "Type of ticket", "type": ["string", "null"] }, "priority": { "description": "Priority of ticket.", "type": ["string", "null"] }, "status": { "description": "Status of the ticket.", "type": ["string", "null"] }, "requester_id": { "description": "ID of the ticket requestor.", "type": ["number","null"] }, "submitter_id": { "description": "ID of the ticket submitter.", "type": ["number","null"] }, "assignee_id": { "description": "ID of the ticket assignee.", "type": ["number","null"] }, "organization_id": { "description": "ID of the organization ticket belongs to.", "type": ["number","null"] }, "group_id": { "description": "ID of the group ticket belongs to.", "type": ["number","null"] }, "brand_id": { "description": "ID of the brand ticket belongs to", "type": ["number","null"] }, "form_id": { "description": "ID of the form associated with the ticket.", "type": ["number","null"] }, "external_id": { "description": "", "type": ["string", "null"] }, "tags": { "description": "Tags associated with the ticket.", "type": "array", "items": { "description": "", "type": ["string", "null"] } }, "via": { "description": "Channel via which change was made.", "type": "object", "properties": { "channel": { "description": "", "type": "string" } } } } } } } }, "readOnly": false } } } } }
示例 2:Zendesk 活动的数据丰富输出载荷:代理分配已更改
{ "description": "The root schema of event that has occurred in Zendesk.", "type": "object", "properties": { "data": { "description": "", "type": "object", "properties": { "accountId": { "description": "Zendesk account ID.", "type": "number", "readOnly": false }, "integration_key": { "description": "Integration Key retrieved from ZIS bundle.", "type": "string", "readOnly": false }, "subdomain": { "description": "Account subdomain.", "type": "string", "readOnly": false }, "input": { "description": "Contains information about events changes.", "type": "object", "properties": { "ticket_event": { "description": "Type of event is ticket event.", "type": "object", "properties": { "meta": { "description": "Metadata about the ticket.", "type": "object", "properties": { "version": { "description": "Event version", "type": [ "string", "null" ] }, "occurred_at": { "description": "Timestamp when the event occurred.", "type": "string" }, "ref": { "description": "Reference ID", "type": [ "string", "null" ] }, "sequence": { "description": "Sequence of Occurrence", "type": "object", "properties": { "id": { "description": "", "type": [ "string", "null" ] }, "position": { "description": "", "type": [ "number", "null" ] }, "total": { "description": "", "type": [ "number", "null" ] } } } } }, "type": { "description": "Type of Ticket Event ", "type": "string" }, "previous": { "description": "Previous ID", "type": [ "number", "null" ] }, "current": { "description": "Current ID", "type": [ "number", "null" ] }, "ticket": { "description": "Properties related to the ticket", "type": "object", "properties": { "id": { "description": "Ticket ID", "type": "number" }, "created_at": { "description": "Timestamp of ticket creation.", "type": "string" }, "updated_at": { "description": "Timestamp of ticket updation.", "type": "string" }, "type": { "description": "Type of ticket", "type": "string" }, "priority": { "description": "Priority of ticket.", "type": [ "string", "null" ] }, "status": { "description": "Status of the ticket.", "type": [ "string", "null" ] }, "requester_id": { "description": "ID of the ticket requestor.", "type": [ "number", "null" ] }, "submitter_id": { "description": "ID of the ticket submitter.", "type": [ "number", "null" ] }, "assignee_id": { "description": "ID of the ticket assignee.", "type": [ "number", "null" ] }, "organization_id": { "description": "ID of the organization ticket belongs to.", "type": [ "number", "null" ] }, "group_id": { "description": "ID of the group ticket belongs to.", "type": [ "number", "null" ] }, "brand_id": { "description": "ID of the brand ticket belongs to", "type": [ "number", "null" ] }, "form_id": { "description": "ID of the form associated with the ticket.", "type": [ "number", "null" ] }, "external_id": { "description": "", "type": [ "string", "null" ] }, "tags": { "description": "Tags associated with the ticket.", "type": "array", "items": { "description": "", "type": [ "string", "null" ] } }, "via": { "description": "Channel via which change was made.", "type": "object", "properties": { "channel": { "description": "", "type": "string" } } } } } } } }, "readOnly": false } } }, "context-data": { "description": "", "type": "object", "properties": { "Id": { "type": "number", "readOnly": false, "description": "Automatically assigned when the ticket is created." }, "Subject": { "type": [ "string", "null" ], "readOnly": false, "description": "The value of the subject field for this ticket. When used in WHERE clause: The text in the ticket subject" }, "RawSubject": { "type": [ "string", "null" ], "readOnly": false, "description": "The dynamic content placeholder, if present, or the subject value, if not." }, "Description": { "type": [ "string", "null" ], "readOnly": false, "description": "The first comment on the ticket. When used in WHERE clause: The text in the tickets description and comments" }, "Type": { "type": [ "string", "null" ], "readOnly": false, "description": "The type of this ticket. Possible values: problem, incident, question or task." }, "Priority": { "type": [ "string", "null" ], "readOnly": false, "description": "The urgency with which the ticket should be addressed. Possible values: urgent, high, normal, low." }, "Status": { "type": [ "string", "null" ], "readOnly": false, "description": "The state of the ticket. Possible values: new, open, pending, hold, solved, closed." }, "Recipient": { "type": [ "string", "null" ], "readOnly": false, "description": "The original recipient e-mail address of the ticket." }, "HasIncidents": { "type": [ "boolean", "null" ], "readOnly": false, "description": "Is true of this ticket has been marked as a problem, false otherwise." }, "DueAt": { "type": [ "string", "null" ], "readOnly": false, "description": "If this is a ticket of type task it has a due date. Due date format uses ISO 8601 format." }, "RequesterId": { "type": [ "number", "null" ], "readOnly": false, "description": "The user who requested this ticket." }, "SubmitterId": { "type": [ "number", "null" ], "readOnly": false, "description": "The user who submitted the ticket. The submitter always becomes the author of the first comment on the ticket. " }, "AssigneeId": { "type": [ "number", "null" ], "readOnly": false, "description": "The agent currently assigned to the ticket." }, "OrganizationId": { "type": [ "string", "null" ], "readOnly": false, "description": "The organization of the requester. You can only specify the ID of an organization associated with the requester." }, "GroupId": { "type": [ "number", "null" ], "readOnly": false, "description": "The group this ticket is assigned to. When used in WHERE clause: The assigned agents group name." }, "CollaboratorIds": { "type": [ "string", "null" ], "readOnly": false, "description": "The ids of users currently cc-ed on the ticket." }, "FollowerIds": { "type": [ "string", "null" ], "readOnly": false, "description": "Agents currently following the ticket." }, "ForumTopicId": { "type": [ "number", "null" ], "readOnly": false, "description": "The topic this ticket originated from, if any." }, "ProblemId": { "type": [ "number", "null" ], "readOnly": false, "description": "For tickets of type incident, the ID of the problem the incident is linked to." }, "ExternalId": { "type": [ "string", "null" ], "readOnly": false, "description": "An id you can use to link Zendesk Support tickets to local records." }, "FollowupIds": { "type": [ "string", "null" ], "readOnly": false, "description": "Closed tickets only. The ids of the followups created from this ticket." }, "ViaFollowupSourceId": { "type": [ "string", "null" ], "readOnly": false, "description": "POST requests only. The id of a closed ticket when creating a follow-up ticket.." }, "MacroIds": { "type": [ "string", "null" ], "readOnly": false, "description": "POST requests only. List of macro IDs to be recorded in the ticket audit." }, "TicketFormId": { "type": [ "number", "null" ], "readOnly": false, "description": "Enterprise only. The id of the ticket form to render for the ticket." }, "BrandId": { "type": [ "number", "null" ], "readOnly": false, "description": "Enterprise only. The id of the brand this ticket is associated with." }, "Tags": { "type": [ "string", "null" ], "readOnly": false, "description": "The array of tags applied to this ticket." }, "ViaChannel": { "type": [ "string", "null" ], "readOnly": false, "description": "This tells you how the ticket or event was created. Examples: web, mobile, rule, system." }, "ViaSource": { "type": [ "string", "null" ], "readOnly": false, "description": "The tickets source. " }, "CustomFields": { "type": [ "string", "null" ], "readOnly": false, "description": "Custom fields for the ticket.The values of custom field are set and get dynamically" }, "SatisfactionRating": { "type": [ "string", "null" ], "readOnly": false, "description": "The satisfaction rating of the ticket, if it exists, or the state of satisfaction, offered or unoffered." }, "SharingAgreementIds": { "type": [ "string", "null" ], "readOnly": false, "description": "The ids of the sharing agreements used for this ticket." }, "AllowChannelback": { "type": [ "boolean", "null" ], "readOnly": false, "description": "Is false if channelback is disabled, true otherwise. Only applicable for channels framework ticket." }, "IsPublic": { "type": [ "boolean", "null" ], "readOnly": false, "description": "Is true if any comments are public, false otherwise." }, "CreatedAt": { "type": [ "string", "null" ], "readOnly": false, "description": "When this record was created." }, "UpdatedAt": { "type": [ "string", "null" ], "readOnly": false, "description": "When this record last got updated." }, "Url": { "type": [ "string", "null" ], "readOnly": false, "description": "The API url of this ticket." }, "View_Id": { "type": [ "number", "null" ], "readOnly": false, "description": "The view that tickets belong to." }, "User_Id": { "type": [ "number", "null" ], "readOnly": false, "description": "The user that tickets belong to." }, "Assignee": { "type": [ "string", "null" ], "readOnly": false, "description": "The assigned agent or other entity. You can specify none, me, user name (full name or partial), email address, user ID, or phone number" }, "GroupName": { "type": [ "string", "null" ], "readOnly": false, "description": "The assigned agents group name." }, "Requester": { "type": [ "string", "null" ], "readOnly": false, "description": "The ticket requester. You can specify none, me, user name (full name or partial), email address, user ID, or phone number." }, "Submitter": { "type": [ "string", "null" ], "readOnly": false, "description": "The ticket submitter. This may be different than the requester if the ticket was submitted by an agent on behalf of the requester. You can specify none, me, user name (full name or partial), email address, user ID, or phone number. ." }, "Brand": { "type": [ "string", "null" ], "readOnly": false, "description": "Search for a specific Brand on a ticket." }, "Via": { "type": [ "string", "null" ], "readOnly": false, "description": "The tickets source, which can be any of the following:mail, api, phone, etc." }, "Commenter": { "type": [ "string", "null" ], "readOnly": false, "description": "People who have added comments to tickets. You can specify none, me, user name (full name or partial), email address, user ID, or phone number." }, "Cc": { "type": [ "string", "null" ], "readOnly": false, "description": "People who have been CCd on tickets. You can specify none, me, user name (full name or partial), email address, user ID, or phone number." }, "HasAttachment": { "type": [ "boolean", "null" ], "readOnly": false, "description": "Search for all tickets with or without attachments using true or false." }, "Ticket status": { "type": [ "string", "null" ], "readOnly": false } } } } }
查看活动订阅
如需在 Integration Connectors 中查看和管理与连接关联的所有事件订阅,请执行以下操作:
- 转到集成连接器 > 连接页面。
- 点击要查看其订阅的连接。
- 点击活动订阅标签页。
执行此操作后,系统会显示连接的所有事件订阅。
修改 Zendesk 触发器
您可以修改 Zendesk 触发器,以更改或更新连接配置和事件订阅详情。
如需修改 Zendesk 触发器,请执行以下步骤:
- 点击集成编辑器中的 Zendesk 触发器元素,以打开触发器配置窗格。
- 点击配置 Zendesk 触发器。
- 在连接器事件触发器编辑器页面中,执行以下操作:
- 如需保留先前配置的事件订阅,请点击保留,否则请点击删除。
- 根据需要更新连接配置和事件订阅详情。
- 点击完成。
您可以在事件订阅详情下的触发器配置窗格中查看更新后的连接和事件订阅详情。
支持的事件订阅类型
您可以使用 Zendesk 触发器针对以下事件订阅类型调用集成:
事件订阅类型 | 说明 |
---|---|
organization.ExternalChanged
|
更改了组织的外部 ID。 |
organization.OrganizationCreated
|
系统会创建一个组织。 |
organization.TagsChanged
|
组织的标记发生了变化。 |
ticket.AgentAssignmentChanged
|
工单被重新分配给了支持团队的其他客服人员。 |
ticket.AttachmentLinkedToComment
|
可以将附件链接到支持团队中的工单评论。 |
ticket.AttachmentRedactedFromComment
|
系统会从工单中的现有评论中隐去附件。 |
ticket.BrandChanged
|
品牌已更改。品牌是面向客户的身份,可以表示为公司拥有的多个产品或服务。 |
ticket.CcsChanged
|
在工单中添加或移除了用户。 |
ticket.CommentAdded
|
创建或更新支持服务工单时,系统会添加备注。 |
ticket.CommentMadePrivate
|
在支持服务工单中添加不公开评论。 |
ticket.CommentRedacted
|
字词或字符串已从工单评论中永久移除。 |
ticket.DescriptionChanged
|
工单中的说明已更改。 |
ticket.ExternalIdChanged
|
外部工单 ID 已更改。 |
ticket.FollowersChanged
|
更改了工单的关注者。 |
ticket.GroupAssignmentChanged
|
将工单重新分配给另一个客服人员组。 |
ticket.MarkedAsSpam
|
工单被标记为垃圾内容。 |
ticket.OrganizationChanged
|
工单中的组织发生更改。 |
ticket.PriorityChanged
|
工单的优先级已更改。 |
ticket.ProblemLinkChanged
|
与突发事件类型工单相关的问题 ID 会更改。 |
ticket.RequesterChanged
|
票据请求者发生变更。 |
ticket.StatusChanged
|
工单的状态已发生更改。 |
ticket.SubjectChanged
|
工单的主题已更改。 |
ticket.SubmitterChanged
|
工单的提交者发生变更。 |
ticket.TagsChanged
|
工单中的标记已更改。 |
ticket.TaskDueAtChanged
|
工单上的任务截止日期和时间已更改。 |
ticket.TicketCreated
|
系统会创建支持服务工单。 |
ticket.TicketFormChanged
|
通知单中的表单会发生更改。 |
ticket.TicketMerged
|
一张工单会与另一个工单合并。 |
ticket.TicketPermanentlyDeleted
|
车票将被永久删除。 |
ticket.TicketSoftDeleted
|
将删除工单,使其对任何用户(包括使用产品界面或 API 的管理员)都不可见。 |
ticket.TicketTypeChanged
|
票券类型已更改。 |
ticket.TicketUndeleted
|
恢复删除的工单。 |
user.CustomRoleChanged
|
用户的自定义角色已更改。 |
user.ExternalidChanged
|
用户的外部 ID 已更改。 |
user.LastLoginChanged
|
用户的上次登录时间已更改。 |
user.OnlyPrivateCommentsChanged
|
用户发表公开评论的权限发生了变化。 |
user.TageChanged
|
用户的代码被更改了。 |
userTimeZoneChanged
|
用户的时区发生了变化。 |
user.UserAliasChanged
|
用户的别名发生了变化。 |
user.UserCreated
|
系统创建了一个用户。 |
user.UserDetailsChanged
|
用户的详细信息已更改。 |
user.UserGroupAdded
|
将一个用户添加到了群组。 |
user.UserGroupRemoved
|
从群组中移除用户。 |
user.UserIdentityChanged
|
用户的身份已更改。 |
user.UserIdentityCreated
|
创建用户的身份。 |
user.UserIdentityRemoved
|
用户的身份会被删除。 |
user.UserActiveChanged
|
用户的活跃状态发生了变化。 |
user.UserMerged
|
一个用户与另一个用户合并。 |
user.UserNameChanged
|
用户的姓名发生了变化。 |
user.UserNotesChanged
|
用户的记事发生了变化。 |
user.UserOrganizationAdded
|
已将一位用户添加到组织。 |
user.UserOrganizationRemoved
|
从组织中移除用户。 |
user.UserPhotoChanged
|
用户的照片发生了变化。 |
user.UserRoleChanged
|
用户的角色发生了变化。 |