帮助台:Zendesk、Freshdesk 与 Intercom
使用你自己的账号(自带账号模式),将你的帮助台工单(Zendesk、Freshdesk 或 Intercom)同步到 CRM,成为工单记录。
帮助台集成使用你自己的 Zendesk、Freshdesk 或 Intercom 账号(BYO 模式:自带账号)。你帮助台中每个被创建或更新的工单都会成为 CRM 中的一个工单记录,并通过提交人的邮箱自动关联到对应联系人。我们这边没有任何费用、加价或中间环节:数据直接来自你的账号。
该集成初始状态为未激活:在你填写凭据并激活之前不会发生任何事。所有密钥(签名密钥、client secret、API 令牌)都会加密存储在 CRM 中,且永远不会再次显示。每个平台在“设置 → 集成”中都有各自的卡片;webhook URL 是唯一的(/api/inbound/helpdesk/…),CRM 通过该 URL 中的令牌来识别是哪个平台。
前置条件
- 拥有管理员权限的 Zendesk、Freshdesk 或 Intercom 账号,以便创建 webhook/触发器并查看签名密钥。
- Zendesk:子域名(.zendesk.com 之前的部分)和 webhook 的 Signing secret(Admin Center → Apps and integrations → Webhooks)。
- Freshdesk:域名(例如 mycompany.freshdesk.com)以及一个由你定义的共享密钥。Intercom:你应用的 Client secret(Developer Hub)。
- 在 Sellio 中,需要管理员权限才能保存凭据并在“设置 → 集成”中激活该集成。
每个工单会发生什么
- 外部工单会成为 CRM 中工单对象的一条记录(主题、状态、优先级以及提交人的邮箱)。
- 状态和优先级会被转换为 CRM 中的值(例如 Zendesk 的 open → 处理中,solved → 已解决;Freshdesk 的 2 → 处理中,4 → 已解决;Intercom 的 open → 处理中,closed → 已关闭)。优先级 urgent/priority → 紧急/高。
- 当该邮箱在 CRM 中已存在对应联系人时,会自动进行关联。如果不存在,工单仍会被创建(未关联状态),你之后可以再手动关联。
Zendesk
- 打开“设置 → 集成”,找到“帮助台(Zendesk)”卡片。
- 填写子域名(.zendesk.com 之前的部分)和 webhook 的 Signing secret。如果你希望从 CRM 创建工单,还可以选填坐席邮箱和 API 令牌。点击“保存凭据”。
- 复制出现的“Webhook URL”。
- 在 Zendesk Admin Center → Apps and integrations → Webhooks 中,创建一个指向该 URL 的 webhook(JSON),并将其关联到一个在工单创建/更新时触发的触发器。触发器正文必须包含:id、subject、status、priority、requester_email。Zendesk 会使用 Signing secret 对每次调用进行签名(X-Zendesk-Webhook-Signature 请求头)。
- 返回 CRM 并点击“激活”。
Freshdesk
Freshdesk 原生不对 webhook 进行签名。因此,你需要自定义一个共享密钥,并配置自动化规则将其发送在 X-Freshdesk-Secret 请求头中;CRM 会在每次调用时校验该请求头。
- 在 CRM 中,找到“帮助台(Freshdesk)”卡片。
- 填写域名(例如 mycompany.freshdesk.com)和一个 Webhook 密钥(你自行选择的字符串)。如果你希望从 CRM 创建工单,还可以选填 API key。点击“保存凭据”。
- 复制“Webhook URL”。
- 在 Freshdesk → Admin → Automations 中,创建一条在工单创建/更新时触发、动作为“Trigger webhook”(POST,JSON)的规则,指向该 URL,并在请求中包含 X-Freshdesk-Secret 请求头(值为上面的密钥)。正文必须包含:id、subject、status、priority、email。
- 返回 CRM 并点击“激活”。
Intercom
- 在 CRM 中,找到“帮助台(Intercom)”卡片。
- 填写你 Intercom 应用的 Client secret(Developer Hub → 你的应用 → Basic information)。如果你希望从 CRM 创建会话,还可以选填 Access token。点击“保存凭据”。
- 复制“Webhook URL”。
- 在 Intercom Developer Hub → 你的应用 → Webhooks 中,将通知 URL 指向该 URL,并订阅相关的会话主题(例如 conversation.user.created、conversation.user.replied)。Intercom 会使用 Client Secret 对每次调用进行签名(X-Hub-Signature 请求头,HMAC-SHA1)。
- 返回 CRM 并点击“激活”。
从 CRM 创建工单(出站,可选)
如果你填写了出站凭据(Zendesk:邮箱 + API 令牌;Freshdesk:API key;Intercom:access token),CRM 也可以在你的帮助台中创建工单。这是一个尽力而为的功能:如果 API 调用失败,CRM 不会中断整体流程,只会报告该错误。工单出现的位置:在 CRM 的工单对象中,并且当提交人已经是一个联系人时,还会与其关联。
请将 webhook URL 和密钥视为机密信息。CRM 会验证每次调用的签名(Zendesk/Intercom 通过 HMAC,Freshdesk 通过共享密钥);无效的调用会被拒绝。如果你未填写用于校验的密钥就尝试激活,该集成会保持未激活状态,在一切配置就绪之前不会同步任何内容。
如何测试
- Zendesk:在 Admin Center → Apps and integrations → Webhooks 中使用 webhook 的测试按钮,或创建/更新一个能触发该触发器的真实工单。
- Freshdesk:通过创建/更新工单来触发自动化规则;Intercom:生成一个符合已订阅主题的测试会话。
- 在 CRM 中打开工单对象,确认工单已出现,主题/状态/优先级正确,并且(如果提交人邮箱已存在)已关联到对应联系人。
- 重新发送同一个事件,确认工单被更新而非重复创建(通过 provider:id 去重)。
故障排查
- Zendesk:签名无效:CRM 中保存的 Signing secret 与该 webhook 的密钥不一致(X-Zendesk-Webhook-Signature 请求头)。请在 Admin Center 中重新复制 webhook 密钥并重新输入。
- Freshdesk:调用被拒绝:自动化规则必须在 X-Freshdesk-Secret 请求头中发送与 CRM 中保存的密钥完全一致的值(Freshdesk 原生不进行签名)。
- Intercom:签名无效:检查应用的 Client secret(Developer Hub → Basic information);签名为 X-Hub-Signature 请求头中的 HMAC-SHA1。
- 未同步:确认触发器/webhook 的请求体包含预期字段(id、subject、status、priority 以及提交人邮箱),并且该集成已激活。
- 工单没有关联联系人:关联是通过提交人邮箱进行的。如果该邮箱尚不是联系人,工单会以未关联状态被创建。URL 返回 404 表示集成已停用或令牌已更改。