AI PLAY玩法更新持续收录
← 回到更新流

2026-09-03 · 原文发布日

让Placetel语音客服直接操作Zendesk工单

该流程把n8n webhook接到Placetel AI语音代理上,每通电话请求带一个operation字段:按来电号码(统一转成+49格式)查Zendesk用户做身份核实,或新建回访、通话记录、普通工单,也可查询未结工单、更新状态与用户资料。每个动作都返回一段适合语音播报的简短话术和关键ID,供语音代理继续对话。需在Zendesk配OAuth2、在Placetel里把自定义工具指向该webhook。

原文要点

Placetel 官方发布的免费 n8n 工作流:Placetel AI 语音代理以自定义工具形式 POST 到 /placetel-zendesk webhook,每次请求带 operation 字段与来电上下文;工作流把来电号码统一规范成德国 +49/49 格式后按 operation 路由到 Zendesk 动作——按号码搜用户做身份核实,新建回访、通话记录或普通工单,查未结工单,更新工单状态/内部备注/升级,或更新用户资料;每个分支返回含简短语音话术与 customer_id、ticket_id 的 JSON 供代理播报。设置要求 Zendesk OAuth2 凭据、号码存储格式一致,且上线前需自行核对身份验证逻辑与 verify_value 取值。

这次做成什么

把 Placetel 语音代理接到 n8n webhook,让电话里一句话就能查客户、开工单、改状态,并把结果变成可直接播报的话术返回。

准备什么

  • 一个已激活工作流可公网访问的 n8n 实例
  • Zendesk 账号及在 n8n 配置好的 OAuth2 凭据,且实例支持按电话搜用户
  • Placetel AI Voice Agent 配置权限,能添加自定义工具并固定发送 operation 与 %%caller_number%%
  • Zendesk 用户电话字段已按一致格式存储,否则号码匹配会失败

具体怎么做

  1. 建统一入口 webhook

    新建工作流,Webhook 节点 POST 路径 /placetel-zendesk,激活后复制生产 URL。在 Placetel 语音代理的自定义工具里把该 URL 设为回调地址,并配置每次都发送 operation 字段和 phone: %%caller_number%%。

  2. 号码规范化

    在 webhook 后加 Code 节点,把来电号码转成统一德国格式:去掉空格与括号,把 0049 开头换成 +49,把本地 0 开头换成 +49,输出 normalized_phone。这是本站设计的参考实现,需按你 Zendesk 里实际存储格式核对。

  3. 按 operation 路由

    加 Switch 节点按 operation 分流到 Zendesk 节点:来电核实走用户搜索(query 用 normalized_phone);回访、通话记录、普通工单分别建对应类型工单;查该用户未结工单;改工单状态/加内部备注/升级;改用户资料。每个 Zendesk 节点选择同一个 OAuth2 凭据。注意:operation 的具体取值(如 identify_caller、create_callback_ticket 等)为本站根据原文动作清单拟定的命名,原文未公布字段名,导入原模板后需逐一核对再定稿。

  4. 身份核实分支

    搜索到唯一用户即视为匹配,可再比对请求里的 verify_value(如姓名或邮编片段,字段需自行对应你的 Zendesk 用户字段),返回 {"speech":"已核实您的身份,请问有什么可以帮您?","customer_id":...};未找到则返回提示未找到客户的话术。

  5. 统一话术返回

    每个分支末端汇入 Respond to Webhook,统一输出 {"speech":"一句适合播报的中文或德文短句","customer_id":..., "ticket_id":...}。用下方合成数据在 n8n 里手动执行一次,确认各分支都能返回。

可直接复制的材料

号码规范化参考代码(本站设计,放 Code 节点)

仅处理德国号码;非德国来电或 Zendesk 内存为其他格式时需自行扩展,未实测。

const raw = ($json.phone || '').replace(/[\s\-\(\)]/g, '');
let normalized = raw;
if (normalized.startsWith('0049')) {
  normalized = '+49' + normalized.slice(4);
} else if (normalized.startsWith('0') && !normalized.startsWith('+')) {
  normalized = '+49' + normalized.slice(1);
}
return [{ json: { ...$json, normalized_phone: normalized } }];

operation 路由与测试数据(合成)

operation 取值与字段名需在导入原模板后逐一核对,ticket_id 等数字为本站虚构示意。

本站拟定的操作取值(原文只列动作类型、未公布字段名,导入原模板后需核对):identify_caller(核实来电者)、create_callback_ticket(回访工单)、create_call_log(通话记录)、create_ticket(普通工单)、list_open_tickets(查未结工单)、update_ticket(改状态/备注/升级)、update_user(改用户资料)。

测试请求示例:
{"operation":"create_callback_ticket","phone":"+49 171 2345678","subject":"客户要求回电讨论发票问题","priority":"normal"}

预期返回示例:
{"speech":"好的,已为您登记回访工单,我们会尽快联系您。","ticket_id":10245,"customer_id":88712}

输入与输出示例

本站虚构演示,号码经规范化匹配到合成客户,非真实 Zendesk 返回。

输入

{"operation":"identify_caller","phone":"0171 2345678","verify_value":"Müller"}

对应输出

{"speech":"您好,Müller 女士,已核实您的身份。您目前有2个未结工单,请问想处理哪一个?","customer_id":88712,"verified":true}

做完检查这些

  • 从 Placetel 侧发起测试呼叫,n8n 执行记录里能看到 operation 与 phone 字段到达
  • 本地号码 0171… 经过 Code 节点后变为 +49171…,且能命中 Zendesk 用户搜索
  • 七个 operation 分支各自返回包含 speech 与相关 ID 的 JSON,语音代理能完整播报 speech
  • 未匹配到号码时返回的是友好的“未找到客户”话术而不是报错

容易卡住的地方

  • Zendesk 用户电话格式不统一会导致按号码搜索漏匹配,上线前需先清洗存量数据
  • verify_value 比哪些字段原文未固定,需按你 Zendesk 用户字段自行设计,否则身份核实形同虚设
  • Placetel 自定义工具必须固定发送 operation 与 %%caller_number%%,缺字段会让 Switch 走错分支
  • webhook 需公网可达且工作流处于激活状态,测试 URL 与生产 URL 不要混用
  • 模板免费,但 Zendesk 与 Placetel 服务本身各自计费

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Manage Zendesk tickets and contacts via Placetel AI Voice Agent calls
原作者
Placetel
原始发布日期
2026-09-03T07:33:05.693Z
来源
https://n8n.io/workflows/19109