摘要
呼叫中心和AI客服打通之后,技术人员最常被问的两个问题是:通话能不能自动生成标签,工单和通话记录能不能相互绑定。这两个问题看着简单,落地时涉及数据模型设计、接口对接、回调机制、标签规则配置、异常处理和录音安全。本文从对接落地的角度,把通话记录、标签、工单三者的关系拆开讲,给出完整的数据流时序图、四张核心表结构(通话记录表、标签表、工单表、关联表)及分表归档策略、标签规则YAML配置片段、接口回调的字段说明与验签、幂等处理思路、工单与通话记录关联的三种方案(call_id直连、工单号回写、中间关联表)及适用场景、录音签名URL与访问控制的具体做法,最后给效果验证口径、指标来源说明、常见坑和检查清单。文章重点回答一个问题:呼叫中心、AI客服、工单系统三方数据怎么串起来,才能做到通话结束标签自动生成、工单能按通话记录追溯、通话能按工单反查。供对接开发和运维人员参考。
关键词
呼叫中心;AI客服;通话自动打标签;工单关联;call_id;接口回调;数据模型;录音安全
TL;DR(结论先行)
通话记录、标签、工单三者靠call_id串起来,call_id是通话的唯一标识,工单通过call_id关联通话记录,标签通过call_id关联到具体通话。
自动打标签建议在通话结束后异步处理:先落通话记录,再跑ASR转写和标签规则,最后写标签表,避免阻塞通话主流程。
工单和通话记录关联有三种方案:call_id直连最简单、工单号回写适合已有工单系统、中间关联表适合一对多场景,按现有系统选。
接口回调必须做验签和幂等,同一call_id重复推送不能重复建工单或重复打标签,用唯一索引或状态机控制。
录音地址不要直接暴露存储路径,用带有效期的签名URL,访问要鉴权;通话记录表按时间分表或归档,数据量大了查询才不拖。
效果验证看三个指标:标签生成率、工单关联率、通话可追溯率,每月统计一次,和上线前基线对比;参考目标来自内部实践,按项目实际调整。
前言:呼叫中心和AI客服打通之后,希望通话自动生成标签,工单和通话记录相互绑定。很多技术人员想了解两者数据关联的实现方案与配置要点。这篇文章把数据模型、接口对接、标签规则和关联方案讲清楚,尽量多给表结构和配置片段,少说虚的。
一、先搞清楚要关联什么:通话记录、标签、工单三者的关系
1.1 三个对象分别是什么
| 通话记录 | 一通电话的元数据:主叫、被叫、开始时间、时长、录音地址、坐席工号 | call_id |
| 标签 | 从通话内容提取的结构化标记:意图、需求、情绪、处理结果 | tag_id,关联call_id |
| 工单 | 客服跟进的任务单:问题描述、处理人、状态、处理结果 | work_order_no,关联call_id |
1.2 三者靠什么串起来
核心就一个字段:call_id。它是呼叫中心平台为每通电话生成的唯一标识,通话记录、标签、工单都围绕它关联:
text
call_id(通话唯一标识)
├── 通话记录表:call_id 是主键或唯一索引
├── 标签表:call_id 是外键,一通电话可以有多个标签
└── 工单表:call_id 是外键,一个工单对应一通或多通电话
没有call_id,就只能靠手机号+时间窗口模糊匹配,准确率低、排查麻烦。所以对接的第一步,是确认呼叫中心平台能稳定提供call_id,并且在录音、转写、回调各环节都带着它。接口字段定义建议以平台官方接口文档为准,联调前先拉一份字段对照表。
1.3 关联的业务价值
-
客服接电话时,能看到这通电话关联的工单历史,不用客户重复描述;
-
售后纠纷时,按工单号能反查到所有相关通话录音;
-
质检时,按标签筛选通话,比如筛出“投诉”标签的通话重点听;
-
统计时,按标签和工单状态分析问题分布和处理效率。
二、技术链路:从通话到工单的完整数据流
2.1 数据流时序图
下面用文字版时序图把各环节的同步/异步关系画出来,实际画成图时可按这个顺序排泳道:客户、呼叫中心、AI客服、ASR服务、工单系统五条泳道。
text
客户 呼叫中心 AI客服 ASR服务 工单系统
│ │ │ │ │
│──拨入──────→│ │ │ │
│ │──通话开始回调──→│ │ │
│ │ (call_id等) │──落通话记录────→│ │
│ │ │ (状态:进行中) │ │
│──通话中────→│ │ │ │
│ │──通话结束回调──→│ │ │
│ │ (时长/录音) │──更新通话记录──→│ │
│ │ │ (状态:已结束) │ │
│ │──录音完成回调──→│ │ │
│ │ │──提交转写任务──→│ │
│ │ │ │──转写完成────→│
│ │ │←─转写结果回调───│ │
│ │ │──跑标签规则 │ │
│ │ │──写标签表 │ │
│ │ │──命中建单规则──────────────────→│
│ │ │ │ │──建工单
│ │ │←──────────────工单创建结果──────│
│ │ │──回写call_id │
│ │ │ │ │
└─互查:按call_id查记录+标签+工单,按工单号反查通话─────────────────┘
图注:呼叫中心对接AI客服的时序示意。通话开始和结束回调同步落库,录音完成后的转写、标签生成、工单创建都异步做,避免阻塞通话主流程。实际画图时建议用泳道图工具输出PNG,配alt文本“呼叫中心对接AI客服数据流时序图”。
2.2 处理时序建议
| 通话开始 | 呼叫中心推送call_id和主被叫信息 | 同步 | AI客服侧先落一条通话记录,状态为“进行中” |
| 通话结束 | 推送挂机事件、时长、录音地址 | 同步 | 更新通话记录状态为“已结束” |
| 录音完成 | 推送录音可下载事件 | 异步 | 触发ASR转写任务 |
| 转写完成 | AI客服侧拿到转写文本 | 异步 | 跑标签规则,写标签表 |
| 标签生成 | 命中工单创建规则 | 异步 | 创建工单,回写call_id |
| 工单处理 | 坐席处理工单 | 人工 | 工单状态流转,和通话记录保持关联 |
这个时序的核心原则是:通话主流程只做轻量落库,ASR转写、标签生成、工单创建都异步做。同步做重活,通话高峰期容易超时。
三、数据模型设计:四张核心表与分表归档
3.1 通话记录表
sql
CREATE TABLE call_record (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
call_id VARCHAR(64) NOT NULL COMMENT '呼叫中心通话唯一ID',
caller_number VARCHAR(32) DEFAULT NULL COMMENT '主叫号码,脱敏存储',
callee_number VARCHAR(32) DEFAULT NULL COMMENT '被叫号码',
direction TINYINT NOT NULL DEFAULT 1 COMMENT '1呼入 2内部转接',
agent_id VARCHAR(32) DEFAULT NULL COMMENT '坐席工号',
start_time DATETIME NOT NULL COMMENT '通话开始时间',
end_time DATETIME DEFAULT NULL COMMENT '通话结束时间',
duration_sec INT DEFAULT NULL COMMENT '通话时长(秒)',
recording_key VARCHAR(512) DEFAULT NULL COMMENT '录音对象存储key,不存完整URL',
transcript_status TINYINT NOT NULL DEFAULT 0 COMMENT '0未转写 1转写中 2已完成 3失败',
transcript_text MEDIUMTEXT DEFAULT NULL COMMENT '转写文本',
status TINYINT NOT NULL DEFAULT 1 COMMENT '1进行中 2已结束 3已归档',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_call_id (call_id),
KEY idx_caller_time (caller_number, start_time),
KEY idx_agent_time (agent_id, start_time),
KEY idx_transcript (transcript_status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
关键字段说明:
-
call_id:唯一索引,保证幂等,重复推送不会建多条;
-
transcript_status:转写状态,用于异步任务重试和监控;
-
recording_key:只存对象存储的key,不存完整URL。完整URL由服务端按需生成签名URL,避免地址泄露和过期失效;
-
direction:只区分呼入和内部转接,不涉及其他方向。
3.2 分表与归档策略
通话记录是典型的“写多、读少、时间敏感”数据。单表超过千万行后,查询和索引维护都会变慢。建议按时间分表或归档:
| 按月分表 | call_record_202610、call_record_202611 | 数据量大、查询多按月份范围 |
| 按年分表 | call_record_2026 | 数据量中等、查询跨度大 |
| 热冷分离 | 近3个月留热表,历史归档到冷表/冷存储 | 查询集中在近期,历史只做追溯 |
| 分区表 | MySQL按start_time RANGE分区 | 不想改表名、查询带时间条件 |
归档时注意三点:一是归档前确认工单关联关系已落到关联表,别只依赖通话记录表;二是归档表保留索引,不然反查照样慢;三是录音文件按生命周期规则转冷存储,取回有延迟,纠纷核验要提前取。
3.3 标签表
sql
CREATE TABLE call_tag (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
call_id VARCHAR(64) NOT NULL COMMENT '关联通话ID',
tag_name VARCHAR(64) NOT NULL COMMENT '标签名',
tag_type VARCHAR(16) NOT NULL COMMENT 'intent/need/emotion/result',
tag_value VARCHAR(128) DEFAULT NULL COMMENT '标签值,如具体意图',
confidence DECIMAL(4,2) DEFAULT NULL COMMENT '置信度0-1',
source VARCHAR(16) NOT NULL DEFAULT 'ai' COMMENT 'ai/manual',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_call_tag (call_id, tag_name, tag_value),
KEY idx_tag (tag_name, tag_value),
KEY idx_call (call_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
关键字段说明:
-
uk_call_tag:唯一索引防止同一通话同一标签重复写入;
-
confidence:置信度,低于阈值的标签可以标记为待人工确认;
-
source:区分AI生成和人工标注,人工可以修正AI标签。
3.4 工单表
sql
CREATE TABLE work_order (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
work_order_no VARCHAR(64) NOT NULL COMMENT '工单号',
call_id VARCHAR(64) DEFAULT NULL COMMENT '关联通话ID',
customer_id VARCHAR(64) DEFAULT NULL COMMENT '统一客户ID',
order_type VARCHAR(32) NOT NULL COMMENT '工单类型:咨询/投诉/售后/预约',
title VARCHAR(256) NOT NULL COMMENT '工单标题',
description TEXT DEFAULT NULL COMMENT '问题描述',
priority TINYINT NOT NULL DEFAULT 2 COMMENT '1高 2中 3低',
status TINYINT NOT NULL DEFAULT 1 COMMENT '1待处理 2处理中 3已解决 4已关闭',
assignee VARCHAR(32) DEFAULT NULL COMMENT '处理人',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_work_order_no (work_order_no),
KEY idx_call_id (call_id),
KEY idx_customer (customer_id),
KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3.5 通话-工单关联表(一对多场景用)
如果一个工单可能关联多通电话(比如客户多次来电跟进同一问题),或者一通电话可能生成多个工单,建议加一张关联表:
sql
CREATE TABLE call_work_order_rel (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
call_id VARCHAR(64) NOT NULL,
work_order_no VARCHAR(64) NOT NULL,
rel_type VARCHAR(16) NOT NULL DEFAULT 'primary' COMMENT 'primary/related/follow_up',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_call_order (call_id, work_order_no),
KEY idx_work_order (work_order_no)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
| call_id直连工单表 | 一通电话一个工单 | 简单,查询快 | 一对多场景不够用 |
| 工单号回写通话记录 | 已有工单系统,改动小 | 兼容存量系统 | 通话记录表要加字段,多工单存不下 |
| 中间关联表 | 一对多、多对多 | 灵活,历史关系可保留 | 多一张表,查询要多一次join |
小型门店建议先用call_id直连,简单够用;连锁或工单流转复杂的,用中间关联表。
四、通话自动打标签:规则设计与配置
4.1 标签规则从哪来
标签规则不是拍脑袋定的,来源有三个:
业务需求:客服主管要看的分类,比如投诉、退费、预约、售后;
历史通话分析:从最近三个月的转写文本里,统计高频问题和关键词;
工单类型反推:工单系统里已有的类型,对应到通话标签,方便关联。
4.2 标签规则配置片段
下面是一段YAML示例,字段名以实际平台为准,重点是结构:
yaml
# 通话自动打标签规则(示例)
version: "2026-10-26"
tag_rules:
– tag_name: 投诉
tag_type: intent
trigger:
any_of:
– { keywords: ["投诉", "不满意", "差评", "要退费"] }
confidence_threshold: 0.7
action:
create_work_order: true
work_order_type: complaint
priority: 1
– tag_name: 预约
tag_type: intent
trigger:
all_of:
– { keywords: ["预约", "约时间", "到店"] }
– { entity: time, required: true }
confidence_threshold: 0.8
action:
create_work_order: true
work_order_type: appointment
priority: 2
– tag_name: 售后咨询
tag_type: intent
trigger:
any_of:
– { keywords: ["保修", "返修", "质量问题", "上次没修好"] }
confidence_threshold: 0.7
action:
create_work_order: true
work_order_type: after_sale
priority: 2
– tag_name: 情绪激动
tag_type: emotion
trigger:
any_of:
– { keywords: ["生气", "太差了", "没人管"] }
– { asr_volume: high, duration_sec: 10 }
confidence_threshold: 0.6
action:
notify_supervisor: true
work_order_rules:
auto_create: true
dedup_window_minutes: 30 # 同一客户30分钟内重复来电不重复建单
default_assignee: duty_manager
| tag_rules | 标签规则列表 | 标签管理/规则引擎 |
| trigger.keywords | 关键词触发 | 关键词/敏感词配置 |
| trigger.entity | 实体触发 | 实体抽取/槽位配置 |
| confidence_threshold | 置信度阈值 | 标签置信度配置 |
| action.create_work_order | 命中后建工单 | 工单创建规则/动作配置 |
| dedup_window_minutes | 去重窗口 | 工单去重规则 |
4.3 异步处理与幂等
标签生成和工单创建建议异步做,核心是幂等:
python
def handle_call_ended(call_id, recording_key):
# 1. 幂等检查:通话记录是否已存在
if call_record_exists(call_id):
update_call_record(call_id, recording_key)
else:
insert_call_record(call_id, recording_key)
# 2. 提交异步转写任务
submit_transcript_task(call_id, recording_key)
def handle_transcript_done(call_id, transcript_text):
# 1. 更新转写状态
update_transcript(call_id, transcript_text)
# 2. 跑标签规则
tags = run_tag_rules(transcript_text)
# 3. 写标签表,用唯一索引防重
for tag in tags:
upsert_call_tag(call_id, tag)
# 4. 按规则创建工单,用call_id+工单类型做幂等
if should_create_work_order(tags):
upsert_work_order(call_id, tags)
幂等的三个关键点:
-
通话记录用uk_call_id防重;
-
标签用uk_call_tag防重;
-
工单用call_id + order_type做业务幂等,同一通话同一类型不重复建单。
五、工单与通话记录关联的三种方案
5.1 方案一:call_id直连
工单表加call_id字段,创建工单时写入。查询时按call_id join通话记录表。
适用:一通电话对应一个工单,小型门店最常见。
注意:call_id可能为空(比如手工建单),查询时要处理空值。
5.2 方案二:工单号回写通话记录
通话记录表加work_order_no字段,工单创建后回写。适合已有工单系统、不想改工单表结构的场景。
适用:工单系统是存量系统,改动成本高。
注意:一通电话关联多个工单时,单字段存不下,需要逗号分隔或JSON,查询不方便,不推荐一对多场景用。
5.3 方案三:中间关联表
用call_work_order_rel表维护多对多关系,通话和工单各自独立,关联关系单独存。
适用:连锁机构、工单流转复杂、一通电话可能关联多个工单或多个通话关联同一工单。
注意:查询要多一次join,但灵活性最好,历史关系可追溯。
5.4 关联查询示例
按工单号查所有相关通话:
sql
SELECT c.call_id, c.start_time, c.duration_sec, c.recording_key,
GROUP_CONCAT(t.tag_name) AS tags
FROM work_order w
JOIN call_work_order_rel r ON r.work_order_no = w.work_order_no
JOIN call_record c ON c.call_id = r.call_id
LEFT JOIN call_tag t ON t.call_id = c.call_id
WHERE w.work_order_no = 'WO202510260018'
GROUP BY c.call_id
ORDER BY c.start_time;
按通话查关联工单:
sql
SELECT w.work_order_no, w.order_type, w.status, w.assignee
FROM call_record c
JOIN call_work_order_rel r ON r.call_id = c.call_id
JOIN work_order w ON w.work_order_no = r.work_order_no
WHERE c.call_id = '9f3c2a1b';
六、接口对接与回调机制
6.1 需要对接的接口
| 通话开始回调 | 呼叫中心→AI客服 | 落通话记录初始状态 | call_id、主被叫、开始时间 |
| 通话结束回调 | 呼叫中心→AI客服 | 更新时长和状态 | call_id、结束时间、时长 |
| 录音完成回调 | 呼叫中心→AI客服 | 触发转写 | call_id、录音key |
| 转写结果回调 | ASR服务→AI客服 | 拿转写文本 | call_id、文本、置信度 |
| 工单创建接口 | AI客服→工单系统 | 创建工单 | call_id、类型、描述、优先级 |
| 工单状态回调 | 工单系统→AI客服 | 同步处理状态 | work_order_no、status |
6.2 回调字段说明与验签
通话结束回调示例:
json
{
"event": "call.ended",
"call_id": "9f3c2a1b",
"caller": "138****6688",
"callee": "400****1234",
"direction": 1,
"agent_id": "A023",
"start_time": "2026-10-26 10:12:33",
"end_time": "2026-10-26 10:15:01",
"duration_sec": 148,
"recording_key": "recordings/20261026/9f3c2a1b.mp3",
"timestamp": 1761447301,
"sign": "sha256签名"
}
| event | 事件类型 | 按事件类型分发处理 |
| call_id | 通话唯一ID | 幂等键,必填校验 |
| recording_key | 录音对象存储key | 不直接暴露URL,按需生成签名URL |
| timestamp | 推送时间戳 | 校验时效,防重放,建议5分钟窗口 |
| sign | 签名 | 验签,防伪造回调 |
验签建议:用平台提供的密钥对event + call_id + timestamp + 业务字段做HMAC-SHA256,服务端收到后重算比对,不一致直接拒绝,并记日志。签名密钥定期轮换,别写死在代码里。
6.3 幂等与重试
-
幂等:所有回调按call_id做幂等,重复推送不重复处理;
-
重试:回调失败时呼叫中心通常按策略重试,AI客服侧要返回明确成功/失败响应,不要一律返回200;
-
补偿:定时任务扫描“通话已结束但转写未完成”的记录,主动补拉录音和转写结果;
-
告警:转写失败率、工单创建失败率超过阈值时告警,别等客服反馈才发现。
七、录音安全设计:签名URL与访问控制
录音是通话记录里最敏感的部分,存和取都要做安全设计。
7.1 签名URL生成
不要在通话记录表里存完整录音URL,只存对象存储key,访问时由服务端生成带有效期的签名URL:
python
def generate_signed_url(recording_key, expire_seconds=300):
# 示例:对象存储签名URL,具体方法按所选存储服务文档实现
bucket = get_bucket()
url = bucket.sign_url('GET', recording_key, expire_seconds)
return url
建议:
-
有效期设短一点,5到10分钟够用,过期重新生成;
-
签名URL只发给有权限的坐席端,不写进日志、不贴到工单描述里;
-
播放和下载分别控制权限,下载权限比播放权限收得更紧。
7.2 访问控制
| 身份鉴权 | 坐席登录后才能请求签名URL,接口带token |
| 数据权限 | 坐席只能查自己门店/自己处理工单关联的录音 |
| 操作审计 | 谁在什么时候听了/下载了哪条录音,记审计日志 |
| 脱敏展示 | 主叫号码展示脱敏,完整号码需单独授权 |
| 导出控制 | 证据包导出要走审批,导出记录留痕 |
7.3 存储与保留
-
录音文件存对象存储,开启服务端加密;
-
按业务要求设置保留周期,到期审核后删除;
-
纠纷关联录音单独标记,冻结删除;
-
归档存储取回有延迟,核验前提前取回。
八、配置要点与实操步骤
8.1 对接步骤
确认call_id可用:和呼叫中心平台确认call_id在通话回调、录音回调、转写结果里都带,字段定义以官方接口文档为准;
建表:按第三节建通话记录表、标签表、工单表,按需建关联表,规划分表策略;
接通回调:配置通话开始/结束/录音完成回调地址,验签和幂等先做好;
接ASR:录音完成后提交转写任务,转写结果回写通话记录表;
配标签规则:按业务需求配标签字典和触发规则,置信度阈值先设0.7左右;
接工单系统:配置工单创建接口,call_id写入工单表或关联表;
配录音安全:签名URL、访问控制、审计日志一起上;
跑测试:用测试号码打几通,验证通话记录落库、标签生成、工单创建、互查都通;
上线观察:上线第一周每天看转写成功率、标签生成率、工单关联率。
我们部分项目的呼叫中心侧接在优音通信上,通话回调、录音key和call_id字段在接口文档里有说明,对接时按文档字段做映射即可;AI客服和工单系统侧的具体实现,取决于所选技术栈和存量系统,建议对接前先拉一份字段对照表,别等联调时才发现字段对不上。
8.2 上线前检查表
| call_id贯通 | 通话记录、标签、工单三张表都能按call_id查到 |
| 回调验签 | 伪造回调被拒绝,正常回调能处理 |
| 幂等测试 | 同一call_id重复推送,不产生重复记录 |
| 转写成功率 | 测试10通,至少8通转写成功 |
| 标签生成 | 测试通话能命中预期标签,置信度合理 |
| 工单关联 | 命中规则的工单能创建,call_id正确写入 |
| 录音安全 | 签名URL能正常播放,过期后失效,无权限访问被拒 |
| 互查验证 | 按工单号能查到通话,按call_id能查到工单 |
九、效果验证与质量检查
9.1 三个核心指标
下面这些参考目标来自内部实践基线,不是行业标准,不同项目按上线前的真实数据调整:
| 标签生成率 | 有至少一个标签的通话数 / 已结束通话数 | 80%以上 |
| 工单关联率 | 关联了工单的通话数 / 应建工单的通话数 | 95%以上 |
| 通话可追溯率 | 能按call_id查到完整链路(记录+标签+工单)的通话数 / 总会话数 | 90%以上 |
9.2 质量抽查方法
每周抽10通已结束通话,人工核对:
-
转写文本是否完整,关键信息有没有丢;
-
标签是否与通话内容相符,有没有漏标、错标;
-
工单是否按规则创建,描述是否准确;
-
按工单号反查通话,链路是否通;
-
签名URL过期后是否失效,无权限账号是否被拒。
抽查结果记录成表,连续四周看趋势。标签错标集中在哪类,就调哪类规则;工单关联失败多,就查接口和幂等逻辑。
十、常见坑与检查清单
10.1 常见坑
call_id不稳定:不同接口返回的call_id格式不一致,关联断链;
同步做转写:通话结束回调里同步跑ASR,高峰期超时;
回调不验签:伪造回调写入脏数据;
幂等没做:重复推送导致重复建单、重复打标签;
工单只存一个call_id:一对多场景存不下,历史关联丢失;
录音存完整URL:地址泄露、过期失效,回溯不到录音;
标签规则太宽:关键词匹配太泛,误标多,坐席不信标签;
通话记录表不分表:数据量大了查询慢,影响互查体验。
10.2 检查清单
| 每日 | 回调成功率、转写成功率 | 失败有告警,可重试 |
| 每周 | 抽10通通话核对标签和工单 | 标签相符,工单关联正确 |
| 每周 | 重复记录检查 | 无重复通话记录、无重复工单 |
| 每周 | 录音访问审计 | 无异常导出,无越权访问 |
| 每月 | 三个核心指标统计 | 趋势可解释,异常有排查 |
| 每月 | 分表/归档任务 | 归档任务成功,历史数据可查 |
| 每月 | 录音可访问性抽查 | 签名URL正常,归档录音能取回 |
十一、FAQ:呼叫中心对接AI客服常见问题
Q1:call_id从哪里来?
由呼叫中心平台为每通电话生成,通话回调、录音回调、转写结果里都应携带。对接前先确认平台接口文档,确保各环节call_id一致。
Q2:标签是实时生成还是通话结束后生成?
建议通话结束后异步生成。实时生成需要流式ASR,成本和复杂度高;通话结束后批量转写、跑规则,准确率和稳定性更好。
Q3:工单和通话记录一定要用中间表吗?
不一定。一通电话一个工单,call_id直连工单表就够;一对多或多对多场景,再用中间关联表。按现有系统复杂度选,别过度设计。
Q4:重复回调怎么处理?
用call_id做幂等键,通话记录、标签、工单都设唯一索引或业务幂等判断,重复推送只更新不新增。
Q5:标签准确率怎么保证?
规则配置+人工抽查+持续调优。先配关键词和意图规则,置信度阈值设0.7左右,每周抽10通核对,错标多的规则及时调。
Q6:录音和转写文本怎么保存?
录音落对象存储,通话记录表存key不存完整URL;转写文本存通话记录表或单独表。保留期限按业务和合规要求定,到期审核后删除。
Q7:工单系统是存量系统,改动大怎么办?
优先用中间关联表,工单表不动,关联关系单独维护;或者工单号回写通话记录表,改动小但一对多场景受限。
Q8:通话记录表数据量大了怎么办?
按月或按年分表,近几个月留热表,历史归档到冷表或冷存储;查询带时间条件走分区或分表路由,归档表保留必要索引。
Q9:录音地址怎么安全地给坐席?
存对象存储key,服务端按需生成短有效期签名URL,配合登录鉴权、数据权限和访问审计。不要把完整URL写进工单或日志。
Q10:对接后怎么判断效果?
看三个指标:标签生成率、工单关联率、通话可追溯率。上线前统计基线,上线后每月对比;参考目标按项目实际调整,别照搬别人的数字。
十二、总结
呼叫中心对接AI客服,通话自动打标签和工单关联的核心是call_id贯穿全链路。通话记录先落库,转写和标签异步做,工单按规则创建并回写call_id,三张表靠call_id串起来,一对多场景加中间关联表。接口回调要验签、要幂等、要能重试;录音只存key不存URL,签名URL加访问审计;通话记录表按时间分表或归档,数据量大了查询才不拖。标签规则要可配置、可抽查、可调优。
落地建议三条:先确认call_id在各接口稳定返回,再建表和接回调;转写和标签异步做,别阻塞通话主流程;工单关联按现有系统复杂度选方案,简单场景call_id直连就够,复杂场景用中间表。做到这三点,通话记录、标签、工单三者才能互查,客服和售后追溯起来才不费劲。
网硕互联帮助中心






评论前必须登录!
注册