坐席资料绑定与分机外呼属性接口

适用于:第三方系统(OA/CRM/排班)把自家员工体系与 CTI 分机绑定——登录/上线时下发工号、姓名、部门、工作时间(SET_WORKER_ID);为分机配置来电状态 HTTP 推送地址(弹屏,SET_CALLS_POP_UP_URL);设置 E1 线路外呼显示号码(SET_EXT_OUT_CALL_DSPLAY)与客户回拨直达(SET_EXT_DIRECT_CALL_BACK)。 配套:实时状态也可走 WebSocket 订阅(websocket-call-state,推荐);本组的 HTTP 推送适合无 WebSocket 条件的对接方。

所有接口均为 GET http://{cti_host}:12121/bridge/callctrl,HTTP 状态码恒为 200,业务码写在响应体(README §3)。

1. 坐席上班绑定:SET_WORKER_ID

坐席在第三方系统登录/上班时调用,把工号等资料写入 CTI 分机(之后话单、监控、报表均以该工号呈现):

GET http://{cti_host}:12121/bridge/callctrl?extnum=801&workerid=41735&department=%E7%A0%94%E5%8F%91&uname=%E5%A4%8F%E5%A4%A9&opt=SET_WORKER_ID
参数类型必填说明
extnumString是坐席分机号
workeridString是员工工号
departmentString否部门/姓名备注(写入分机名称;需 URL 编码,服务端按系统类型解码)
unameString否坐席助手显示姓名(需 URL 编码)
officehoursString否工作时间段,格式与 OMS 分机配置一致
optString是固定 SET_WORKER_ID
业务码含义
200绑定成功
400参数错误(extnum/workerid 缺失)
404分机不存在
420目标不是分机(FXS)类型,不能绑定工号

注意:接口内部有约 2 秒等待(保证资料落库后再操作状态),响应偏慢是正常设计;绑定后建议间隔 2 秒以上再调示忙/示闲(ext-presence),否则可能异常。

2. 来电状态推送地址:SET_CALLS_POP_UP_URL

为分机设置呼叫状态 HTTP 推送 URL:该分机相关的通话每次状态变化(振铃/接通/挂机等),CTI 主动 GET 该 URL。等价于服务端推送版"来电弹屏",无需轮询。

GET http://{cti_host}:12121/bridge/callctrl?extnum=801&domain=oa.example.com&urltype=http&port=8080&path=pop&extend=crm&opt=SET_CALLS_POP_UP_URL
参数类型必填说明
extnumString是分机号;也可是已存在的话务组号(直接给整组配置)
domainString是*接收推送的服务器地址(IP/域名)。不传 domain 再次调用 = 清除配置(见下)
urltypeString否协议,缺省 http
portString否端口(数字)
pathString否路径(不含开头 /)
extendString否附加业务参数,拼为 ?extend=<值> 原样随每次推送带回
optString是固定 SET_CALLS_POP_UP_URL

拼接规则:urltype://domain[:port][/path][?extend=xxx],如上例得到 http://oa.example.com:8080/pop?extend=crm。

行为说明:

  • 分机会被加入一个隐藏的单成员话务组(组名 state_notify_<分机号>),推送地址挂在组上;业务上无需关心该组,不要手工改动它;
  • 清除:对同一分机不带 domain 再调一次即可(删除推送组,返回 200);
  • extnum 传话务组号时,直接对整组生效(组内所有成员的通话都推送);
  • 推送为异步 GET、无重试;CTI 内部推送队列满时会清空丢弃积压——接收端应快速应答,且不要把该推送当作唯一可靠信源(关键状态以话单查询兜底)。
业务码含义
200设置/清除成功
400参数错误(extnum 缺失)
404分机/组不存在

2.1 推送报文格式(CTI → 第三方)

CTI 在每次状态变化时发起 HTTP GET(异步,不重试;推送 URL 已带 query 时以 & 续接):

http://oa.example.com:8080/pop?extend=crm&id=8db03e9d-...&caller=13512340001&callee=801&state=ringing&direction=incoming
参数说明
id通话唯一标识(call-id),同通电话多次推送保持一致
caller / callee主叫 / 被叫号码
state状态:init / calling / ringing / ringing_confirm / talking / hungup / canceled
directionincoming(该方为被叫)/ outgoing(该方为主叫)
businessId可选,业务标识(如主叫业务 MAINCALL),有则带
remote可选,对端真实号码(中继场景),有则带

典型用法:收到 state=ringing 且 direction=incoming 时按 caller 弹屏;talking 开始计时;hungup 后可查话单。

3. 外呼显示号码:E1 通道:SET_EXT_OUT_CALL_DSPLAY

分机外呼固定走指定 E1 通道(线路)并显示指定号码:

GET http://{cti_host}:12121/bridge/callctrl?extnum=801&channel=2003&dspnum=75512345678&opt=SET_EXT_OUT_CALL_DSPLAY
参数必填说明
extnum是分机号
channel是*E1 外呼通道(线路号);channel 与 dspnum 都不传 = 清除绑定
dspnum是*外呼时显示的号码
opt是固定 SET_EXT_OUT_CALL_DSPLAY

业务码:200 成功 / 400 参数错误 / 404 分机不存在 / 420 非分机类型。

4. 客户回拨直达:SET_EXT_DIRECT_CALL_BACK

开启后,该分机外呼联系过的客户回拨外呼显示号码时,直接接到该分机(不再进 IVR/排队):

GET http://{cti_host}:12121/bridge/callctrl?extnum=801&offon=true&opt=SET_EXT_DIRECT_CALL_BACK
参数必填说明
extnum是分机号
offon是true 开启 / false 关闭
opt是固定 SET_EXT_DIRECT_CALL_BACK

业务码:200 成功 / 400 参数错误 / 404 分机不存在 / 420 非分机类型。分机离线/忙时回拨行为按系统默认策略(转组/失败),以现场配置为准。

5. curl 示例(坐席上班全流程)

CTI=http://192.168.1.80:12121

# 1. 坐席上班:绑工号+部门+姓名(约2秒后返回)
curl "$CTI/bridge/callctrl?extnum=801&workerid=41735&department=%E7%A0%94%E5%8F%91&uname=%E5%A4%A4%E5%A4%A9&opt=SET_WORKER_ID"

# 2. 配置来电弹屏推送(接收端 8080/pop)
curl "$CTI/bridge/callctrl?extnum=801&domain=oa.example.com&port=8080&path=pop&extend=crm&opt=SET_CALLS_POP_UP_URL"

# 3. (可选)固定 E1 通道显示号码 + 开启回拨直达
curl "$CTI/bridge/callctrl?extnum=801&channel=2003&dspnum=75512345678&opt=SET_EXT_OUT_CALL_DSPLAY"
curl "$CTI/bridge/callctrl?extnum=801&offon=true&opt=SET_EXT_DIRECT_CALL_BACK"

# 4. 坐席下班:解除弹屏推送(不带 domain 即清除)
curl "$CTI/bridge/callctrl?extnum=801&opt=SET_CALLS_POP_UP_URL"

6. 常见问题排查

现象原因与处理
SET_WORKER_ID 响应慢(约2秒)内部设计(资料落库后等待 2 秒),非故障;不要并发重复提交
绑定工号后立即示忙失败与内置 2 秒等待竞态;绑定调用返回后再等 2 秒操作状态
配了弹屏 URL 收不到推送接收端须可被 CTI 服务器直接访问(防火墙放行);推送为 GET、无重试,接收端应快速应答;核对拼接出的完整 URL 是否可达
推送 URL 的 extend 丢失extend 拼在 ?extend= 上,若 URL 已含 ? 会以 & 续接,接收端按标准 query 解析即可
想同时要坐席忙闲状态忙闲变化不在本推送范围,用 WebSocket 订阅(websocket-call-state)或 GET_EXT_PRESENCE_STATE 轮询(ext-presence)
SET_EXT_OUT_CALL_DSPLAY 返回 420目标是话务组/中继而非 FXS 分机;只对模拟分机生效