## 获取外呼数据
>[info] **功能说明**
> 座席登录成功后,系统检测到有空闲座席,则会向甲方的API接口请求外呼的数据,获取到数据后,系统自动拨打电话,当被叫(客户)接听后,系统自动给接听的座席弹屏显示被叫(客户)信息。
>[warning] **提示**
> 1:API接口次返回一条外呼信息。
> 2:系统请求外呼数据的速度很快,比如有5个空闲座席,而接通率为10%,系统通过计算需要获取50个座席才能满足座席全员接听电话,系统则会连续获取50条外呼数据,所以API接口需要具备高并发。
>3:CTI系统获取外呼数据后,并不会缓存,会立刻呼叫,如果客户接听并转接给座席后,座席会弹屏,而弹屏页面是甲方的系统页面,所以甲方是知道那些电话是接通了的。而外呼基本上在60秒客户不接听,运营商则会放弃拨打(如语音提示:您拨打的电话暂时无人接听),所以甲方可以根据从获取数据的时间开始计算,如果180秒还没有弹屏,那么这个电话外呼失败了。甲方根据外呼的结果做一些外呼策略,如在催收场景中,同一个案件有50个电话,第一个为本人号码,其他依次为关系人号码,API可以优先返回本人号码,如果本人号码外呼失败,再按规则返回其他关系人的号码。
> 4:API还需要有一些其他逻辑,如上班时间返回数据,下班时间不要返回数据,防止在下班时间系统还继续外呼(系统只有有座席在线并且处于空闲状态才会请求外呼数据,但是座席有可能会在下班后忘记关闭电脑并且忘记签出系统)。
* **请求地址**
```
甲方提供获取数据的API接口
```
* **请求参数**
| 参数 | 是否必选 | 类型 | 描述 |
| --- | --- | --- | --- |
| groupNum | 是 | string | 座席的队列编号或者队列名称,即在“座席登录”接口中返回groupNum参数的值(“座席登录”API可能会返回一个座席属于多个组,但这里只请求其中一个) |
* **响应参数**
| 参数 | 是否必选 | 类型 | 描述 |
| --- | --- | --- | --- |
| code | 是 | int | 200/非200。 |
| status | 是 | string | success/failed,如果有外呼的数据吗,返回success,如果没有可用的外呼数据,返回failed。 |
| data | 是 | json | 本条数据信息 |
| data.phone | 是 | string | 被叫号码。 |
| data.trunkName | 否 | string | 出局中继名称,也就是使用哪条外线路拨打电话,如果没有该参数,则会从后台配置规则中选择中继线路。 |
| data.hide | 否 | string | 是否对座席隐藏被叫号码,y隐藏,n不隐藏,默认为n。 |
| data.callbackDomain | 否 | string | 回调地址,http或https开头的完整url地址,通话结束后,系统会将本次通话结果,包括data数据,以post的方式提交到该地址,注意,只有外呼失败才会回调,外呼成功座席会弹屏,座席弹屏则可以作为外呼成功的回调。 |
| data.data | 否 | string | json字符串格式,本次通话的客户数据,如客户ID,案件ID等等,在通话完毕回调时会原样回调,自动外呼建议带上该参数,因为在给座席弹屏的时候,弹屏的url中会带上data中的数据,业务系统可以根据如客户ID,案件ID等信息弹屏。 |
| logFileName | 否 | string | 话单日志文件名,通话结束后,服务器可以将话单记录为日志文件,开发人员可以去消费日志进行统计分析。 |
* **响应示例**
```
{
"status": "success",
"phone": "13590688803",
"msg": "",
"callbackDomain": "http://www.baidu.com",
"data": {
"CID": "260997",
"UID": "153769"
......
......
}
}
```