# 智能外呼

# 1、接口声明

业务流程图:
图片

# 2、接口调用

# 2.1、校验账号

接口说明:

接口类型:主动调用接口

接口作用:校验登录账号是否与appid符合。

请求方式:

GET

请求地址:

https://icall.sobot.com/api/icall/5/task/check_login_name

请求参数:

参数 类型 必填 名称 备注
appid 字符串 智齿分配
signature 字符串 智齿分配
email 字符串 登录邮箱账号

返回参数:

参数 类型 必填 名称 备注
ret_code 字符串 执行结果码
ret_msg 字符串 返回信息
check_result 整形 校验结果:1 校验通过,0:校验不通过
reason 字符串 校验失败原因

请求示例:

https://icall.sobot.com/api/icall/5/task/check_login_name?appid=XXXX&signature=XXXX&email=XXXX@sobot.com

返回示例:

{
    "check_result": 1,
    "ret_msg": "校验成功",
    "ret_code": "000000"
}

# 2.2、查询模板

接口说明:

接口类型:主动调用接口

接口作用:查询智能外呼系统中可用的模板,用于接口创建任务。

请求方式:

GET

请求地址:

https://icall.sobot.com/api/icall/5/task/query_template

请求参数:

参数 类型 必填 名称
appid 字符串 智齿分配
signature 字符串 智齿分配

返回参数:

参数 类型 必填 名称 备注
ret_code 字符串 执行结果码
ret_msg 字符串 返回信息
data 对象 返回结果 详见下文

返回data:

参数 类型 必填 名称
templateid 字符串 模板id
template_name 字符串 模板名称

请求示例:

https://icall.sobot.com/api/icall/5/task/query_template?appid=XXXXXX&signature=XXXXXX

返回示例:

{
    "data": [
        {
            "template_name": "多轮测试副本",
            "templateid": "4ad6087f7df4461e800906091cfb666e"
        },
        {
            "template_name": "多轮测试",
            "templateid": "ca7ec81e7bef4adfb314c127f1b86dee"
        },
        {
            "template_name": "测试11",
            "templateid": "43016bcbf54740b78672788ba2aab59a"
        },
        {
            "template_name": "test1",
            "templateid": "3eaf01e733c7468491885141ee0fdb28"
        }
    ],
    "ret_msg": "查询成功",
    "ret_code": "000000"
}

# 2.3、查询可用机器人数

接口说明:

接口类型:主动调用接口

接口作用:查询智能外呼系统中可用机器人数,用于接口创建任务。

请求方式:

GET

请求地址:

https://icall.sobot.com/api/icall/5/task/query_robot_num

请求参数:

参数 类型 必填 名称 备注
appid 字符串 智齿分配
signature 字符串 智齿分配

返回参数:

参数 类型 必填 名称 备注
ret_code 字符串 执行结果码
ret_msg 字符串 返回信息
robot_num 整形 返回结果 可用机器人数量

请求示例:

https://icall.sobot.com/api/icall/5/task/query_robot_num?appid=XXXXXX&signature=XXXXXX

返回示例:

{
    "robot_num": 4,
    "ret_msg": "查询成功",
    "ret_code": "000000"
}

# 2.4、查询外显号码信息

接口说明:

接口类型:主动调用接口

接口作用:查询智能外呼系统中的外显号码信息,用于接口创建任务。

请求方式:

GET

请求地址:

https://icall.sobot.com/api/icall/5/task/query_number

请求参数:

参数 类型 必填 名称 备注
appid 字符串 智齿分配
signature 字符串 智齿分配

返回参数:

参数 类型 必填 名称 备注
ret_code 字符串 执行结果码
ret_msg 字符串 返回信息
total_count 整形 总并发
data 对象 线路信息 详见下文

返回data:

参数 类型 必填 名称 备注
telephone 字符串 外显号码
count 字符串 并发

请求示例:

https://icall.sobot.com/api/icall/5/task/query_number?appid=XXXXXX&signature=XXXXXX

返回示例:

{
    "data": [
        {
            "count": 2,
            "telephone": "02180344315"
        }
    ],
    "total_count": 2,
    "ret_msg": "查询成功",
    "ret_code": "000000"
}

# 2.5、创建任务

接口说明:

接口类型:主动调用接口

接口作用:在智能外呼系统中创建一个机器人外呼任务。

请求方式:

POST

请求地址:

https://icall.sobot.com/api/icall/5/task/add_task

请求参数:

参数 类型 必填 名称
appid 字符串 智齿分配
signature 字符串 智齿分配
templateid 字符串 模板id
task_name 字符串 任务名称
line_type 整型 线路类型,1:固话,3:sim卡
telephone 字符串 外显号码,多个用","分隔
start_time 时间戳 自定义有效期开始时间,13位
end_time 时间戳 自定义有效期结束时间,13位
robot_num 整型 机器人数
time_type 整型 有效期 1:自定义 ;2:永久
call_time_slot 字符串 拨打时间段,示例:10:00-19:00
task_status 整型 任务状态传0即可
push_url 字符串 结果推送地址
push_type 整型 结果推送方式,1:转人工后推送 2:通话结束后推送
number_hide 整型 号码隐藏,默认不开启。0:不开启,1:隐藏后四位,2:隐藏中间四位。
export_status 整型 允许结果导出,默认允许。0:允许,1:不允许。

返回参数:

参数 类型 必填 名称 备注
ret_code 字符串 执行结果码
ret_msg 字符串 返回信息
data 对象 返回结果 详见下文

返回data:

参数 类型 必填 名称
taskid 字符串 任务id

请求示例:

{
    "appid":"xxxxxxxxxx",             //智齿提供的appid
    "signature": "xxxxxxxxxxxxx",   //智齿提供的signature
    "templateid":"模板id",         //拨打电话时使用的模板,需在系统中提前设置模板
    "task_name": "任务名称",           //本次任务的名称
    "line_type":"线路类型",             //本次任务拨打时用的线路类型1:固话,3:sim卡(需提前配置线路)
    "telephone":"telephone",         //本次任务拨打时需要显示的外显号码(需提前配置外显号)
    "robot_num": "机器人数目",         //本次任务拨打时机器人的数目(需提前配置)
    "time_type":"有效期",                 //本次任务的有效期1:自定义  ;2:永久
    "start_time": "13位时间戳",          //本次任务有效期为自定义时的开始时间
    "end_time":"13位时间戳",       // 本次任务有效期为自定义时的结束时间
    "call_time_slot": "拨打时间段",      //本次任务将在此时间段进行拨打
    "task_status":"0",
    "push_url":"结果推送接收地址",  
    "push_type":"结果推送方式"       
}

返回示例:

{
	"ret_code": "000000",
	"ret_msg": "创建任务成功",
	"data": {
		"taskid": "XXXXXX"
	}
}

# 2.6、结果推送说明

接口说明:

接口类型:被动推送接口

接口作用:智能外呼系统会将呼叫结果根据创建任务时设置的推送方式和推送地址推送进行推送。

推送方式:

POST

推送地址:

创建任务时push_type设置的地址。

推送参数:

智能外呼系统将拨打结果以JSON的形式推送,字段含义见2.8、查看数据详情示-返回参数 ,例如下:

{
    "result":{
    "data":{
        "msg":[{
                "callid":"soboticallbcf37279feb441ee99f33a9814d26b00",
                "msg":"您好,我是XXXX的体验专员,今天给您来电是想了解一下,您第一次在我们平台下单的体验怎么样?",
                "date_time":1576551750959,
                "sender_type":1,
                "remark":null
            },
            {
                "callid":"soboticallbcf37279feb441ee99f33a9814d26b00",
                "msg":"挺好的",
                "date_time":1576551784241,
                "sender_type":0,
                "remark":"匹配到:【开场白#肯定】"
            },
            {
                "callid":"soboticallbcf37279feb441ee99f33a9814d26b00",
                "msg":"了解了,我们会继续努力给您提供更好的服务,我们给您准备了一张10元无门槛的红包,希望您还可以继续支持我们。",
                "date_time":1576551784243,
                "sender_type":1,
                "remark":null
            }
        ],
        "detail":{
            "callid":"soboticallbcf37279feb441ee99f33a9814d26b00",
            "answer_time":1576551759848,
            "voice_url":"http: \/\/sobot-test.oss-cn-beijing.com\/call\/ai\/123456\/20191217\/20191217110230_soboticallbcf37279feb441ee99f33a9814d26b00.wav",
            "end_time":1576551789308,
            "fee_duration":29460,
            "user_msg_count":1,
            "call_duration":39440,
            "start_time":1576551749868,
            "caller":02180344315,
            "outid":1234554321123666,
            "tel":18207736077,
            "intention_name":"有意向购买\u0001满意",
            "status":2
        }
    },
    "ret_code":000000
    }
}

# 2.7、提交数据

接口说明:

接口类型:主动调用接口

接口作用:在智能外呼系统中的某一个任务下上传外呼的数据。

请求方式:

POST

请求地址:

https://icall.sobot.com/api/icall/5/task/add_task_data

请求参数:

参数 类型 必填 名称 备注
appid 字符串 智齿分配
signature 字符串 智齿分配
taskid 字符串 任务id,创建任务接口返回的任务id
data 字符串对象数组 任务数据 见下文

data说明:

json数组,数据格式如下,示例: [{"telephone":"xxx","outi d":"xxx","variable":"会议地点^银海大厦|参会人性别^先生"}]

传入参数data格式:

参数 类型 必填 名称
telephone 字符串 用户电话,不符合电话格式的数据将会被过滤掉。
outid 字符串 数据id,需要保证唯一,请自行传值,查看数据详情也用到该id
variable 字符串 见下文

variable参数说明:

模板变量,变量名与变量值用^分隔,多个变量用|分隔,示例"变量名1^变量值1|变量名2^变量值2"

返回参数:

参数 类型 必填 名称
ret_code 字符串 执行结果码
ret_msg 字符串 返回信息

请求示例:

{
    "appid":"xxxxxxxxxx",             //智齿提供的appid
    "signature": "xxxxxxxxxxxxx",             //智齿提供的signature
    "taskid":"xxxx",             //提交的任务id,在创建任务接口返回
    "data": [{
        "telephone":"15988888888",             //拨打的电话号码
        "outid":"xxxxxxxx",             //任务数据的id,需唯一,根据此字段查看数据拨打详情
        "variable":"会议地点^银海大厦|参会人性别^先生"             //变量,需在配置模板时有相应的变量字段
    }]
}

返回示例:

{
	"ret_code": "000000",
	"ret_msg": "提交数据成功"
}

# 2.8、文件提交数据

接口说明:

接口类型:主动调用接口

接口作用:在智能外呼系统中的某一个任务下excel文件上传外呼的数据。

请求方式:

POST

请求地址:

/api/icall/5/task/add_task_file_data

请求参数:

参数 类型 必填 名称 备注
appid 字符串 智齿分配
signature 字符串 智齿分配
taskid 字符串 任务id,创建任务接口返回的任务id
data_file Excel文件 任务数据文件 接口对接通过MultipartFile方式发送发送请求,文件大小限制不大于5MB,数据条数限制不超过10万条。

返回参数:

参数 类型 必填 名称 备注
ret_code 字符串 执行结果码
ret_msg 字符串 返回信息
counts 整型 上传总条数
defeat_counts 整型 失败条数
repeat_counts 整型 重复条数
success_counts 整型 成功条数
filter_count 整型 过滤条数
error_data 集合 错误数据行号

返回示例:

{
    "counts": 2,
    "defeat_counts": 1,
    "repeat_counts": 0,
    "success_counts": 1,
    "ret_msg": "本次导入数据2条,成功1条,过滤免打扰客户数据0条,失败1条",
    "filter_count": 0,
    "ret_code": "000000",
    "error_data": [
        3
    ]
}

# 2.9、查看数据详情

接口说明:

接口类型:主动调用接口

接口作用:在智能外呼系统中查看某个任务的数据详情。

请求方式:

GET

请求地址:

https://icall.sobot.com/api/icall/5/task/query_task_data

请求参数:

参数 类型 必填 名称
appid 字符串 智齿分配
signature 字符串 智齿分配
outid 字符串 数据id
taskid 字符串 数据所在任务id

返回参数:

参数 类型 必填 名称 备注
ret_code 字符串 执行结果码
ret_msg 字符串 返回信息
data 对象 返回结果信息 详见下文

data对象:

参数 类型 必填 名称 备注
detail 对象 基本通话信息 详见下文
msg 对象数组 通话详情 详见下文

detail对象:

参数 类型 必填 名称 备注
callid 字符串 通话id
start_time 时间戳 呼叫开始时间,毫秒级时间戳
answer_time 时间戳 接通时间,毫秒级时间戳
end_time 时间戳 结束时间,毫秒级时间戳
call_duration 整型 呼叫时长,外呼时:从拨号开始计时,单位:毫秒
fee_duration 整型 通话时长,从用户/机器人摘机开始计时,单位:毫秒
intention_name 字符串 客户意向
status 整型 拨打状态 0:未拨打 1:拨打中 2:已接通 3:无人接听 4:关机 5:停号 6:空号 7:拒接 9:用户正忙
tel 字符串 用户号码
caller 字符串 外显号码
user_msg_count 整型 用户消息数
voice_url 字符串 录音地址

msg对象:

参数 类型 必填 名称 备注
callid 字符串 通话Id
date_time 字符串 时间戳,13位
msg 字符串 通话内容
sender_type 字符串 发送者类型,0用户,1机器人

请求示例:

https://icall.sobot.com/api/icall/5/task/query_task_data?appid=XXXXXX&signature=XXXXXX&outid=XXXXXX& taskid=XXXXXX

返回示例:

{
"ret_code": "000000", 
    "data": {
        "msg": [
            {
                "callid": "soboticallebb1c75dc9794510aa0c1ed76fb0c576",
                "msg": "您好,我是XXX的体验专员,今天给您来电是想了解一下,您第一次在我们平台下单的体验怎么样?",
                "date_time": "1570607971174",
                "sender_type": "1"
            },
            {
                "callid": "soboticallebb1c75dc9794510aa0c5ed76fb0c576",
                "msg": "挺好的",
                "date_time": "1570608002233",
                "sender_type": "0"
            }
        ],
        "detail": {
            "callid": "soboticallebb1c75dc9794510aa0c1ed76fb0c576",
            "answer_time": 1570607985848,
            "start_time": 1570607970268,
            "caller": "02180344315",
            "voice_url": "http://sobot-test.oss-cn-beijing.com/call/ai/d8c3a878727c4beda55bae9ec183297f/20191009/20191009155930_soboticallebb1c75dc9794510aa0c5ed76fb0c576.wav",
            "end_time": 1570608025308,
            "fee_duration": 39460,
            "tel": "182****6077",
            "user_msg_count": 1,
            "call_duration": 55040,
            "intention_name": "",
            "status": 2
        }
    }
}

# 2.10、查询任务

接口说明:

接口类型:主动调用接口

接口作用:查询该公司下所有非完结任务

请求方式:

GET

请求地址:

https://icall.sobot.com/api/icall/5/task/query_task

请求参数:

参数 类型 必填 名称
appid 字符串 智齿分配
signature 字符串 智齿分配

返回参数:

参数 类型 必填 名称 备注
ret_code 字符串 执行结果码
ret_msg 字符串 返回信息
data 对象 返回结果信息 详见下文

返回data:

参数 类型 必填 名称 备注
taskid 字符串 任务id
task_name 字符串 任务名称
task_status 整型 任务状态 0未开始,1进行中,2已完结,3拨打时间段外,4排队中,5暂停中

请求示例:

https://icall.sobot.com/api/icall/5/task/query_task?appid=XXXXXX&signature=XXXXXX

返回示例:

{
	"ret_code": "000000",
	"ret_msg": "继续任务成功",
    "data": [
            {
                "task_name": "任务1",
                "task_status": 0,
                "taskid": "100018163bcf0dc314eadaf7e13280548658c"
            },
            {
                "task_name": "任务2",
                "task_status": 1,
                "taskid": "10001de2077f6e3724924a978afdf86070ad6"
            },
            {
                "task_name": "任务2",
                "task_status": 5,
                "taskid": "1000182e3744c81954b6d9306cb0343527aab"
            }
        ]
}

# 2.11、暂停任务

接口说明:

接口类型:主动调用接口

接口作用:对进行中的任务进行暂停。

请求方式:

GET

请求地址:

https://icall.sobot.com/api/icall/5/task/pause_task

请求参数:

参数 类型 必填 名称 备注
appid 字符串 智齿分配
signature 字符串 智齿分配
taskid 字符串 任务id

返回参数:

参数 类型 必填 名称 备注
ret_code 字符串 执行结果码
ret_msg 字符串 返回信息

请求示例:

https://icall.sobot.com/api/icall/5/task/pause_task?appid=XXXXXX&signature=XXXXXX&taskid=XXXXXX

返回示例:

{
	"ret_code": "000000",
	"ret_msg": "暂停成功"
}

# 2.12、继续任务

接口说明:

接口类型:主动调用接口 接口作用:对暂停中的任务继续执行

请求方式:

GET

请求地址:

https://icall.sobot.com/api/icall/5/task/resume_task

请求参数:

参数 类型 必填 名称
appid 字符串 智齿分配
signature 字符串 智齿分配
taskid 字符串 任务id

返回参数:

参数 类型 必填 名称
ret_code 字符串 执行结果码
ret_msg 字符串 返回信息

请求示例:

https://icall.sobot.com/api/icall/5/task/resume_task?appid=XXXXXX&signature=XXXXXX&taskid=XXXXXX

返回示例:

{
	"ret_code": "000000",
	"ret_msg": "继续任务成功"
}

# 2.13、查看任务详情

接口说明:

接口类型:主动调用接口

接口作用:查询智能外呼系统中某个任务详情,支持多个任务查询。

请求方式:

GET

请求地址:

https://icall.sobot.com/api/icall/5/task/query_task_info

请求参数:

参数 类型 必填 名称 备注
appid 字符串 智齿分配
signature 字符串 智齿分配
taskid 字符串 任务id,多个用","分隔,最多不超过15个。

返回参数:

参数 类型 必填 名称 备注
ret_code 字符串 执行结果码
ret_msg 字符串 返回信息
data 对象 返回结果列表 详见下文

返回data:

参数 类型 必填 名称 备注
taskid 字符串 任务id
task_name 字符串 任务名称
task_status 字符串 任务状态 -1 已删除,0未开始,1进行中,2 已完结, 3拨打时间段外,4排队中,5暂停中
telephone 字符串 外显号码,多个用","分隔
robot_num 整型 机器人数
call_time_slot 字符串 拨打时间段,示例:10:00-19:00
time_type 整型 有效期 1:自定义 ;2:永久
start_time 时间戳 自定义有效期开始时间,13位
end_time 时间戳 自定义有效期结束时间,13位
call_total_data 整型 任务数据总量
call_times 整型 已拨打数据量
call_connected_times 整型 已接通数据量
call_intent_times 整型 有意向的数据量

请求示例:

https://icall.sobot.com/api/icall/5/task/query_task_info?appid=XXXXXX&signature=XXXXXX

返回示例:

{
    "data": [
        {
            "call_times": 115,
            "call_intent_times": 1,
            "task_name": "1212-01",
            "call_total_data": 508,
            "task_status": 5,
            "time_type": 2,
            "call_time_slot": "09:00-20:00",
            "end_time": null,
            "robot_num": 4,
            "telephone": "02180344315",
            "start_time": null,
            "call_connected_times": 5,
            "taskid": "1000110d35472707c4067808f68271e07e787"
        },
        {
            "call_times": 6,
            "call_intent_times": 0,
            "task_name": "1227",
            "call_total_data": 6,
            "task_status": 2,
            "time_type": 2,
            "call_time_slot": "09:00-20:00",
            "end_time": null,
            "robot_num": 1,
            "telephone": "02180344315",
            "start_time": null,
            "call_connected_times": 6,
            "taskid": "10001ec873e088ee0419293886b75ed9db814"
        }
    ],
    "ret_msg": "查询成功",
    "ret_code": "000000"
}

# 2.14、删除任务

接口说明:

接口类型:主动调用接口

接口作用:删除智能外呼系统中某个任务。

请求方式:

GET

请求地址:

https://icall.sobot.com/api/icall/5/task/delete_task

请求参数:

参数 类型 必填 名称 备注
appid 字符串 智齿分配
signature 字符串 智齿分配
taskid 字符串 任务id

返回参数:

参数 类型 必填 名称 备注
ret_code 字符串 执行结果码
ret_msg 字符串 返回信息

请求示例:

https://icall.sobot.com/api/icall/5/task/delete_task?appid=XXXXXX&signature=XXXXXX&taskid=XXXXXX

返回示例:

{
    "ret_msg": "删除成功",
    "ret_code": "000000"
}

# 2.15、查询时间段内拨打量

接口说明:

接口类型:主动调用接口

接口作用:获取指定时间段内指定任务的外呼已完成数据总数。

请求方式:

GET

请求地址:

https://icall.sobot.com/api/icall/5/task/calls_count

请求参数:

参数 类型 必填 名称 备注
appid 字符串 智齿分配
signature 字符串 智齿分配
taskid 字符串 任务id,多个用","分隔,最多不超过15个。
begin_time 时间戳 13位毫秒时间戳
end_time 时间戳 13位毫秒时间戳

返回参数:

参数 类型 必填 名称 备注
ret_code 字符串 执行结果码
ret_msg 字符串 返回信息
data 对象 返回结果列表 详见下文

返回data:

参数 类型 必填 名称 备注
taskid 字符串 任务id
task_name 字符串 任务名称
count 整型 该时段内指定任务下已完成外呼数据的总数

请求示例:

https://icall.sobot.com/api/icall/5/task/calls_count?appid=XXXX&signature=XXXX&taskid=100017add6b22e5884678a6c1c861f73beae8,100010484d4fb8d734888b0ec89f0978d5e20&begin_time=1577436030000&end_time=1579086041000

返回示例:

{
    "data": [
        {
            "task_name": "20.01.15测试",
            "count": 25,
            "taskid": "100017add6b22e5884678a6c1c861f73beae8"
        },
        {
            "task_name": "测试任务",
            "count": 1,
            "taskid": "100010484d4fb8d734888b0ec89f0978d5e20"
        }
    ],
    "ret_msg": "查询成功",
    "ret_code": "000000"
}

# 2.16、获取指定时间段内外呼数据详情

接口说明:

接口类型:主动调用接口

接口作用:获取指定时间段内外呼数据详情。

请求方式:

GET

请求地址:

https://icall.sobot.com/api/icall/5/task/query_time_task_data

请求参数:

参数 类型 必填 名称 备注
appid 字符串 智齿分配
signature 字符串 智齿分配
taskid 字符串 数据所在任务id
begin_time 时间戳 13位毫秒时间戳
end_time 时间戳 13位毫秒时间戳
page_size 整型 每页大小,最大不超过15
page_num 整型 页码

返回参数:

参数 类型 必填 名称 备注
ret_code 字符串 执行结果码
ret_msg 字符串 返回信息
page_count 整型 总页数
total_count 整型 总数据量
data 对象集合 返回结果集合 详见下文

data对象:

参数 类型 必填 名称 备注
detail 对象 基本通话信息 详见下文
msg 对象数组 通话详情 详见下文

detail对象:

参数 类型 必填 名称 备注
callid 字符串 通话id
start_time 时间戳 呼叫开始时间,毫秒级时间戳
answer_time 时间戳 接通时间,毫秒级时间戳
end_time 时间戳 结束时间,毫秒级时间戳
call_duration 整型 呼叫时长,外呼时:从拨号开始计时,单位:毫秒
fee_duration 整型 通话时长,从用户/机器人摘机开始计时,单位:毫秒
intention_name 字符串 客户意向
status 整型 拨打状态 0:未拨打 1:拨打中 2:已接通 3:无人接听 4:关机 5:停号 6:空号 7:拒接 9:用户正忙
tel 字符串 用户号码
caller 字符串 外显号码
user_msg_count 整型 用户消息数
voice_url 字符串 录音地址
del_flag 整型 删除标志 1:正常,-1:删除

msg对象:

参数 类型 必填 名称 备注
callid 字符串 通话Id
date_time 字符串 时间戳,13位
msg 字符串 通话内容
sender_type 字符串 发送者类型,0用户,1机器人

请求示例:

https://icall.sobot.com/api/icall/5/task/query_time_task_data?appid=XXXX&signature=XXXXXX&taskid=100017add6b22e5884678a6c1c861f73beae8&begin_time=1575189630001&end_time=1579086041000&page_size=2&page_num=1

返回示例:

{
    "data": [
        {
            "msg": [
                {
                    "callid": "soboticall7b2e7dbb3006439195d03daed5088ff5",
                    "msg": "您好,我是XXXX的体验专员,今天给您来电是想了解一下,您第一次在我们平台下单的体验怎么样?",
                    "date_time": "1579084972898",
                    "sender_type": "1"
                }
            ],
            "detail": {
                "callid": "soboticall7b2e7dbb3006439195d03daed5088ff5",
                "answer_time": "0",
                "del_flag": "-1",
                "voice_url": "http://sobot-test.oss-cn-beijing.aliyuncs.com/call/ai/123456/20200115/20200115184252_soboticall7b2e7dbb3006439195d03daed5088ff5.wav",
                "end_time": "1579084974374",
                "fee_duration": "0",
                "user_msg_count": "0",
                "call_duration": "1930",
                "start_time": "1579084972444",
                "caller": "02180344315",
                "tel": "18201666077",
                "intention_name": "",
                "status": "3"
            }
        },
        {
            "msg": [
                {
                    "callid": "soboticall51d0048b18394c4d9bcaa5981bcb08f3",
                    "msg": "您好,我是XXXX的体验专员,今天给您来电是想了解一下,您第一次在我们平台下单的体验怎么样?",
                    "date_time": "1579084972897",
                    "sender_type": "1"
                },
                {
                    "callid": " soboticall51d0048b18394c4d9bcaa5981bcb08f3",
                    "msg": "挺好的",
                    "date_time": "1579084975134",
                    "sender_type": "0"
                }
            ],
            "detail": {
                "callid": "soboticall51d0048b18394c4d9bcaa5981bcb08f3",
                "answer_time": "0",
                "del_flag": "1",
                "voice_url": "http://sobot-test.oss-cn-beijing.aliyuncs.com/call/ai/123456/20200115/20200115184252_soboticall51d0048b18394c4d9bcaa5981bcb08f3.wav",
                "end_time": "1579084974547",
                "fee_duration": "0",
                "user_msg_count": "0",
                "call_duration": "2120",
                "start_time": "1579084972427",
                "caller": "02180344315",
                "tel": "18500974776",
                "intention_name": "",
                "status": "3"
            }
        }
    ],
    "total_count": 25,
    "ret_code": "000000",
    "page_count": 13
}

# 2.17、开放接口demo

Demo:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import net.sf.json.JSONArray;

/**
*智能外呼开放接口请求示例 
*该示例包括两个接口:创建任务和提交数据
*/
  public class PlatformDemo {
  private static String BASEURI = " [https://icall.sobot.com/api/icall/5/task/]( https://icall.sobot.com/api/icall/5/task/)";

  public static void main(String[] args) {
      System.out.println(addTask()); // 创建任务
      System.out.println(addTaskData()); // 提交数据
  }
  // 创建任务
  public static String addTask() {
      // 链接
      String addTaskUri = BASEURI + " add_task ";
      // 参数
      Map<String, Object> parmaMap = new HashMap<String, Object>();
      parmaMap.put("appid", "xxxxxx");
      parmaMap.put("signature", "xxxxxxxxxxxxxxxxxx");
      parmaMap.put("templateid", "xxxxxxxxxxxxxxxxxxxxx");
      parmaMap.put("task_name", "创建任务");
      parmaMap.put("line_type", "1");
      parmaMap.put("telephone", "xxxxxxxx");
      parmaMap.put("robot_num", "1");
      parmaMap.put("time_type", "2");
      parmaMap.put("call_time_slot", "8:00-19:00");
      parmaMap.put("task_status", "0");
      String result = sendPost(addTaskUri, parmaMap);
      return result;
  }

  // 添加任务数据
  public static String addTaskData() {
      // 链接
      String addTaskUri = BASEURI + " add_task_ata";
      // 参数
      Map<String, Object> parmaMap = new HashMap<String, Object>();
      parmaMap.put("appid", "xxxxxxx");
      parmaMap.put("signature", "xxxxxxxxxxxxxxxxxxxxxxxxxx");
      parmaMap.put("taskid", "xxxxxxxxxxxxxxxxxxxxxxxx");
      // 变量信息
      List<Map<String, String>> dataList = new ArrayList<Map<String, String>>();
      Map<String, String> dataMap = new HashMap<String, String>();
      dataMap.put("telephone", "1591083****");
      dataMap.put("outid", String.valueOf(UUID.randomUUID()));
      dataMap.put("variable", "公司^公司名");
      dataList.add(dataMap);
      JSONArray dataJson = JSONArray.fromObject(dataMap);
      parmaMap.put("data", dataJson);
      String result = sendPost(addTaskUri, parmaMap);
      return result;
  }

  public static String sendPost(String url, Map<String, Object> param) {
      StringBuffer buffer = new StringBuffer();
      if (param != null && !param.isEmpty()) {
          for (Map.Entry<String, Object> entry : param.entrySet()) {
              try {
                  if (entry.getValue() != null) {
                      buffer.append(entry.getKey()).append("=")
                              .append(URLEncoder.encode(entry.getValue().toString(), "utf-8")).append("&");
                  }
              } catch (UnsupportedEncodingException e) {
                  e.printStackTrace();
              }
          }
          buffer.deleteCharAt(buffer.length() - 1);
      }
      PrintWriter out = null;
      BufferedReader in = null;
      String result = "";
      try {
          URL realUrl = new URL(url);
          // 打开和URL之间的连接
          URLConnection conn = realUrl.openConnection();
          // 设置通用的请求属性
          conn.setRequestProperty("accept", "*/*");
          conn.setRequestProperty("connection", "Keep-Alive");
          conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
          conn.setConnectTimeout(30000);
          conn.setReadTimeout(30000);
          // 发送POST请求必须设置如下两行
          conn.setDoOutput(true);
          conn.setDoInput(true);
          // 获取URLConnection对象对应的输出流
          out = new PrintWriter(conn.getOutputStream());
          // 发送请求参数
          out.print(buffer);
          // flush输出流的缓冲
          out.flush();
          // 定义BufferedReader输入流来读取URL的响应
          in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
          String line;
          while ((line = in.readLine()) != null) {
              result += line;
          }
      } catch (Exception e) {
          e.printStackTrace();
      }
      // 使用finally块来关闭输出流、输入流
      finally {
          try {
              if (out != null) {
                  out.close();
              }
              if (in != null) {
                  in.close();
              }
          } catch (IOException ex) {
              ex.printStackTrace();
          }
      }
      return result;
  }
  }

# 3、状态编码

# 3.1、操作成功

业务操作成功。

状态编码 状态说明
000000 操作成功(除此编码以外的编码为错误编码)

# 3.2、系统异常

系统服务异常。

错误编码 错误说明
320001 appid或者signature有误
329999 系统未知异常

# 3.3、业务异常

业务异常。

错误编码 错误说明
320011 模板id为空
320012 任务名称为空
320013 机器人数量有误
320014 外显号码为空
320015 有效期类型为空
320016 自定义有效期开始或结束时间为空
320017 拨打时间段为空
320018 data格式错误
320019 任务或者模板有误
320020 任务已经被删除
320021 任务id为空
320022 任务id有误
320023 只有进行中的任务可以暂停操作
320024 只有暂停中的任务可以继续操作
320025 验证邮箱为空
320026 开始时间为空
320027 结束时间为空
320028 文件格式不正确
320029 大于最大上传条数
320030 上传的数据有误
320031 上传文件不存在