服务端 SDK
快速阅读
服务端 SDK 用来让企业自己的服务端在通话进行中控制座席:上线、置忙置闲、预览外呼、挂机、转接、咨询、保持等。它走 OpenAPI 座席动作(实施联调可用 Zenava CLI),不是浏览器里的 AgentSDK,也不是事件回调。
- 先准备 region、企业或部门标识、部门 token,按鉴权认证签名;时间戳约 30 分钟有效。
- 座席要先存在且绑定电话可用,再上线;绑定类型选分机时,分机必须已经注册成功。
- 接口返回成功只表示动作被受理。电话有没有响、有没有接通,要看绑定设备、Webhook 和话单。
- 服务端上线不要用软电话绑定来打电话;软电话和浏览器事件走座席工作台集成。
- 收事件走 Webhooks:事件回调;管座席工号、分机本身走 呼叫中心管理集成。
阅读地图
- 先分清和 AgentSDK、Webhook、管理集成的边界:读“二”和“九”。
- 要配鉴权、绑定和上线:读“六”。
- 要看动作分组:读“五”。
- 要验收:读“八”和“附录 C”。
一、文档说明
客户把呼叫能力嵌进 CRM 或自建中台时,经常是后端发起一次外呼、挂机或转接,页面上没有座席工作台。本文说明这条服务端控制怎么定位、先配什么、何时真正改到通话、失败怎么看。
适用:对接 CRM / 工单 / 自建中台的技术负责人、实施顾问、需要用命令行联调座席动作的运营管理员。
逐接口参数、签名算法和命令开关建议结合 鉴权认证、Zenava CLI 产品说明 一起确认。
二、产品总览
服务端 SDK 的对象是某一个已上线座席的实时会话,不是座席配置本身,也不是已经打完的话单。
企业后端签一次名,对指定座席工号发上线、外呼、挂机、转接;话机或分机负责响铃和通话,Webhook 负责把过程推回企业系统。
| 集成入口 | 解决什么 | 典型动作 |
|---|---|---|
| 服务端 SDK(本文) | 企业服务端控制座席会话 | 上线、预览外呼、挂机、转接、咨询 |
| 座席工作台集成 · AgentSDK | 把通话嵌进浏览器工作台 | login、软电话、本地事件 |
| Webhooks:事件回调 | 平台访问企业 URL,通知事件 | 响铃、接通、状态推送 |
| 呼叫中心管理集成 | 增删改查座席、分机、任务 | 先把人开通,再来控通话 |
| 数据与分析集成 | 事后查话单、录音、报表 | OpenAPI 拉取 |
页面名叫 SDK,落地是同一套座席动作 OpenAPI;没有单独再下一套浏览器 npm 包。业务系统可以直接调接口,也可以用 Zenava CLI 包一层做联调。
三、核心概念
| 概念 | 说明 |
|---|---|
| 座席动作 | 对已存在座席发的实时控制,如上线、外呼、挂机 |
| 座席工号 | 字段常见 cno,即 agent ID,不是员工账号 |
| 部门 token | 服务端动作签名用的凭证,和浏览器 sessionKey 不是一把钥匙 |
| 验证类型 | 1 用部门编号,2 用企业编号;和入参必须成套 |
| 上线 | 让座席进入可接可打的运行态;不等于只创建了座席 |
| 绑定电话 | 这次上线用的号码或分机;动作里常写 bindTel |
| 绑定类型 | 1 普通电话,2 分机,3 软电话。分机须先注册;服务端路径下软电话绑上线成功也打不了电话 |
| 登录状态 | 上线时选置闲或置忙 |
| 受理成功 | 接口 result 成功;通话结果另看设备和话单 |
uniqueId / requestUniqueId | 挂机等动作可用通话或请求标识定位;requestUniqueId 挂机主要在 WebCall 且企业已开通时生效 |
四、对象关系与运行链路
管理端先备好:座席工号、绑定电话 / 分机、技能组与队列
↓
企业服务端:region + 企业或部门 + token → 签名
↓
上线(绑定电话、绑定类型、置闲 / 置忙)
↓
座席动作:预览外呼 / 接听控制 / 保持 / 转接 / 咨询 / 挂机 …
↓
绑定设备响铃、接通
↓
Webhook 回写过程事件 → 主话单 / 从话单沉淀四个层次不要混:
| 层次 | 含义 | 只看这个不够 |
|---|---|---|
| 页面已配置 | 座席、分机、token、权限已有 | 人在库里不等于已上线 |
| 请求实际发出 | 服务端或 CLI 已签名调用 | 日志有请求,不等于座席可呼 |
| 系统实际生效 | 上线成功或动作被受理 | 受理成功不等于客户已接通 |
| 通话实际变化 | 设备响铃 / 接通 / 挂断 | 以设备、Webhook、话单对照 |
改绑定或下线,对之后的动作生效。已经打完的那一通不会被事后改队列、改绑定而改写话单。
五、能力地图
实际能调哪些动作,以企业开通能力和接口权限为准。常见分组如下。
| 分组 | 典型动作 | 服务端 SDK 里做什么 |
|---|---|---|
| 在线状态 | 上线、下线、置忙、置闲 | 把座席送进或退出可分配状态 |
| 绑定 | 改绑定电话、解绑 | 换号码或分机后再上线验收 |
| 外呼 | 预览外呼、取消外呼 | CRM 点号外呼;座席必须已上线且空闲 |
| 接听控制 | 拒接、SIP 话机应答 | 后端代拒或代接;软电话接听不走本页 |
| 通话中 | 保持 / 接回、静音、发 DTMF、满意度 | 会话还在时改这一通 |
| 转接与咨询 | 转移、咨询、咨询转移、咨询三方、邀请三方 | 转到人、队列或号码 |
| 结束 | 挂机 | 可用座席工号或通话标识定位 |
| WebCall | 发起、取消排队 | 页面呼叫仍由服务端触发 |
| 导航协同 | IVR 等待打断等 | 流程已进入对应节点时才有意义 |
| 录音控制 | 禁录、回放等 | 按企业录音策略开通后使用 |
通道变量可在外呼时带上,供后续推送、话单自定义字段或 SIP 头使用。逐参数不要在本页展开,以当前 OpenAPI 和 CLI 帮助为准。
六、配置项与生效
1. 配置来源与优先级
| 来源 | 作用 |
|---|---|
| 部门 token + 签名 | 服务端动作的主鉴权 |
| 企业 / 部门编号 | 和验证类型成套;不要混填 |
| 座席工号、绑定电话 | 动作打在哪个座席、哪台设备上 |
| 租户里的自适应绑定 | 若企业开启,系统按号码识别绑定类型,动作里写的类型优先权更低 |
| 接口权限 / 外呼开关 | 有签名不等于能外呼或转接 |
| 黑 / 白名单、外显、时段 | 外呼被拦时先核这些,再核动作本身 |
浏览器 AgentSDK 登录用的 sessionKey 不能代替本页签名。管理集成那把接口密钥管的是配置对象,也不等于座席已上线。
另有一条“座席服务端登录鉴权”,用来换 WebSocket 用的短时 sessionKey(约 30 秒)。它不是上线命令。服务端架构里过程事件更常见的是配 Webhook,不要和上线、外呼混成一步。
2. 鉴权与调用
| 配置项 | 作用 | 条件与注意事项 |
|---|---|---|
| region | 打到正确接入环境 | 与企业开通地域一致 |
| 验证类型 | 用部门还是企业编号签 | 1 / 2 与入参成套 |
| 部门编号 / 企业编号 | 鉴权主体 | 填错表现为权限验证失败 |
| 时间戳 | 防重放 | 约 30 分钟;过期会失败 |
| 签名 | 防篡改 | 规则见鉴权认证,32 位小写 |
| 座席工号 | 控制哪个人 | 3~10 位数字 |
配错表现:签名失败、无权限、打到另一套环境。先看 API 请求日志里的企业和 URI。
3. 上线与绑定
| 配置项 | 作用 | 条件与注意事项 |
|---|---|---|
| 座席工号 | 上线对象 | 须已在管理端创建 |
| 绑定电话 | 响铃和通话的设备 | 普通电话填号码;分机填分机号 |
| 绑定类型 | 按哪类设备注册 | 分机须先注册成功;服务端路径不要用软电话类型来外呼 |
| 登录状态 | 上线后置闲或置忙 | 置忙时可带原因 |
| 自适应绑定 | 企业级覆盖动作里的类型 | 验收时以实际上线后的绑定为准 |
配错表现:上线成功但外呼报分机未注册、座席不在线、座席忙;或绑定了软电话类型,接口成功却无法呼叫。
4. 动作受理与通话结果
| 配置项 | 作用 | 条件与注意事项 |
|---|---|---|
| 外呼号码 | 打给谁 | 固话带区号;加密外呼按企业规则编码 |
| 座席侧 / 客户侧超时 | 各腿等待多久 | 范围内取值;超时不等于没发起 |
| 外显 / 外显导航 | 客户侧显示谁 | 号码须在企业资源内,规则见外显导航 |
| 挂机定位 | 挂哪一通 | 座席工号、uniqueId、requestUniqueId 三选一 |
| 通道变量 | 带给推送或下游 | 不要当长期对账主键,主键仍是通话标识 |
result 成功只说明平台收下了这条动作。客户未接、座席侧超时、名单拦截,要到 Webhook 和话单里看。
七、典型业务场景
- CRM 点号外呼:座席已上线,后端对当前座席工号发预览外呼,座席话机先响,再打客户。
- 工单页挂机:会话还在时用座席工号或
uniqueId挂机,再用主话单核对结束原因。 - 后端转接:接通后转到队列或指定座席,Webhook 看转移 / 咨询接通。
- IP 话机座席:分机注册成功后上线,服务端只发动作,媒体在话机上。
- 与弹屏配合:外呼或响铃走 Webhook 打开资料,控制仍在本页。
八、上线准备与运营建议
- 测试租户先做通:签名、查座席、上线、再查座席状态。
- 绑定用普通电话或已注册分机,不要在本页用软电话类型验收外呼。
- 选一个闭环:上线 → 预览外呼 → 挂机 → 话单和 Webhook 对上
uniqueId。 - 生产按系统拆权限,外呼、挂机、转接不要和全量管理密钥绑在一把。
- 动作失败先看返回说明:座席不在线、忙、无外呼权限、分机未注册、名单拦截。
- 实施联调用 Zenava CLI 的
callcenter agent系列;正式业务系统直接调 OpenAPI。
九、与周边能力的关系
| 能力 | 关系 |
|---|---|
| 鉴权认证 | 本页签名规则 |
| 座席工作台集成 | 浏览器和软电话;本页是服务端 HTTP |
| Webhooks:事件回调 | 过程怎么通知企业;本页是企业怎么命令平台 |
| 呼叫中心管理集成 | 先创建座席和分机,再上线控制 |
| 座席管理 / 分机 | 配置对象;上线依赖它们已可用 |
| 黑 / 白名单、外显导航 | 外呼拦不拦、显示谁 |
| 主话单 / 从话单 | 通话事实;动作成功不能代替话单 |
| Zenava CLI | 同一套座席动作的命令行封装 |
| API 请求日志 | 对账“调没调、签没签过” |
十、FAQ
和 AgentSDK 登录是一回事吗?
不是。AgentSDK 在浏览器里用 sessionKey 登录工作台;本页用企业 / 部门 token 签名,从服务端发动作。
上线成功为什么还是外呼失败?
常见是分机未注册、绑定了软电话类型、座席忙、没有外呼权限,或号码被名单拦住。回查绑定和座席状态,不要只看上线返回。
接口成功,客户没响铃?
动作被受理不等于客户侧已振铃。核座席侧设备、外呼超时和 Webhook 响铃事件。
能不能靠本页收响铃事件?
不能。收通知走 Webhook;本页只发控制。
服务端登录鉴权是不是上线?
不是。那条用来换短时 WebSocket 凭证。上线是单独的座席动作。
十一、总结
先签通、再上线、再发一个外呼或挂机,用设备和话单确认这一通真的变了。服务端 SDK 解决的是企业后端怎么控座席会话,不替代工作台软电话,也不替代话单。
附录 A:入口与权限
| 项 | 说明 |
|---|---|
| 文档入口 | CTICloud 系统集成 → 实时会话控制集成 → 服务端 SDK |
| 调用方式 | OpenAPI 座席动作;联调可用 Zenava CLI callcenter agent |
| 鉴权 | 企业或部门编号 + token + 时间戳 + 签名,见鉴权认证 |
| 审计入口 | API 请求日志;过程事件看事件回调日志 |
| 前置配置 | 座席、绑定电话或分机、外呼与转接类权限 |
附录 B:关键字段口径
| 字段 | 口径 |
|---|---|
cno | 座席工号 |
| 验证类型 | 1 部门,2 企业 |
| 绑定电话 | 本次上线使用的号码或分机 |
| 绑定类型 | 1 普通电话,2 分机,3 软电话(服务端外呼不要用 3) |
| 登录状态 | 上线后置闲或置忙 |
result | 动作是否被受理,不是通话业务结果 |
uniqueId | 定位某一段通话 |
requestUniqueId | 请求级标识;挂机场景主要在已开通的 WebCall |
mainUniqueId | 一通主通话锚点,联查主话单和 Webhook |
附录 C:实施检查清单
- region、企业或部门、token 与目标租户一致
- 测试签名能通过(失败先对照鉴权认证)
- 座席已创建,绑定电话或分机可用;分机已注册
- 上线后座席状态为置闲或预期的置忙
- 未使用软电话绑定类型做服务端外呼验收
- 预览外呼或挂机返回受理成功
- Webhook 或话单能用
uniqueId/mainUniqueId对上这一通 - 座席不在线、忙、分机未注册、名单拦截能从返回或日志对上
- 生产权限只开本系统需要的座席动作
附录 D:常见问题速查
| 现象 | 可能原因 | 建议处理 |
|---|---|---|
| 签名失败 | 时间戳、token、验证类型或拼接顺序 | 对照鉴权认证重签 |
| 上线失败 | 座席不存在、参数不成套 | 回查管理端座席 |
| 上线成功外呼失败 | 未真正可呼、忙、无权限、分机未注册 | 回查状态和绑定 |
| 外呼报名单 / 外显 | 黑白名单或 CLID 不在资源内 | 对照名单和外显导航 |
| 挂机找不到通话 | 标识传错或 WebCall 未开通请求级挂机 | 改用 cno 或 uniqueId |
| 只有接口成功没有话单变化 | 只受理了动作,通话未建立或未结束 | 对设备与话单 |
| 浏览器能打、服务端不能 | 走了 AgentSDK 软电话,本页绑定类型不匹配 | 按服务端路径改绑定后再验 |
Updated about 2 months ago