工作流介绍
Dialpad 到 Syncro 集成工作流分析
此 N8n 工作流模板,标题为 “Dialpad 到 Syncro”,旨在自动化 Dialpad(基于云的商务电话系统) 和 Syncro(面向 MSP 的 IT 服务管理平台) 之间的集成。它使企业能够在通过 Dialpad 接到入站电话时,根据来电者身份自动在 Syncro 中创建或更新支持工单。该工作流通过电话号码智能匹配客户或联系人,并将相关数据记录到 Google Sheets 中以进行跟踪和报告。
工作流功能
此工作流的主要功能是:
- 监听来自 Dialpad 的入站 webhook 事件(由入站电话触发)
- 通过使用来电者的电话号码搜索 Syncro 的数据库来识别来电方
- 确定来电者是已知的 联系人 还是 客户
- 检查是否已有与该联系人关联的开放工单
- 创建新工单 或 向现有工单添加评论
- 将通话和相应的工单信息记录到 Google Sheets 中,用于审计和分析
此自动化通过确保每个入站电话都能启动可追溯的服务记录,从而简化了客户服务运营,减少了手动输入并提高了响应时间。
主要功能和能力
-
Webhook 触发执行
- 监听来自 Dialpad 的实时
POST请求,使其成为事件驱动且响应迅速。
- 监听来自 Dialpad 的实时
-
动态客户/联系人匹配
- 使用来电者的电话号码(清除格式,如
+、前导1或0)来搜索 Syncro 的 API。 - 同时处理个人 联系人 和公司级别的 客户。
- 使用来电者的电话号码(清除格式,如
-
条件逻辑分支
- 使用多个
IF节点根据以下条件进行决策:- 通话方向(
inbound) - 搜索结果长度(是否存在 1 个匹配项)
- 开放工单的存在性
- 通话方向(
- 使用多个
-
工单管理自动化
- 如果不存在开放工单,则创建新工单
- 更新现有开放工单并添加通话详情,而不是创建重复项
-
数据丰富和转换
- 使用 Function 节点从原始 API 响应中提取结构化数据
- 使用全名、电话号码和公司名称格式化动态消息
-
通过 Google Sheets 进行外部日志记录
- 在 Google Sheets 中记录每个操作(工单创建/更新),包含:
- 通话 ID
- 工单 ID
- 有助于审计、计费或绩效跟踪
- 在 Google Sheets 中记录每个操作(工单创建/更新),包含:
-
环境配置
- 使用
EnvVariablesSet 节点集中配置(如基础 URL 和用户 ID),以便于维护。
- 使用
-
错误恢复和备用路径
- 包含
NoOp(无操作)节点作为备用路径,以防止因数据丢失而导致执行中断。
- 包含
主要节点及其用途
| 节点名称 | 类型 | 用途 |
|---|---|---|
| Webhook | Webhook Trigger | 在发生入站电话时接收来自 Dialpad 的 POST 负载 |
| IF (Direction Check) | IF Condition | 确保仅处理 inbound 通话;忽略出站/内部通话 |
| EnvVariables | Set Node | 存储环境常量,如 Syncro 基础 URL 和默认用户 ID |
| GetCustomer | HTTP Request | 使用清理后的来电号码查询 Syncro 的搜索 API |
| Contacts | Function Node | 解析 API 响应以提取联系人记录 |
| Customers | Function Node | 解析 API 响应以提取客户(公司)记录 |
| IFContacts / IFCustomers | IF Conditions | 检查是否恰好找到一个联系人或客户 |
| GetTicket | HTTP Request | 搜索与已识别联系人关联的开放工单 |
| IFMoreThanOne | IF Condition | 确定是否存在开放工单(长度 > 0),然后决定更新或创建 |
| UpdateTicket | HTTP Request | 向现有工单添加隐藏评论,记录通话信息 |
| CreateTicket / CreateTicketForCustomer | HTTP Request | 在联系人或客户下创建新工单 |
| Set Nodes (ForGoogle)* | Set Node | 为日志记录准备结构化数据(通话 ID + 工单 ID) |
| **Google Sheets * ** | Google Sheets Node | 将日志条目追加到电子表格中进行跟踪 |
| **NoOp * ** | No Operation Node | 作为虚拟输出,处理未采取任何操作的情况 |
用例和优势
✅ 用例
- 托管服务提供商 (MSPs):自动跟踪客户互动,无需代理在每次通话后手动创建工单。
- 帮助台:在代理接听电话之前提供有关来电者的上下文信息,从而提高首次响应效率。
- 销售和支持团队:维护所有入站通信的详细日志,这些日志直接与 Syncro 中的类似 CRM 的记录关联。
- 合规和审计:在 Google Sheets 中保留不可变的日志,将通话与服务活动联系起来。
✅ 优势
- 减少手动工作:无需手动查找客户和打开工单。
- 防止重复工单:智能逻辑可避免系统混乱。
- 提高责任感:每次通话都会留下数字足迹。
- 增强情境意识:代理可以在接听或回拨电话之前查看最近的活动。
- 可扩展且可配置:可以扩展以包含 SMS、语音邮件或电子邮件集成。
分步工作流逻辑
-
触发:检测到入站电话
- Dialpad 向
/moezdialpadwebhook 端点发送POST请求。 - 有效负载包括来电号码(
external_number)、通话 ID 和方向。
- Dialpad 向
-
过滤:仅处理入站电话
- 第一个
IF节点检查direction === 'inbound'。 - 如果为 false,则路由到
NoOp2(不执行任何操作)。 - 如果为 true,则继续下一步。
- 第一个
-
加载环境变量
EnvVariables节点注入:syncro_baseurl:Syncro API 的基础 URL- 其他稍后使用的静态值(例如,用户 ID)
-
在 Syncro 中搜索来电者
GetCustomer向以下地址发出 HTTP GET 请求:{{syncro_baseurl}}/api/v1/search?query={cleaned_phone}- 使用
.replace()清理电话号码,以删除+、前导1或0。
-
将结果解析为联系人和客户
- 两个并行
Function节点(Contacts和Customers)解析搜索结果 JSON:- 过滤
_index === 'contacts'或'customers'的条目 - 提取关键字段:姓名、ID、customer_id、电话
- 过滤
- 输出匹配的联系人/客户数组
- 两个并行
-
检查是否恰好有一个匹配项
IFContacts:如果找到一个联系人 → 继续检查工单IFCustomers:如果找到一个客户 → 继续创建客户级别的工单- 否则,路由到
NoOp/NoOp1(不执行任何操作)
-
检查开放工单(按联系人)
- 如果找到联系人,
GetTicket会查询:/api/v1/tickets?contact_id=X&status=Not%20Closed - 返回该联系人的开放工单列表
- 如果找到联系人,
-
决定:更新还是创建工单?
IFMoreThanOne评估:- 是否至少有一个开放工单?
- 如果是 → 转到
UpdateTicket - 如果否 → 转到
CreateTicket
-
更新现有工单
UpdateTicket向第一个开放工单发布评论:- 主题:“来自 John Doe 的电话 (+1234567890)”
- 正文:“John Doe 打来电话。”
- 隐藏:true(内部注释)
- 分配给默认用户
- 然后通过
ForGoogle→Google Sheets准备并记录数据
-
创建新工单
- 如果没有开放工单:
CreateTicket创建一个新工单,包含:- 来自匹配联系人的客户 ID 和联系人 ID
- 动态主题行
- 状态:“进行中”
- 分配给默认用户
- 然后通过
ForGoogle1→Google Sheets1进行记录
- 如果没有开放工单:
-
处理客户级别备用方案
- 如果未找到联系人但找到了客户:
CreateTicketForCustomer在组织级别创建工单- 在主题中包含公司名称
- 通过
ForGoogle2→Google Sheets2进行记录
- 如果未找到联系人但找到了客户:
-
记录到 Google Sheets
- 所有成功的操作(更新/创建)都会导致追加一行:
- A 列:通话 ID
- B 列:工单 ID
- 三个独立的路径确保所有路径都得到适当记录
- 所有成功的操作(更新/创建)都会导致追加一行:
摘要
此 Dialpad 到 Syncro 工作流例证了 n8n 如何通过智能自动化连接通信平台与服务管理系统。通过结合 webhook、条件逻辑、API 集成和外部日志记录,它为增强客户服务工作流提供了一个强大的解决方案——确保没有通话被遗漏,并且每次互动都能为更好的支持结果做出贡献。
使用方法:下载 JSON 文件,然后在 n8n 中选择“从文件导入”。