CTI集成项目真正需要解决的不是“CTI有多少功能”,而是电话平台与业务系统之间需要交换哪些数据,以及哪些电话动作允许由计算机应用执行。
例如客户来电时,CRM需要知道主叫号码、呼叫ID和当前坐席;销售人员点击客户号码外呼时,CRM又需要向电话平台发起呼叫请求。电话状态发生变化后,业务系统还要继续获得振铃、应答、转接和挂机等事件。
所以CTI接口的核心是两条数据方向:
电话平台 → CTI事件 → CRM / 工单 / 坐席工作台
以及:
业务系统 → CTI控制请求 → 电话平台

CTI接口位于电话平台和业务系统之间
CTI接口通常建立在PBX、呼叫中心平台或其他通信系统之上。电话系统仍然负责实际号码、线路、呼叫建立和媒体通信,业务系统则负责客户、工单、订单或其他数据。
CTI层需要识别双方都能理解的数据关系。例如电话平台中的“坐席1008”,需要和CRM中的某个登录用户对应;一次呼叫的Call ID要能够关联到客户服务记录;转接到另一名坐席以后,还要判断是否延续原来的业务过程。
一套集成关系可以表示为:
运营商线路 / SIP中继 → PBX / 呼叫中心 → CTI接口 → CRM / 工单 / 自研业务系统
ACD、IVR等模块可能位于电话平台内部,但它们不等于CTI。CTI更关注这些通信模块产生的事件和控制能力怎样提供给外部计算机系统。
电话系统会向CTI提供哪些事件
业务系统要跟随电话过程运行,首先需要知道呼叫什么时候发生了变化。
最基本的一组事件可能包括:
- 新呼叫到达;
- 某个终端或坐席开始振铃;
- 坐席应答;
- 呼叫进入保持状态;
- 恢复当前呼叫;
- 发起或完成转接;
- 建立会议;
- 呼叫挂机或被释放;
- 坐席登录、退出、置忙或置闲;
- 队列和呼叫分配状态变化。
实际能够获得哪些事件,由具体通信平台的CTI接口决定。不能因为某个平台支持“来电事件”,就默认它一定同时开放完整坐席、队列和第三方呼叫控制能力。
事件内容本身也需要定义清楚。例如振铃事件可以包含主叫号码、被叫号码、队列、坐席、呼叫ID和时间戳等字段。业务系统利用这些字段判断应该打开哪个页面、查询哪条客户记录。
对于呼叫中心来说,坐席状态同样重要。CRM知道电话已经分配给某个坐席,但如果不知道坐席当前是否忙碌、通话或离线,就很难与排队和任务系统保持一致。
业务系统可以通过CTI控制哪些电话动作
CTI除了接收事件,还可以在平台提供相应权限时执行电话控制。
最常见的例子是点击外呼。销售人员在CRM中点击客户号码,业务系统把坐席身份和目标号码发送给CTI接口,再由电话平台建立真实呼叫。
除了外呼,系统还可能开放:
- 应答来电;
- 挂断通话;
- 保持和恢复;
- 盲转和咨询转接;
- 建立或加入会议;
- 发送DTMF;
- 修改部分坐席状态;
- 获取终端或坐席当前通信状态。
这些动作最终仍然由电话系统执行。CTI API只是把“电脑上点击了什么”转换成通信平台可以处理的控制请求。
例如CRM调用“转接到技术组”并不意味着CRM自己完成了电话转移。真正的号码分析、权限检查和新呼叫腿建立仍由PBX或呼叫中心处理。

Call ID为什么比电话号码更适合关联业务记录
CTI集成时最容易出现的问题之一,是只用客户电话号码关联整次业务。
号码确实是查询客户的重要入口,但它不是稳定的唯一标识。一个家庭或企业可能多人共用一个号码,同一客户可以一天内多次来电,部分呼叫还可能隐藏主叫号码。
电话在坐席之间转接以后,如果仅按电话号码查询,也很难准确区分“这是同一通电话的延续”还是“客户后来重新拨了一次”。
因此,系统通常需要使用电话平台提供的Call ID、Session ID或其他唯一呼叫标识,再结合客户ID和坐席ID记录完整业务关系。
例如一条服务记录可以关联:
- Call ID;
- 客户ID;
- 主叫和被叫号码;
- 队列ID;
- 原始坐席和转接后坐席;
- 呼叫开始、应答、转接和结束时间;
- 服务结果;
- 录音文件或录音记录ID。
这样即使一通电话经历多次转接,业务系统仍然可以追踪完整过程。
CTI接口可以采用哪些实现方式
CTI不是一种固定网络协议,因此不同电话系统提供的接口方式可能完全不同。
传统电话系统中曾广泛使用TAPI、CSTA等接口。TAPI主要用于Windows电话应用与通信设备之间的控制,CSTA则定义了计算机应用与电话交换和通信功能之间的一套标准服务和事件模型。
现代IP通信平台更多采用API和SDK方式。例如HTTP/REST接口用于发起外呼或查询资源,WebSocket、长连接或事件订阅用于实时推送呼叫状态,Webhook则适合把特定通信事件主动通知给业务服务器。
部分厂商还提供自己的CTI协议或客户端SDK,用于获得更完整的坐席、队列和呼叫控制能力。
所以在开始集成以前,需要先回答几个问题:
- 电话平台开放的是API、SDK还是标准CTI协议;
- 接口是否只提供查询,还是支持双向电话控制;
- 呼叫事件通过什么方式实时推送;
- 如何完成接口身份认证和权限控制;
- 是否提供稳定的Call ID和坐席ID;
- 接口版本升级以后兼容方式如何处理。
如果业务只需要“客户来电后打开CRM页面”,实现方式可能很简单;如果要自定义完整坐席工作台,则需要处理更多实时事件、状态同步和异常恢复。
ACD和IVR怎样与CTI接口配合
ACD和IVR经常与CTI同时出现在呼叫中心中,但它们并不是CTI的子功能。
例如客户进入服务热线后,IVR先播放语音菜单并收集按键;随后ACD把人工呼叫送入队列并选择坐席。CTI可以把“客户选择了哪个业务、进入哪个队列、最终分配给哪个坐席”等信息提供给CRM。
业务系统获得这些信息后,就可以在弹屏时显示更准确的业务上下文,而不是只显示一个来电号码。
例如:
客户来电 → IVR选择售后 → ACD进入售后队列 → 坐席振铃 → CTI推送事件 → CRM打开售后工单页面

所以原文把IVR本身写成“CTI功能”并不准确。更合适的理解是:IVR完成自动语音交互,CTI负责把相关呼叫状态和业务数据提供给计算机应用。
CTI接口联调应该怎样进行
CTI集成完成后,不适合只验证“CRM能弹出一个页面”。更有效的方式是按照真实电话生命周期逐步测试。
可以先从一通最普通的呼入开始。客户拨打企业号码,检查电话平台是否生成唯一呼叫ID;进入队列后是否产生正确事件;分配坐席后,CRM能否得到主叫、队列和坐席信息。
坐席开始振铃以后,业务系统应打开正确客户或业务页面。坐席接听后,CRM中的呼叫状态也要同步变化。
随后继续测试保持、恢复和转接。客户从坐席A转给坐席B后,要检查新的坐席事件是否正确产生,同时确认CRM是否仍然把这次转接关联到同一个业务过程。
挂机后,则检查通话结束时间、处理结果以及录音记录能否正确回写。
第二条链路是外呼测试。坐席在CRM中选择一个客户号码,通过CTI发起呼叫,确认电话平台使用了正确坐席和外线权限,并检查客户接听以后业务系统是否进入正确状态。
还要验证异常情况。例如浏览器刷新、坐席断网、CTI连接中断或电话系统重启后,业务系统能否重新获得正确状态。实时接口如果缺少断线恢复机制,很容易出现“电话已经结束,但CRM仍显示通话中”的状态不一致。
科能融合当前呼叫中心和开发者体系支持按项目通过API、SDK、事件通知以及页面嵌入等方式与CRM、工单和其他业务系统进行连接,实际可用事件、字段和控制能力应以项目接口范围为准。完整的客户来电弹屏和CRM坐席业务流程可继续参考CTI在呼叫中心中如何工作;CTI的基础概念和控制模型则可以查看CTI是什么?计算机电话集成的工作机制与核心能力。