使用通用连接器完成对接
使用通用连接器以低代码函数方式对接官方未适配的第三方或自建呼叫中心系统。
初始化呼叫中心
在 系统设置 > 业务插件管理 > 呼叫中心 页面,执行插件初始化。
初始化成功后,系统自动执行以下变更:
- 在 管理 > 角色权限管理 > 业务功能权限 中新增 呼叫中心客服 角色。
- 在 CRM 中新增预设对象 通话记录。
- 在 工单 对象下新增关联 通话记录 的字段。
请为需要使用话务功能的客服人员分派 呼叫中心客服 角色。
配置步骤
1. 基础配置
- 在 管理 > 业务插件管理 > 呼叫中心 页面,选择服务商为 通用连接器,并输入厂商名称。
- 基础配置包含以下四个步骤:
- 参数配置
- 回调函数配置
- 外呼函数配置
- 电话条插件集成(若无集成网页端软电话条需求,可忽略此项)

2. 配置回调与外呼 URL 链接
根据不同场景替换 URL 中的占位符,并在第三方呼叫中心后台配置事件订阅链接:
POST 请求链接
- 无 string 格式:
https://www.fxiaoke.com/open/callcenter/common/handle/pushData/<fs-ea>/<event-type>/<call-type> - 有 string 格式:
https://www.fxiaoke.com/open/callcenter/common/handle/pushData/string/<fs-ea>/<event-type>/<call-type>
GET 请求链接
- 有 get,无 string 格式:
https://www.fxiaoke.com/open/callcenter/common/handle/pushData/get/<fs-ea>/<event-type>/<call-type> - 有 get,有 string 格式:
https://www.fxiaoke.com/open/callcenter/common/handle/pushData/get/string/<fs-ea>/<event-type>/<call-type>
链接占位符说明
<fs-ea>:企业号,即企业专属标识(纯数字),必填。<event-type>:该链接对应的事件类型,必填。<call-type>:呼叫类型,in表示呼入,out表示外呼,可为空。
NOTE
- 有 string 与无 string 区别:
- 有 string:返回值是纯文本字符串,通常用于第三方系统弹屏集成。
- 无 string:返回值是 JSON 格式的标准响应体。例如:json
{ "errorCode": 0, "errorMessage": "成功", "data": { "eventType": "popThird", "result": "https://www.fxiaoke.com/open/cc/?code=2010" } } 
3. 配置回调与外呼函数
第三方呼叫中心请求配置的链接时,系统自动调用绑定的低代码函数。接口请求传过来的参数以及 eventType 值透传到函数中,开发人员可在函数内处理相应逻辑。
- 返回值类型:
Map - 绑定对象:
通话记录 
函数接收参数
- 回调函数参数:
eventType(类型String):链接中配置的事件类型。externalDataMap(类型Map):接口请求传过来的具体参数,字段取决于厂商接口推送规范。
- 外呼函数参数:
externalDataMap(类型Map),系统固定传入以下字段:json{ "callOutApiName": "AccountObj", // 被呼叫对象的 apiName "callOutDataId": "629ddf6484d613000131686d",// 被呼叫对象的数据 ID "customerNum": "18390940098" // 被呼叫的电话号码 }
外呼函数模板
编写发送给第三方呼出 API 的 HTTP 请求,触发物理呼叫:
groovy
/**
* @codeName 呼叫中心外呼函数模板
*/
// 从 externalDataMap 中取值
Fx.log.info("请求接收的参数: " + externalDataMap);
// 获取当前企业绑定的配置和当前用户的座席信息
String methodName = "queryBindInfo";
Map args = ["seatId": "2002"]; // 坐席工号/ID
def ret = Fx.proxy.callAPI("eservice.proxy", ["x-fs-methodname": methodName,"Content-Type": "application/json;charset=UTF-8"], ["args": args]);
HttpResult result = ret.data as HttpResult;
Map map = result.content as Map;
Fx.log.info("企业和当前座席绑定信息: " + map);
Fx.log.info("外呼请求开始 start");
// 根据厂商接口文档编写外呼请求逻辑,调用第三方外呼 API 拨打电话
Fx.log.info("外呼请求结束 end");
// 返回空结果
Map resultMap = [:];
return resultMap;回调函数模板
接收第三方呼叫中心推送的话务状态事件,调用系统服务实现弹屏或话单记录:
groovy
/**
* @codeName 呼叫中心回调函数模板
*/
Fx.log.info("请求接收的事件类型: " + eventType);
Fx.log.info("请求接收的参数: " + externalDataMap);
Map resultMap = [:];
// 1. 获取企业绑定配置和当前用户的座席信息
String methodName = "queryBindInfo";
Map args = ["seatId": "2002"]; // 若不传 seatId,默认根据当前操作人的 userId 自动查询绑定关系
def ret = Fx.proxy.callAPI("eservice.proxy", ["x-fs-methodname": methodName,"Content-Type": "application/json;charset=UTF-8"], ["args": args]);
HttpResult result = ret.data as HttpResult;
Map map = result.content as Map;
// 2. 第三方系统弹屏(返回弹屏地址并直接重定向)
// String methodName = "getPopWindowUrl";
// Map args = ["seatId": "2002", "customerNum":"18390940098"];
// resultMap = ["url": (map.data as Map).url, "newCallCenterAction":"redirect"];
// 3. 在纷享客服工作台弹屏及显示飘窗(通常在响铃事件触发时调用)
// String methodName = "popWorkbench"
// Map args = ["seatId": "2002", "customerNum":"18390940098", "callId":"medias_3-1671505262.109912", "callType":"in"];
// 4. 清除飘窗并更新接听状态(通常在挂机事件触发时调用,必须调用此接口,否则飘窗会一直残留)
// String methodName = "hangupHandle"
// Map args = ["callId": "medias_3-1671505262.109912", "isDealing": true]; // isDealing 表示是否接听成功
return resultMap;4. 核心代理服务接口说明
开发人员在函数中可通过 Fx.proxy.callAPI 调用 eservice.proxy 下的内置话务管理接口:
查询企业和座席绑定信息
- 方法名:
queryBindInfo - 输入参数:
seatId(可选,第三方账户 ID/坐席工号) - 返回示例:json
{ "errorCode": 0, "errorMessage": "成功", "data": { "tenantInfo": { "name": "厂商名称" }, "paramMappings": [ { "name": "account", "apiName": "account", "value": "N000000004037" } ], "userInfo": { "seatId": "2002", "userId": 1000 } } }
客服工作台弹屏与飘窗(响铃事件调用)
- 方法名:
popWorkbench - 输入参数:
seatId(坐席 ID)、customerNum(客户号码)、callId(本次通话唯一标识 ID)、callType(in呼入 /out外呼)
清除工作台飘窗(挂机事件调用)
- 方法名:
hangupHandle - 输入参数:
callId(通话唯一标识 ID,须与弹屏时传入的值一致)、isDealing(true已接听 /false未接听)
上传录音文件(挂机且录音生成时调用)
- 方法名:
uploadRecordFile - 输入参数:
fileUrl(第三方呼叫中心录音文件下载的公网地址) - 返回值:返回纷享服务器存储该录音文件后的内部地址
fileUrl。
第三方系统弹屏 URL 获取
- 方法名:
getPopWindowUrl - 输入参数:
seatId(坐席 ID)、customerNum(客户号码)
5. 电话条组件集成
若需要集成自定义前端电话条,可在 系统设置 > 定制开发平台 > 自定义组件 中,新建并上传 pwc 电话条组件进行嵌入。
坐席账号关联
- 在 管理 > 业务插件管理 > 呼叫中心 > 账号绑定 页面,点击绑定。
- 选择要绑定的 CRM 员工账号(该人员必须已获得“呼叫中心客服”角色)。
- 在第三方账号输入框中,填入该客服在第三方系统中的坐席工号/分机号。
- 保存。
业务规则与外呼配置
1. 客服业务设置
在管理后台进行以下设置,规范话务逻辑:
- 弹屏列表配置:配置当号码关联到多名客户/联系人时显示选择列表。
- 自定义弹屏字段识别:指定进行来电匹配的电话号码字段及其优先级。
- 弹屏快速新建入口:配置陌生来电时,允许客服快速新建线索/客户的快捷菜单。
- 临时数据权限:开启后,当有电话进来时,客服临时获取被弹屏客户的数据查阅权限。

2. 外呼参数设置
3. 一键外呼配置
系统默认支持 客户、销售线索、联系人 对象的外呼:
- 在上述预设对象下,手动添加自定义按钮,且按钮的 API Name 必须定义为:
button_e_call_out__c。 - 在外呼设置中,为这些对象配置外呼号码字段(指定系统从哪个字段提取外呼号码)。
若需在非预设对象(如工单、服务请求等)下进行外呼,需额外配置:
- 在外呼设置中,点击新增外呼对象。
- 选择对象并配置对应的外呼号码字段。
- 在该对象页面布局中,添加自定义外呼按钮,且按钮的 API Name 必须固定为:
button_e_call_out__c。
WARNING
- 新增外呼按钮会占用自定义按钮的配额。配额不足时可能导致初始化或按钮保存失败,请清理冗余自定义按钮或扩充配额后重试。










