智能外呼AI Outbound

    API文档

    header说明

    key value
    userToken 认证token
    SpaceToken 空间token
    Content-Type application/json,post请求必须

    其中,userToken在「账号管理」获取,SpaceToken在「编辑空间」里面获取

    获取主叫号码

    地址

    https://bior.bce.baidu.com/openapi/v1/callerlist

    请求方式

    POST

    参数列表

    参数名称 参数类型 参数说明 是否必选 样例
    mobile String 主叫号码 01095092488
    usedTimeFloor Long 通话时长下限 23
    usedTimeCeile Long 通话时长上限 100
    usingStatus List 使用状态(0:未使用; 1: 正在使用) 0
    province String 省份 黑龙江
    city String 城市 哈尔滨
    pageNum Integer 页脚 默认值:1
    pageSize Integer 页大小,最大100 默认值:10

    示例

    {
    	"mobile" : "01095092488"
    	"usingStatus": [],
    	"mobile": "",
    	"startTime": "",
    	"endTime": "",
    	"province": "",
    	"city": "",
        "pageNum": 1,
        "pageSize": 10
    }

    响应参数

    参数名称 参数类型 参数说明
    status Integer 响应状态码
    msg String 响应说明
    data Object 主叫号码信息

    示例:

    {
      "status" : 0,
      "msg" : "OK",
      "data" : {
        "data" : [{
          "id" : 260,
          "mobile" : "01095092413",
          "usingStatus" : 0,
          "usedTime" : 58,
          "province" : "北京",
          "city" : "北京",
        }, {
          "id" : 272,
          "mobile" : "04792207913",
          "usingStatus" : 0,
          "usedTime" : 319,
          "province" : "北京",
          "city" : "北京",
        } ]
      }
    }

    新建任务

    地址

    https://bior.bce.baidu.com/openapi/v1/task/create

    请求方式

    POST

    参数列表

    参数名称 参数类型 参数说明 是否必选 样例
    taskName String 新建任务名称 快递通知任务
    saasAppId Long 机器人的唯一标识 90132624528086591
    callerNums List 主叫号码(主叫号码对应的Id) [1, 2, 3]
    taskType Byte 任务类型(0: 手动任务; 1: 定时任务) 默认: 0
    filter Byte 是否过滤黑名单(0: 过滤;1: 不过滤) 默认: 0
    tryTimes Integer 重试次数,最大次数为3 默认:0
    tryInterval Integer 重试间隔, 最大值720;单位:分钟 默认:30
    dates List 定时任务执行日期,最多最近的30个日期,定时任务必填 ["2019-09-21", "2019-09-23"]
    startTime String 任务一天内的拨打开始时间 默认: 09:00
    endTime String 任务一天内的拨打结束时间 默认: 21:00
    pauseStatus Byte 是否设置午休。(0:不限;1:设置生效) 默认: 1
    pauseStartTime String 午休开始时间 默认: 12:00
    pauseEndTime String 午休结束时间 默认: 14:00

    其中,taskName:只支持中英文、数字和下划线且长度不超过40字节。 示例

    {
    	"taskName": "新建任务",
    	"saasAppId": 90132624528086591,
    	"taskType": 0, 
    	"dates":["2019-09-21", "2019-09-23"],
    	"startTime": "09:00",
    	"endTime": "21:00",
    	"pauseStatus": 1,
    	"pauseStartTime": "12:00",
    	"pauseEndTime": "14:00",
    	"filter": 0,
    	"tryTimes": 0,
    	"tryInterval": 30,
    	"callerNums": [1,2]
    }

    响应参数

    参数名称 参数类型 参数说明
    status Integer 响应状态码
    msg String 响应说明
    data Long 新建任务Id

    示例:

    {
    	"status": 0,
    	"msg": "OK",
    	"data": 1232 // 任务ID
    }

    编辑呼叫任务

    地址

    https://bior.bce.baidu.com/openapi/v1/task/update

    请求方式

    POST

    参数列表

    参数名称 参数类型 参数说明 是否必选 样例
    taskId Integer 任务Id 1314
    taskName String 新建任务名称 快递通知任务
    callerNums List 主叫号码(主叫号码对应的Id) [1, 2, 3]
    filter Byte 是否过滤黑名单(0: 过滤;1: 不过滤) 默认: 0
    tryInterval Integer 重试间隔, 最大值720;单位:分钟 默认:30
    dates List 定时任务执行日期,最多最近的30个日期,定时任务必填 ["2019-09-21", "2019-09-23"]
    startTime String 任务一天内的拨打开始时间 默认: 09:00
    endTime String 任务一天内的拨打结束时间 默认: 21:00
    pauseStatus Byte 是否设置午休。0-不限;1-设置生效 默认: 1
    pauseStartTime String 午休开始时间 默认: 12:00
    pauseEndTime String 午休结束时间 默认: 14:00

    其中,taskName:只支持中英文、数字和下划线且长度不超过40字节。 示例

    {
        "taskId": 1314,
        "taskName": "新建任务",
        "dates":["2019-09-21", "2019-09-23"],
        "startTime": "09:00",
        "endTime": "21:00",
        "pauseStatus": 1,
        "pauseStartTime": "12:00",
        "pauseEndTime": "14:00",
        "filter": 0,
        "tryInterval": 30,
        "callerNums": [1, 2, 3]
    }

    响应参数

    参数名称 参数类型 参数说明
    status Integer 响应状态码
    msg String 响应说明
    data Object

    示例:

    {
        "status": 0,
        "msg": "OK",
        "data": {
        }
    }

    暂停任务

    地址

    https://bior.bce.baidu.com/openapi/v1/task/pause

    请求方式

    POST

    参数列表

    参数名称 参数类型 参数说明 是否必选 样例
    taskId Long 创建任务返回的任务Id 1232

    示例

    {
    	"taskId": 1232
    }

    响应参数

    参数名称 参数类型 参数说明
    status Integer 响应状态码
    msg String 响应说明
    data Object

    示例:

    {
    	"status": 0,
    	"msg": "OK",
    	"data": {
    	}
    }

    启动任务

    地址

    https://bior.bce.baidu.com/openapi/v1/task/run

    请求方式

    POST

    参数列表

    参数名称 参数类型 参数说明 是否必选 样例
    taskId Long 创建任务返回的任务Id 1232

    示例

    {
    	"taskId": 1232
    }

    响应参数

    参数名称 参数类型 参数说明
    status Integer 响应状态码
    msg String 响应说明
    data Object

    示例:

    {
    	"status": 0,
    	"msg": "OK",
    	"data": {
    	}
    }

    删除任务

    地址

    https://bior.bce.baidu.com/openapi/v1/task/delete

    请求方式

    POST

    参数列表

    参数名称 参数类型 参数说明 是否必选 样例
    taskId Long 创建任务返回的任务Id 1232

    示例

    {
    	"taskId": 1232
    }

    响应参数

    参数名称 参数类型 参数说明
    status Integer 响应状态码
    msg String 响应说明
    data Object

    示例:

    {
    	"status": 0,
    	"msg": "OK",
    	"data": {
    	}
    }

    查询呼叫任务

    地址

    https://bior.bce.baidu.com/openapi/v1/task/info

    请求方式

    POST

    参数列表

    参数名称 参数类型 参数说明 是否必选 样例
    taskId Long 创建任务返回的任务Id 1232

    示例

    {
    	"taskId": 1232
    }

    响应参数

    参数名称 参数类型 参数说明
    status Integer 响应状态码
    msg String 响应说明
    data Object

    data信息说明:

    参数名称 参数类型 参数说明
    id Integer 任务Id
    taskName String 任务名称
    taskStatus Byte 任务状态
    agentName String 话术名称
    numberCount Integer 号码数量
    startTime String 任务一天内的拨打开始时间
    endTime String 任务一天内的拨打结束时间
    pauseStatus Byte 是否设置午休。0-不限;1-设置生效
    pauseStartTime String 午休开始时间
    pauseEndTime String 午休结束时间
    tryTimes Integer 重试次数
    tryInterval Integer 重试间隔, 单位:分钟
    filter Byte 是否过滤黑名单(0: 过滤;1: 不过滤)
    timingDate List 定时任务执行日期
    taskType Byte 任务类型(0: 手动任务; 1: 定时任务)
    callerNums List 主叫号码

    示例:

    {
      "status" : 0,
      "msg" : "OK",
      "data" : {
        "id" : 2795,
        "taskName" : "测试任务",
        "taskStatus" : 4,
        "taskDegree" : 100,
        "agentName" : "测试话术",
        "numberCount" : 1,
        "startTime" : "09:00",
        "endTime" : "21:00",
        "pauseStatus" : 1,
        "pauseStartTime" : "12:00",
        "pauseEndTime" : "14:00",
        "tryTimes" : 1,
        "tryInterval" : 30,
        "filter" : 1,
        "timingDate" : ["2019-10-29", "2019-10-30"], 
        "taskType" : 0,
        "callerNums" : [ {
          "id" : 260,
          "mobile" : "01095092413"
        } ]
      }
    }

    客户信息导入

    地址

    https://bior.bce.baidu.com/openapi/v1/customer/import

    请求方式

    POST

    参数列表

    参数名称 参数类型 参数说明 是否必选 样例
    taskId Long 创建任务返回的任务Id 1232
    customers List 客户信息 见客户信息说明

    客户信息说明:

    参数名称 参数类型 参数说明 是否必选 样例
    customerId String 客户号,如需传入多个号码,则必传该字段 ics12345
    mobile1 String 号码1 13312345678
    name1 String 姓名1 张三先生
    mobile2 String 号码2 13412345678
    name2 String 姓名2 李四先生
    mobile3 String 号码3 13612345678
    name3 String 姓名3 王五先生
    mobile4 String 号码4 13712345678
    name4 String 姓名4 赵六先生
    extJson Json 扩展字段

    其中:

    • 客户信息:单次导入,最多支持100条客户信息导入
    • 客户号:仅支持英文、数字以及下划线组合,且必须以字母开头,长度不超过30字节。
    • 号码信息:仅支持标准手机号、座机号。如:13312345678、01081234567、010-8123456,+86 81234567
    • 姓名信息:仅支持中英文、数字以及下划线组合,且必须以中英文开头,长度不超过50字节
    • 扩展字段说明:userInfo信息为TTS变量信息;变量名称仅支持字母、数字及下划线组合,且必须以字母开头,长度不超过30字节;变量值长度不超过300字节。 示例
    {
    	"taskId": 1232,
    	"customers": [{
    		"customerId": "ics123456",
    		"mobile1": "13312345678",
    		"name1": "张三先生",
    		"mobile2": "13412345679",
    		"name2": "李四先生",
    		"mobile3": "13612345676",
    		"name3": "王五先生",
    		"mobile4": "13712345673",
    		"name4": "赵六先生",
    		"extJson": {
    			"userInfo": {
    				"name1": "张先生",
    				"number": "BD888888"
    			}
    		}
    	}]
    }

    响应参数

    参数名称 参数类型 参数说明
    status Integer 响应状态码
    msg String 响应说明
    data Object

    data信息说明:

    参数名称 参数类型 参数说明
    success Integer 成功条数
    failed Integer 失败条数
    repeat Integer 重复条数
    failedInfo List 失败反馈

    失败反馈说明:

    参数名称 参数类型 参数说明
    customerId String 客户号
    mobile1 String 号码1
    name1 String 姓名1
    mobile2 String 号码2
    name2 String 姓名2
    mobile3 String 号码3
    name3 String 姓名3
    mobile4 String 号码4
    name4 String 姓名4
    extJson Json 扩展字段
    failedInfo String 失败原因

    示例:

    {
    	"status": 0,
    	"msg": "OK",
    	"data": [{
    		"customerId": "ics123456",
    		"mobile1": "13312345678",
    		"name1": "张三先生",
    		"mobile2": "13412345679",
    		"name2": "李四先生",
    		"mobile3": "13612345676",
    		"name3": "王五先生",
    		"mobile4": "13712345673",
    		"extJson": {
    			"userInfo": {
    				"name": "张",
    				"number": "SF13244554"
    			}
    		},
    		"failedInfo": "号码重复"
    	}]
    }

    查询呼叫详情

    地址

    https://bior.bce.baidu.com/openapi/v1/task/detail

    请求方式

    POST

    参数列表

    参数名称 参数类型 参数说明 是否必选 样例
    taskId Long 创建任务返回的任务Id 1232
    customerNum String 客户号 10913897996820
    mobile String 号码信息 13312345678
    startTimeFloor Date 拨打时间起始日期 2019-10-08
    startTimeCeil Date 拨打时间结束日期 2019-10-08
    status Byte 呼叫状态 1
    createTimeFloor Date 导入时间起始日期 2019-10-08
    createTimeCeil Date 导入时间结束日期 2019-10-08
    durationFloor Integer 通话时长最小值,单位:秒 0
    durationCeil Integer 通话时长最大值,单位:秒 30
    pageNum Integer 页脚号,从第一页开始 默认: 1
    pageSize Integer 页面条数,最大为100 默认: 10

    示例

    {
        "taskId": 2808,
        "customerNum": "10913897996820",
        "mobile": "13821580332",
        "agentIntentId": "",
        "startTimeFloor": "2019-10-08",
        "startTimeCeil": "2019-10-08",
        "status": "6",
        "createTimeFloor": "2019-10-08",
        "createTimeCeil": "2019-10-08",
        "durationFloor": "0",
        "durationCeil": "1",
        "pageNum": 1
        "pageSize": 10
    }

    响应参数

    参数名称 参数类型 参数说明
    status Integer 响应状态码
    msg String 响应说明
    data Object

    data信息说明:

    参数名称 参数类型 参数说明
    customerId Long 客户Id
    customerNum String 客户号
    taskId Long 任务Id
    taskName String 任务名称
    mobile String 手机号
    saasSessionId String 通话记录的唯一标识
    status Byte 呼叫状态
    name String 用户名称
    intentDescription String 用户意向
    callTimes Integer 呼叫次数
    totalTime Integer 呼叫时长,单位:秒
    callType Integer 呼叫类型:0-批量任务;1-实时拨号;
    callStartTime Date 呼叫开始时间,格式:2019-10-08 19:11:41
    callEndTime Date 呼叫结束时间,格式:2019-10-08 19:11:41

    其中,mobile信息会加密,解密方式见后文 示例:

    {
      "status" : 0,
      "msg" : "OK",
      "data" : {
        "data" : [ {
          "customerId" : 125307,
          "customerNum" : "10913897996820",
          "taskId" : 2808,
          "taskName" : "外呼任务",
          "mobile" : "13312345678",
          "saasSessionId" : "dd20133c24a-2cb9-b394-86db-e04",
          "status" : 6,
          "name" : "小度",
          "intentDescription" : "满意",
          "callTimes" : 1,
          "totalTime" : 0,
          "callType" : 0,
          "callStartTime" : "2019-10-08 19:11:41",
          "callEndTime" : "2019-10-08 19:11:41"
        } ],
        "totalNum" : 1,
        "pageNum" : 1,
        "pageSize" : 10
      }
    }

    查询客户呼叫状态详情接口

    地址

    https://bior.bce.baidu.com/openapi/v1/task/call/history

    请求方式

    POST

    参数列表

    参数名称 参数类型 参数说明 是否必选 样例
    taskId Long 创建任务返回的任务Id 1232
    customerId Long 客户id 10913897996820

    示例

    {
        "taskId": 2808,
        "customerId": "10913897996820"
    }

    响应参数

    参数名称 参数类型 参数说明
    status Integer 响应状态码
    msg String 响应说明
    data Object

    data信息说明:

    参数名称 参数类型 参数说明
    mobile String 被叫号码
    callTimes int 呼叫轮次
    status int 客户通话状态
    totalTimeString String 通话时长
    callStartTime Date 拨打时间

    示例:

    {
      "status" : 0,
      "msg" : "OK",
      "data" : {
    	  "mobile" : "13312345678",
          "status" : 6,
          "callTimes" : 1,
          "totalTimeString" : "00:25",
          "callStartTime" : "2019-10-08 19:11:41",
      }
    }

    回调接口

    地址

    由客户提供,填写在「实时调用-回调地址」页面

    请求方式

    POST

    参数列表

    参数 类型 含义 必选 说明
    saasAppId Long 唯一对应一个话术 与输入一致
    saasSessionId String 给客户的一通电话的唯一标识 与输入一致
    customerNum String 客户号 以实际客户号为准
    taskId Long 任务id 以实际任务id为准
    callerNum String 主叫号码 与输入一致
    calledNum String 被叫号码 与输入一致
    callStatus int 通话状态 通话状态 0:已接通,1:拒绝, 9:回调超时
    beginTime String 呼叫接通时间 以通话录音开始时间为准,响铃时间不计入
    endTime String 呼叫结束时间 以通话录音结束为准
    extJson Object 扩展字段,返回一通电话各相关信息 Map结构,包括通话状态、意图信息、会话记录、录音、

    扩展参数说明

    参数 类型 含义 说明
    audioUrl String 录音地址
    totalTime Integer 通话时长, 单位:秒 10
    callRecord List 通话记录 sentence:通话内容;roleCategory;agent表示机器人,CLIENT表示客户; duration:该语句时长
    intentionList List 客户意向信息收集 按照收集到的先后排序
    collectInfoList List 客户信息收集 infoName:信息的key值;infoValue:信息的value值
    crankCallVo Map 是否是骚扰电话 crankCall:true表示是, false表示不是; crankCallList:匹配的策略

    请求示例

    {
        "saasAppId": 1234567,
        "saasSessionId": "714fd2a18f9-7705-135b2-bead-1acb",
        "calledNum": "15117921865",
        "callerNum": "04792207912",
        "taskId": 1002794,
        "customerNum": "adfsfdsfsfffsad",
        "callStatus": 0,
        "beginTime": 1553764898668,
        "endTime": 1553764938998,
        "extJson":{
            "audioUrl": "https://bior.bce.baidu.com/rest/bior/v1/audio/download?sessionId=a1403c55e4e96c6d-4d5a-e10-12e5&token=4221805D91266151D4136E1B9994EA09",
            "totalTime" 10,
            "callRecord": [{
                "sentence": "喂?你好,请问您是吗?我这边是千言婚恋网站的顾问老师给您来电的,看到您之前在我们网站上有注册一份征婚资料,也想请问一下您现在还单身吗",
                "roleCategory": "AGENT",
                "duration": 10
            }, {
                "sentence": "",
                "roleCategory": "CLIENT",
                "duration": 0
            }, {
                "sentence": "您好,您能听得到吗?",
                "roleCategory": "AGENT",
                "duration": 2
            }, {
                "sentence": "",
                "roleCategory": "CLIENT",
                "duration": 0
            }, {
                "sentence": "您好,您能听得到吗?",
                "roleCategory": "AGENT",
                "duration": 2
            }, {
                "sentence": "",
                "roleCategory": "CLIENT",
                "duration": 0
            }, {
                "sentence": "您好,您能听得到吗?",
                "roleCategory": "AGENT",
                "duration": 2
            }],
            "intentionList": ["是单身", "需要介绍对象"],
            "collectInfoList": [
                {
                    "意向":"满意"
                }{
                    "意向":"满意"
                }
            ], // 信息收集
            "crankCallVo": {
                "crankCall": false,
                "crankCallList": []
            } // 骚扰电话
        }
    }

    解密方式 由于对外发送的客户手机号进行了加密,此函数为对应的解密方法,其中 key为外呼平台为每个客户颁发的token信息,message为外呼平台加密后的手机号码信息

    import javax.crypto.Cipher;
    import javax.crypto.spec.IvParameterSpec;
    import javax.crypto.spec.SecretKeySpec;
    import sun.misc.BASE64Decoder;
    
    public class DecryptUtils {
    
        /**
         * AES偏移量
         */
        private static final String OFFSET = "1qaz2wsx3edc4rfv";
    
        /**
         * 解密方式
         * @param key 用户认证的Token
         * @param message 需要解密的手机号码
         * @return
         */
        public static String decrypt(String key, String message) {
            try {
                byte[] bytes = (new BASE64Decoder()).decodeBuffer(message);
                IvParameterSpec ivSpec = new IvParameterSpec(OFFSET.getBytes());
                byte[] arrBTmp = key.getBytes();
                byte[] arrB = new byte[16];
    
                for (int i = 0; i < arrBTmp.length && i < arrB.length; ++i) {
                    arrB[i] = arrBTmp[i];
                }
    
                SecretKeySpec skeySpec = new SecretKeySpec(arrB, "AES");
                Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
                cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivSpec);
                byte[] ret = cipher.doFinal(bytes);
                return new String(ret, "utf-8");
            } catch (Exception e) {
                e.printStackTrace();
            }
            return message;
        }
    }

    其中,用户token通过外呼平台获取

    #任务状态码

    状态码 描述
    0 无号码
    1 未启动
    2 执行中
    3 暂停中
    4 已完成
    5 待拨打
    6 已过期

    #用户状态

    状态码 描述
    0 已接通
    1 未接通
    9 拨打超时

    #错误码

    错误码 说明
    101 该用户没有开通企业认证
    102 该用户没有开通外呼
    103 您已欠费,请充值后再使用
    104 您已被停止使用外呼,请联系管理员,谢谢
    201 参数错误
    202 您没有权限访问外呼平台

    使用说明

    userToken在「账号管理」获取。

    image.png

    SpaceToken在「编辑空间」获取。

    image.png

    回调地址在「实时调用-回调地址」填写。

    image.png

    上一篇
    业务系统对接
    下一篇
    实时调用