api_v31.md 5.69 KB

统一通信呼叫中心API

为接入统一通信的企业提供基础通信服务。

更新信息

暂无。

服务器信息

  大多情况下,API调用用域名cc.uccc.cc就可以了;少数企业想用IP调用API,也可以,cc.uccc.cc对应的IP如下:

183.213.19.115(移动)

218.4.189.107(电信)

58.240.234.30(联通)

返回数据

错误信息

示例:

{
  "status": 422,
  "error": {
    "code": 30105,
    "message": "“主叫号码”不是合法的手机号或固定电话。",
    "field": "callerNumber"
  }
}

一、发起呼叫

Request

POST #{apiPrefix}/tserver/tenants/:tenantId/calls

Request body

{
  "calleeNumber": string,
  "callerNumber": string,
  "agentId": integer,
  "salesmanCode": string
}
  • calleeNumber: 被叫号码

  需要是合法的手机号或固定电话。

  • callerNumber: 主叫号码(选填)

  如果是固定话机,可不填本值,系统可以根据"agentId"查询到绑定的主叫号码。

  需要是合法的手机号或者固定电话。

  • agentId: 固定话机ID(选填)

  如果是移动话机,或者"callerNumber"对应了唯一的"agentId",可不填本值。"agentId"值举例: 699861013。

  只在多个固定话机共用一个主叫号码时,本值才有填写的必要。

  • salesmanCode: 销售员编号(选填)

  用于记录是哪个销售员进行的操作。这样,在话单和报表统计中,可以根据销售员进行搜索。

  “销售员编号”能唯一标识一个销售员。如果贵公司销售员没有工号,你甚至可以传入销售员的姓名进来。

  如果话机已经绑定了销售员,"salesmanCode"不填系统也可以自动关联到销售员。

  只要"salesmanCode"值不为空,系统就会以此值为准。

  如果"salesmanCode"在系统中不存在,系统会自动创建一个销售员。

Response

{
  "callId": string
}
  • callId: 本次呼叫的唯一ID。可据此查询本次呼叫的话单和录音等。callId是36位长的UUID。

二、查询一通呼叫

根据"callId"查询某个呼叫的话单和录音等。

Request

GET #{apiPrefix}/tserver/tenants/:tenantId/calls/:callId

Path parameters

  • callId: string, 就是调用“发起呼叫接口”返回的"callId"。

Response

{
  "id": string,
  "callerNumber": string,
  "calleeNumber": string,
  "agentId": integer,
  "salesmanCode": string,
  "startTime": datetime,
  "answerTime": datetime,
  "endTime": datetime,
  "duration": integer,
  "cost": string,
  "recordUrl": string
}
  • id: 与Path parameters中的"callId"相同

  • callerNumber: 主叫号码

  • calleeNumber: 被叫号码

  • agentId: 固定话机ID

  • salesmanCode: 销售员编号

  • startTime: 呼叫发起时间(RFC 3339 date-time,如:2016-01-11T18:25:43.511Z,下同)

  • answerTime: 应答时间

  • endTime: 通话结束时间

  • duration: 通话持续时长(单位:秒)

  • cost: 费用(单位:元)

  • recordUrl: 录音URL

三、按时间段查询话单

Request

GET #{apiPrefix}/tserver/tenants/:tenantId/calls/queryByPeriod?startTime=:startTime&endTime=:endTime&accessToken=:accessToken

Query parameters

  • startTime: 查询开始时间(RFC 3339 date-time,如:2016-01-11T18:25:43.511Z,下同)
  • endTime: 查询结束时间
  • accessToken: 访问密钥

Response

{
  "calls": [
    calls Resource(即“查询一通呼叫”接口的Response)
  ]
}

一次最多返回1万条数据。如果系统报返回结果超过1万条,请缩短查询时间间隔。

四、导号到号码库

Request

POST #{apiPrefix}/outbound/tenants/:tenantId/campaigns/:campaignId/numbers

一个campaign(呼叫任务)对应一个号码库,一个号码库中包含若干被叫号码。

Path parameters

  • campaignId: string, 呼叫任务ID

Request body

{
  "numbers": [
    string
  ]
}
  • numbers: 被叫号码数组(“被叫号码”需要是合法的手机号或固定电话。)

Response

如果调用成功,body返回值为空。

其它功能

一、订阅话机状态

订阅代码

请在WEB代码中加入如下内容:

<script src="http://cc.uccc.cc:9003/faye/client.js" type="text/javascript"></script>
<script type="text/javascript">
  var client = new Faye.Client("http://cc.uccc.cc:9003/faye", {timeout: 120});
  client.subscribe("/monitor_agent_699861013", function(message) {
    console.log(message);
  });
</script>

上述的示例代码中的"699861013"是"agentId",您需要替换成实际的值。

返回的message值

{
  "agentId": integer,
  "callId": string,
  "calleeNumber": string,
  "callerNumber": string,
  "salesmanCode": string,
  "state": string,
  "updatedAt": integer
}
  • agentId: 固定话机ID

  • callId: 本次呼叫的唯一ID。callId是36位长的UUID。

  • callerNumber: 主叫号码

  • calleeNumber: 被叫号码

  • salesmanCode: 销售员编号

  • state: 当前状态,具体状态值如下

    {
    "started": "呼叫已开始",
    "agentReady": "固定话机已准备好",
    "callAgentSuccess": "固定话机已接起",
    "callAgentFailed": "呼叫固定话机失败",
    "callCallee": "呼叫被叫号码",
    "calleeRingBack": "收到被叫号码回铃音。回铃音是被叫运营商给的。关机、停机等情况也可能收到回铃音。",
    "processed": "呼叫告一段落。如果没有收到'calleeRingBack',意味着呼叫已结束。",
    "calleeAnswered": "被叫已接起",
    "hangup": "挂断"
    }
  • updatedAt: 呼叫开始时间