非常抱歉,您正在使用的浏览器版本过低,无法正常访问我们的网站,请升级浏览器或使用其它浏览器访问,谢谢!
外呼接口 · 签名鉴权 · 话单查询 · 线路状态

销生客外呼接口说明
安全接入外呼能力,统一获取通话结果

本文档用于第三方系统接入销生客外呼能力。接入方通过企业编号和密钥生成签名,调用外呼接口发起呼叫,可查询话单、线路状态,并通过回调地址接收通话结果。

接入前准备
comcode企业编号,由销生客开通API权限后提供。
appkey企业接口密钥,用于生成请求签名,请妥善保管。
caller主叫号码或坐席账号,需按企业配置授权。
notifyurl通话状态与话单结果接收地址,需公网可访问。
Quick Start

1. 接入流程

  1. 开通API权限

    联系销生客为企业开通API权限,获取企业编号 comcode 和接口密钥 appkey。

  2. 配置外呼资源

    确认企业已配置可用线路、主叫号码授权、坐席/企业有效期和账户余额。

  3. 生成签名

    按接口要求拼接参与签名的参数,用 md5(appkey + queryString) 生成 sign。

  4. 调用外呼接口

    调用 /apicall/wancall 发起呼叫,接口返回本次业务话单号 callid。

  5. 接收或查询话单

    通过 notifyurl 接收结果,或使用话单查询接口按 callid / 被叫号码查询。

Base

2. 基础信息

项目说明
服务地址开通接口后由销生客顾问提供,并与企业接口权限对应。
推荐外呼接口POST /apicall/wancall
请求格式支持表单参数,也支持 JSON body;建议服务端 POST。
返回格式JSON,通用字段包含 code、text、callid。
时间戳timestamp 为 13 位毫秒时间戳并参与签名,请在每次请求时实时生成。
Sign

3. 签名规则

销生客外呼接口 wancall 的签名参数固定为:comcode、caller、callee、notifyurl、timestamp。参数按键名字典序升序拼接为 URL query 字符串,再在前面拼接 appkey 后做 MD5。

参与签名参数:
callee=被叫号码
caller=主叫号码
comcode=企业编号
notifyurl=回调地址
timestamp=13位毫秒时间戳

queryString = callee=...&caller=...&comcode=...¬ifyurl=...×tamp=...
sign = md5(appkey + queryString)
注意:display、param、excount 不参与 wancall 签名;appkey 不作为请求参数传入,仅用于企业服务端生成签名。
// PHP示例
$params = [
  'comcode' => '209xxxxxx',
  'caller' => '13800000000',
  'callee' => '13900000000',
  'notifyurl' => 'https://your-domain.com/callback/xiaocall',
  'timestamp' => (string) round(microtime(true) * 1000),
];
ksort($params);
$query = http_build_query($params, '', '&', PHP_QUERY_RFC3986);
$sign = md5($appkey . urldecode($query));
Call API

4. 发起外呼:POST /apicall/wancall

参数必填说明
comcode是企业编号。
caller是主叫号码或坐席账号。若企业按坐席过期方式配置,该号码需已创建为企业用户。
callee是被叫号码,支持手机号或座机号。
notifyurl是通话结果回调地址,参与签名。
timestamp是13位毫秒时间戳。
sign是签名,规则见上文。
display否指定外显号/线路号码;为空时系统按主叫绑定或线路池自动选择。
param否第三方自定义透传参数,会写入话单,用于业务侧关联订单/客户。
excount否SIP AXB 场景的绑定有效时长,未填写时按企业开通配置处理。
curl -X POST '{接口服务地址}/apicall/wancall' \
  -d 'comcode=209xxxxxx' \
  -d 'caller=13800000000' \
  -d 'callee=13900000000' \
  -d 'notifyurl=https://your-domain.com/callback/xiaocall' \
  -d 'timestamp=1720000000000' \
  -d 'sign=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
  -d 'display=' \
  -d 'param=order_10001'
// 成功示例
{
  "code": 0,
  "text": "呼叫发起成功",
  "callid": "202607201234567890ABCDEF"
}

// 失败示例
{
  "code": 4001,
  "text": "签名不正确,请检查参数"
}
Call Log

5. 话单查询

5.1 按 callid 查询话单:POST /apicall/getcalllog

用于查询指定月份内某个 callid 的结算话单。该接口签名参数为:callid、comcode、date、tophone。

参数必填说明
comcode是企业编号。
callid是外呼接口返回的 callid;传 0 时按被叫号码查询。
date是话单月份,传 YYYYMM 或可被解析到月份的数字。
tophone是被叫号码。
starttimeint否开始时间戳,秒级时间戳。
endtimeint否结束时间戳,秒级时间戳。
sign是md5(appkey + callid=...&comcode=...&date=...&tophone=...)
{
  "code": 0,
  "text": "ok",
  "log": {
    "callid": "...",
    "fromstarttime": "主叫开始时间",
    "fromendtime": "主叫结束时间",
    "tophonestarttime": "被叫开始时间",
    "tophoneendtime": "被叫结束时间",
    "mduration": "主叫通话时长",
    "bduration": "被叫通话时长",
    "timeint": "创建时间戳",
    "sound": "录音地址"
  }
}
Line

6. 线路状态:POST /apicall/getlinestatus

获取企业线路列表及状态。签名参数为:comcode、timestamp。

返回字段说明
macode企业已开通的线路号码或外显号码。
mastatus当前线路状态。
activestatus当前线路激活状态。
lastupdatetime最后更新时间。
{
  "code": 0,
  "linelist": {
    "count": 2,
    "list": [
      {"macode":"023xxxxxxx","mastatus":"1","activestatus":"1","lastupdatetime":"..."}
    ]
  }
}
Callback

7. 回调说明

wancall 请求中的 notifyurl 会随话单写入系统,用于后续通话状态或话单结果通知。不同线路返回字段可能存在差异,建议回调接收方按“宽松解析”处理。

建议字段说明
callid销生客返回的业务话单号。
caller主叫号码。
callee被叫号码。
resultcode呼叫结果码,成功通常为 200 或 0。
resultmsg结果描述。
bduration被叫通话时长。
sound录音地址。
param外呼时传入的第三方自定义参数。
建议:回调接口先返回成功响应,再异步处理业务逻辑;按 callid 做幂等,避免重复回调造成重复更新。
Errors

8. 常见错误码

code含义 / 处理建议
0请求成功。
200呼叫请求已成功受理。
3001话单已创建,呼叫正在处理中。
4001通用业务错误:缺少参数、未开通、余额不足、签名错误、线路未配置等。
4008时间戳格式不正确。
4009接口调用超时。
8001线路未能完成本次呼叫,请结合返回说明检查线路或号码状态。
Checklist

9. 联调清单

企业权限

确认企业已开通外呼 API 权限,并处于正常服务期。

余额/有效期

确认企业或坐席未过期,余额或分钟数充足。

主叫授权

如开启主叫限制,需把 caller 加入授权名单。

线路配置

确认企业已有可用外呼线路;需要指定线路时再传入 display。

签名一致

确认签名参数、排序、URL编码和 notifyurl 与实际请求完全一致。

回调可达

notifyurl 需公网可访问,并支持重复回调幂等处理。

需要协助联调外呼接口?

准备好企业编号、测试主叫、测试被叫和回调地址,我们可以一起核对签名与线路状态

如果调用失败,优先检查签名、企业权限、主叫授权、线路配置、余额/有效期和回调地址。

联系技术支持