# 智能外呼V1
# 1、接口声明
业务流程图:
# 2、接口调用
# 2.1、校验账号
接口说明:
接口类型:主动调用接口
接口作用:校验登录账号是否与appid符合。
请求方式:
GET
请求地址:
https://icall.sobot.com/api/icall/5/task/check_login_name
请求参数:
参数 | 类型 | 必填 | 名称 | 备注 |
---|---|---|---|---|
appid | 字符串 | 是 | 智齿分配 | |
signature | 字符串 | 是 | 智齿分配 | |
字符串 | 是 | 登录邮箱账号 |
返回参数:
参数 | 类型 | 必填 | 名称 | 备注 |
---|---|---|---|---|
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 | 字符串 | 是 | 模板名称 |
content | 字符串 | 否 | 首节点话术 |
record | 字符串 | 否 | 首节点录音地址或tts语音,多个以英文逗号隔开。 |
请求示例:
https://icall.sobot.com/api/icall/5/task/query_template?appid=XXXXXX&signature=XXXXXX
返回示例:
{
"data": [
{
"template_name": "内容输出测试",
"record": "http://sobot-test.oss-cn-beijing.aliyuncs.com/call/ai/TTS/4401f750a3eef4c41805df1341218166.mp3",
"templateid": "6a9b98410bd44470ae4660275c14792f",
"content": "你好,请问您要卖车吗?"
},
{
"template_name": "测试0312",
"record": "http://sobot-test.oss-cn-beijing.aliyuncs.com/call/ai/TTS/1031cfafda3f770ac4a7b51e5f164981.mp3",
"templateid": "1bf61b127bbd4921b482eb35fde5d215",
"content": "你好"
},
{
"template_name": "接口调用",
"record": "",
"templateid": "6a6d592bf37e4898bcfafd1cb4384f29",
"content": ""
},
{
"template_name": "测试11",
"record": "http://sobot.oss-cn-beijing.aliyuncs.com/icall/voice/7201f49f125d47e79d5bdd1421b14c25/f1bafa17e5e1492ba1de859a8abba66e.wav,http://sobot.oss-cn-beijing.aliyuncs.com/icall/voice/7201f49f125d47e79d5bdd1421b14c25/0d6e655090ad4f8993eebb6b1ab79dd5.wav",
"templateid": "43016bcbf54740b78672788ba2aab59a",
"content": "开场白"
}
],
"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:固话 |
telephone | 字符串 | 是 | 外显号码,多个用","分隔 |
start_time | 时间戳 | 否 | 自定义有效期开始时间,13位 |
end_time | 时间戳 | 否 | 自定义有效期结束时间,13位 |
robot_num | 整型 | 是 | 机器人数 |
time_type | 整型 | 是 | 有效期 1:自定义 ;2:永久 |
call_time_slot | 字符串 | 是 | 拨打时间段,示例:10:00-19:00,多个时间段以英文逗号隔开例如:09:00-20:00,21:00-22: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:固话
"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/editor_task
请求参数:
参数 | 类型 | 必填 | 名称 | 备注 |
---|---|---|---|---|
appid | 字符串 | 是 | 智齿分配 | |
signature | 字符串 | 是 | 智齿分配 | |
taskid | 字符串 | 是 | 任务id | |
task_name | 字符串 | 否 | 任务名称 | |
telephone | 字符串 | 否 | 外显号码,多个用","分隔 | |
start_time | 时间戳 | 否 | 自定义有效期开始时间,13位 | |
end_time | 时间戳 | 否 | 自定义有效期结束时间,13位 | |
robot_num | 整型 | 否 | 机器人数 | |
time_type | 整型 | 否 | 有效期 1:自定义 ;2:永久 | |
call_time_slot | 字符串 | 否 | 拨打时间段,示例:10:00-19:00,多个时间段以英文逗号隔开例如:09:00-20:00,21:00-22:00 |
返回参数:
参数 | 类型 | 必填 | 名称 | 备注 |
---|---|---|---|---|
ret_code | 字符串 | 是 | 执行结果码 | |
ret_msg | 字符串 | 是 | 返回信息 |
请求示例:
{
"appid":"xxxxxxxxxx", //智齿提供的appid
"signature": "xxxxxxxxxxxxx", //智齿提供的signature
"taskid":"任务id", //本次任务得id
"task_name": "任务名称", //本次任务的名称
"telephone":"telephone" //本次任务拨打时需要显示的外显号码(需提前配置外显号)
"robot_num": "机器人数目", //本次任务拨打时机器人的数目(需提前配置)
"time_type":"有效期" //本次任务的有效期1:自定义 ;2:永久
"start_time": "13位时间戳", //本次任务有效期为自定义时的开始时间
"end_time":"13位时间戳", // 本次任务有效期为自定义时的结束时间
"call_time_slot": "拨打时间段", //本次任务将在此时间段进行拨打
"
}
返回示例:
{
"ret_code": "000000",
"ret_msg": "编辑任务成功"
}
# 2.12、暂停任务
接口说明:
接口类型:主动调用接口
接口作用:对进行中、拨打时间段外、排队中的任务进行暂停。
请求方式:
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.13、继续任务
接口说明:
接口类型:主动调用接口
接口作用:对暂停中的任务继续执行
请求方式:
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.14、完结任务
接口说明:
接口类型:主动调用接口
接口作用:完结终止任务
请求方式:
GET
请求地址:
https://icall.sobot.com/api/icall/5/task/end_task
请求参数:
参数 | 类型 | 必填 | 名称 |
---|---|---|---|
appid | 字符串 | 是 | 智齿分配 |
signature | 字符串 | 是 | 智齿分配 |
taskid | 字符串 | 是 | 任务id |
返回参数:
参数 | 类型 | 必填 | 名称 |
---|---|---|---|
ret_code | 字符串 | 是 | 执行结果码 |
ret_msg | 字符串 | 是 | 返回信息 |
请求示例:
/api/icall/5/task/end_task?appid=XXXXXX&signature=XXXXXX& taskid =XXXXXX
返回示例:
{
"ret_code": "000000",
"ret_msg": "完结成功"
}
# 2.15、查看任务详情
接口说明:
接口类型:主动调用接口
接口作用:查询智能外呼系统中某个任务详情,支持多个任务查询。
请求方式:
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.16、删除任务
接口说明:
接口类型:主动调用接口
接口作用:删除智能外呼系统中某个任务。
请求方式:
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.17、删除拨打数据
接口说明:
接口类型:主动调用接口
接口作用:删除智能外呼系统中某个任务中的拨打数据。
请求方式:
POST
请求地址:
/api/icall/5/task/delete_task_data
请求参数:
参数 | 类型 | 必填 | 名称 | 备注 |
---|---|---|---|---|
appid | 字符串 | 是 | 智齿分配 | |
signature | 字符串 | 是 | 智齿分配 | |
taskid | 字符串 | 是 | 任务id | |
outid | 字符串 | 是 | 数据id,多个用英文逗号隔开,单次最多100条,如有重复一并删除 |
返回参数:
参数 | 类型 | 必填 | 名称 | 备注 |
---|---|---|---|---|
ret_code | 字符串 | 是 | 执行结果码 | |
ret_msg | 字符串 | 是 | 返回信息 | |
del_counts | 整型 | 是 | 删除条数 |
请求示例:
{
"appid": "xxxxxxxxxx", //智齿提供的appid
"signature": "xxxxxxxxxxxxx", //智齿提供的signature
"taskid": "xxxxxxxxxxxxx", //任务id
"outid": "xxxxxxxx,xxxxxxxx" //任务id
}
返回示例:
{
"ret_msg": "删除成功",
"ret_code": "000000",
"del_counts": 2
}
# 2.18、查询时间段内拨打量
接口说明:
接口类型:主动调用接口
接口作用:获取指定时间段内指定任务的外呼已完成数据总数。
请求方式:
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.19、获取指定时间段内外呼数据详情
接口说明:
接口类型:主动调用接口
接口作用:获取指定时间段内外呼数据详情。
请求方式:
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.20、开放接口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 | 上传文件不存在 |
320032 | outid为空 |
320033 | outid数量超出限制 |