2026-09-03 · 原文发布日
Placetel语音代理对接Salesforce五种操作
流程暴露一个带请求头鉴权的webhook,Placetel AI语音代理按请求体里的vorgang字段分流:查来电是否为老客户(按Phone/MobilePhone搜联系人)、建高优先级回访任务、开Case、用REST PATCH只更新提交过的联系人字段,或新建Lead,不认识的vorgang返回400及允许清单。搭建需Salesforce OAuth2、把联系人更新URL换成你的My Domain,并在Placetel侧配置同样的鉴权头。
原文要点
原模板暴露一个带请求头鉴权的 webhook 供 Placetel AI 语音代理调用,按请求体 vorgang 字段分五种操作:bestandskunde_pruefen 先规范化号码再按 Phone/MobilePhone 搜联系人并返回是否找到;rueckruf_erfassen 建高优先级回访 Task 返回任务 ID;ticket_anlegen 按主题、描述、优先级建 Case;kontakt_aktualisieren 仅用提交过的字段组装映射并 REST PATCH 更新联系人;lead_anlegen 新建 Lead;不认识的 vorgang 返回 HTTP 400 及允许清单。
这次做成什么
搭好这条语音代理到 Salesforce 的分流接口,并用本站设计的六组合成请求体逐一打 webhook,验证鉴权拦截、五种 vorgang 分流、PATCH 只更新提交字段与未知操作的 400 兜底,全程使用测试数据。
准备什么
- n8n 实例及可公网访问的生产 webhook URL
- Salesforce OAuth2 连接凭据,以及你的 Salesforce My Domain 域名
- Placetel AI 语音代理的配置权限,能设置出站 POST 与自定义请求头
- 一个测试环境共享令牌值(勿使用任何生产密钥)
具体怎么做
建 Salesforce OAuth2 凭据
在 n8n 凭据页新建 Salesforce OAuth2 连接并授权,然后在模板各 Salesforce 节点和联系人更新的 REST API 请求节点中统一选中该凭据。
配 webhook 请求头鉴权
为 webhook 节点建 Header Auth 类凭据(共享令牌头),记下头名与值,稍后在 Placetel 侧使用完全相同的组合。
替换 My Domain
把联系人更新请求 URL 中的 https://YOUR_INSTANCE.my.salesforce.com 换成你自己的 Salesforce My Domain,保存后检查该节点不再含占位域名。
对接 Placetel AI
复制 n8n 生产 webhook URL,在 Placetel AI 侧配置 POST 调用,发送同样的鉴权头,请求体携带 vorgang 及对应字段。
逐条验证五种操作与兜底
用下方合成请求体分别测试查客户、建回访、开 Case、PATCH 联系人、建 Lead,最后发一个未知 vorgang 确认收到 HTTP 400 与允许操作清单。
可直接复制的材料
vorgang 分流对照表
依据原文五种操作整理的对照表,用于核对分流是否符合预期。
{
"bestandskunde_pruefen": {"动作": "规范化号码后按 Phone/MobilePhone 搜索联系人", "返回": "是否找到及联系人明细"},
"rueckruf_erfassen": {"动作": "创建高优先级回访 Task", "返回": "成功标志与 Task ID"},
"ticket_anlegen": {"动作": "按主题、描述、优先级创建 Case", "返回": "成功标志与 Case ID"},
"kontakt_aktualisieren": {"动作": "仅用提交字段组装映射并 REST PATCH 更新联系人", "返回": "成功标志"},
"lead_anlegen": {"动作": "用姓名、公司、电话、邮箱新建 Lead", "返回": "成功标志与 Lead ID"},
"兜底": {"动作": "vorgang 不在清单内", "返回": "HTTP 400 与允许操作清单"}
}鉴权头配置示例
本站设计的示例,头名可自定但两侧必须一致;令牌仅用测试环境。
{
"headerName": "X-Placetel-Token",
"headerValue": "替换为测试环境共享令牌",
"说明": "n8n 的 Header Auth 凭据与 Placetel AI 出站请求必须使用同一头名与值"
}六组合成测试请求体
本站合成的测试请求体,字段名为示意,确切字段需以原模板读取的键核对;联系人与 ID 均为虚构。
[
{"vorgang": "bestandskunde_pruefen", "phone": "+49 30 555123"},
{"vorgang": "rueckruf_erfassen", "name": "测试客户乙", "phone": "+49 30 555123", "preferredTime": "2026-09-05 10:00", "note": "询问发票"},
{"vorgang": "ticket_anlegen", "subject": "无法登录门户", "description": "测试客户丙报告登录失败", "priority": "High", "contactId": "0033b00000XyZaBcD"},
{"vorgang": "kontakt_aktualisieren", "contactId": "0033b00000XyZaBcD", "email": "test-c@example.test"},
{"vorgang": "lead_anlegen", "lastName": "测试丁", "company": "示例测试公司", "phone": "+49 89 555987", "email": "test-d@example.test"},
{"vorgang": "unbekannt", "note": "应返回400及允许清单"}
]输入与输出示例
本站虚构演示,响应字段与 ID 为示意设定,非模板实际返回。
输入
带正确鉴权头 POST {"vorgang":"rueckruf_erfassen","name":"测试客户乙","phone":"+49 30 555123","preferredTime":"2026-09-05 10:00","note":"询问发票"}对应输出
{"success":true,"taskId":"00T3b00000AbCdEfG","message":"Rueckruf-Task wurde erstellt"},同时 Salesforce 中出现一条高优先级回访 Task,备注含来电号码与期望回电时间 2026-09-05 10:00做完检查这些
- 缺少鉴权头或令牌错误的请求被拒,带正确头的请求才进入分流逻辑
- bestandskunde_pruefen 返回是否找到客户以及联系人明细
- kontakt_aktualisieren 只 PATCH 提交过的字段,未提交字段保持原值不被清空
- 发送未知 vorgang 时收到 HTTP 400,且响应体列出允许的操作清单
容易卡住的地方
- vorgang 取值必须与原模板完全一致,大小写或拼写差异都会落入 400 分支
- My Domain 不替换会把联系人 PATCH 发到占位域名导致更新失败
- bestandskunde_pruefen 会先规范化号码,测试号码格式要与 Salesforce 中存储格式可匹配
- Placetel 侧与 n8n 侧的鉴权头名和值必须一致;本页请求体为本站合成示意,具体字段名以原模板核对,本站未实测
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Route Placetel AI Voice Agent calls to Salesforce CRM
- 原作者
- Placetel
- 原始发布日期
- 2026-09-03T07:32:46.259Z
- 来源
- https://n8n.io/workflows/19108