1.创建外呼任务接口
请求方式:POST
请求地址 '/openapi/robot/v1/task/add'
Header
名称 | 类型 | 约束 | 说明 |
Content-Type | application/json | Y | 内容类型 |
请求参数
字段名称 | 字段类型 | 是否必传 | 字段描述 |
task_name | string | 必选 | 任务名称 |
bot_id | string | 必选 | 机器人 id |
voice | string | 必选 | 发音人模板名称 例:艾夏女声发音(注:需要在系统提前配置发音人模板) |
disnumber | string | 必选 | 外显号码(注:需要在系统提前配置线路、外显号码组,系统自动根据号码使用相对应的外显配置。) |
task_type | int | 可选 | 外呼任务类型,1:流式任务 3:当日任务,缺省:3说明:流式任务:在设置的任务时间范围内一直运行,下发号码即可发起呼叫。当日任务:无需设置任务时间范围,系统自动设置为当天0点开始24点结束;在此期间内下发号码即可发起呼叫。 |
start_time | string | 可选 | 外呼任务开始时间,当task_type=1时必选,格式:yyyy-MM-dd HH:mm:ss |
end_time | string | 可选 | 外呼任务结束时间,当task_type=1时必选,格式:yyyy-MM-dd HH:mm:ss |
is_record | int | 可选 | 是否录音 1:不开启 2:开启, 缺省 1 |
team_url | string | 可选 | 话单推送地址 |
forbid_policy | list | 可选 | 禁呼时间段,缺省:["00:00-08:00","12:00-13:00","20:00-23:59"] |
recall_policy | list | 可选 | 重呼策略,例:["777","781","775","776","787","788","790"]说明如下:其他:-1、783、784接通无人回话:786无法接通:600、603、604、606、772拒接:777、781、用户通话中:773用户正忙:182、183、486、789、关机:770停机:701、771空号:774、792、795网络忙:778、780、791、793、794、796无人接听:775、776、787、788、790呼叫转移:181、782呼叫限制:779、785错误请求:400、401用户欠费:402线路服务异常:403、404、405、406、407、408、409、471、474、479、480、484、485、487、488网关异常:500、501、502、503、504、505 |
recall_interval | int | 可选 | 重呼间隔,缺省 30 分钟 |
is_ring_asr | int | 可选 | 是否启用asr ring,1:启用 2:禁用,缺省:1 |
ring_asr_code | string | 可选 | ring错误码,缺省:[\"777,781\",\"775,776,787,788,790\",\"778,780,791,793,794,796\",\"773\"] |
makecall_timeout | int | 可选 | 呼叫超时时长,缺省45s |
call_time_policy | string | 可选 | 呼叫时间,json字符串,示例:[ { "week_day":["周一","周二","周三","周四","周五"], "call_time":["10:00-12:00","14:00-18:00"] }, { "week_day":["周六","周日"], "call_time":["10:00-11:00","14:00-16:00"] } ] |
degree_call_back | string | 可选 | 意向结果回调接口 |
degree_carry_record | int | 可选 | 推送意向是否携带话单,1:是 2:否 , 缺省:2 |
push_mode | int | 可选 | 推送模式,1:话单模式 2:号码模式,缺省:1当degree_carry_record=1时有效话单模式:所有产生话单的通话均进行推送;号码维度:接通号码准实时推送,异常号码到达重呼上限后推送。 |
tag_call_back | string | 可选 | 标签结果推送地址 |
请求示例
{
"task_name": "xxx外呼任务0920",
"is_record": 2,
"bot_id": "102094990155681792",
"voice": "aixia",
"disnumber": "xxx",
"team_url": "http://101.132.237.99:38081/xinyaoai/report",
"forbid_policy": ["00:00-08:00", "12:00-13:00", "20:00-23:59"],
"recall_policy": ["777","781","775","776","787","788","790"],
"recall_interval": 30,
"is_ring_asr":1,
"ring_asr_code":"[\"777,781\",\"775,776,787,788,790\",\"778,780,791,793,794,796\",\"773\"]",
"makecall_timeout":45,
"call_time_policy":"
[{\"week_day\":[\"周一\",\"周二\",\"周三\",\"周四\",\"周五\"],\"call_time\":[\"10:00-12:00\",\"14:00-18:00\"]},{\"week_day\":[\"周六\",\"周日\"],\"call_time\":[\"10:00-11:00\",\"14:00-16:00\"]}]"
}
响应参数
字段名称 | 字段类型 | 字段描述 |
code | string | 状态码 "200" 成功 |
message | string | 状态消息 "200 ok!" 成功 |
success | boolean | 是否成功 true(成功) false(失败) |
data | object | 具体数据 |
+task_id | string | 外呼任务 id |
返回示例
{
"success": true,
"code": "200",
"message": "200 ok!",
"data": {
"task_id": "107126618320961536"
}
}
2.查询号码模板表头接口
请求方式:POST
请求地址: '/openapi/robot/v1/field/list'
Header
名称 | 类型 | 约束 | 说明 |
Content-Type | application/json | Y | 内容类型 |
请求参数
字段名称 | 字段类型 | 是否必传 | 字段描述 |
task_id | string | 可选 | 外呼任务id |
请求示例
{
"task_id": "134614200106471424"
}
响应参数
字段名称 | 字段类型 | 字段描述 |
code | string | 状态码 "200" 成功 |
message | string | 状态消息 "200 ok!" 成功 |
success | boolean | 是否成功 true(成功) false(失败) |
data | object | 具体数据 |
+title_list | list | 客户属性字段集合 |
返回示例
{
"success": true,
"code": "200",
"message": "200 ok!",
"data": {
"title_list": [
"客户号码",
"公司名称",
"企业简介",
"姓名",
"尊贵客户",
"性别",
"随路数据",
"客户等级",
"省份",
"城市",
"运营商类型",
"邮箱",
"街道地址",
"是否内部员工"
]
}
}
3.下发号码接口
请求方式:POST
请求地址 '/openapi/robot/v1/task/number/import'
Header
名称 | 类型 | 约束 | 说明 |
Content-Type | Content-Type: multipart/form-data; boundary=--------------------------312175004158215345208775 | Y | 内容类型 |
请求参数
字段名称 | 字段类型 | 是否必传 | 字段描述 |
task_id | string | 必选 | 外呼任务 id |
call_count | int | 必选 | 批次号码数量 |
file_suffix | string | 必选 | 文件类型(支持格式:excel/csv/txt) |
disnum_group_id | string | 可选 | 外显号码组id,注:不为空时外呼将使用该外显号码组进行外呼,为空使用任务设置的外显号码。 |
call_sn_name | string | 可选 | 业务名称 |
filter_policy | string | 可选 | 号码过滤策略,json字符串结构示例:"filter_policy":"[{\"filter_type\":1},{\"filter_type\":2,\"filter_data_list\":[\"北京\",\"河北\",\"山东\"]}]"filter_type: 过滤策略类型 1:黑名单过滤 2:省份过滤 3:城市过滤 4:运营商过滤filter_data_list: 过滤数据,当filter_type=2、3、4时必选filter_type=2 示例:["河北","北京","山东"]filter_type=3 示例:["北京","廊坊","唐山","石家庄"]filter_type=4 示例:["中国移动","中国联通","中国电信","电信虚拟运营商","联通虚拟运营商","移动虚拟运营商","中国广电","广电虚拟运营商"] |
file | []byte | 必选 | 号码文件 |
注意:Body 发送的是号码文件流。一次下发号码文件最大支持 15w。文件第一行必须是表头(表头采用半角英文字母),第一列必须是号码。其他列依次作为该号码的相关属性,比如:姓名,性别等。如果是 excel 格式,版本必须是 2007 及以上版本。表头字段为动态获取,通过查询号码模板表头接口获取。 |
请求示例
Accept: */*
Accept-Encoding: gzip, deflate, br
Content-Length: 99156
Connection: keep-alive
Content-Type: multipart/form-data; boundary=--------------------------312175004158215345208775
Content-Disposition: form-data; name="file"; filename="号码名单.xlsx"; filename*=UTF-8''号码名单.xlsx
--------------------------312175004158215345208775app_id:200000000--------------------------312175004158215345208775
--------------------------312175004158215345208775task_id:5682792453123984--------------------------312175004158215345208775
--------------------------312175004158215345208775call_count:50000--------------------------312175004158215345208775
--------------------------312175004158215345208775filter_policy:[{"filter_type":1},{"filter_type":2,"filter_data_list":["北京","山东"]},{"filter_type":4,"filter_data_list":["中国移动"]}]--------------------------312175004158215345208775
--------------------------312175004158215345208775file:***--------------------------312175004158215345208775
响应参数
字段名称 | 字段类型 | 字段描述 |
code | string | 状态码 "200" 成功 |
message | string | 状态消息 "200 ok!" 成功 |
success | boolean | 是否成功 true(成功) false(失败) |
data | object | 具体数据 |
+call_sn | string | 外呼任务批次 id(每下发一次号码文件产生一个批次 id) |
+call_count | int | 该批次有效号码数量(因为号码规则校验,可能少于原始号码数量) |
返回示例
{
"success": true,
"code": "200",
"message": "200 ok!",
"data": {
"call_sn": "5682792453545984",
"call_count": 58980
}
}
4.话单意向推送示例
机器人系统呼叫完成后,通过该接口准实时回传号码状态及意向结果.
支持失败重推3次,间隔5,10,15秒。
请求地址推送地址为创建外呼任务接口传的degree_call_back字段
Header
名称 | 类型 | 约束 | 说明 |
Content-Type | application/json | Y | 内容类型 |
请求参数
字段名称 | 字段类型 | 是否必传 | 字段描述 |
task_id | string | 必选 | 任务 id |
task_name | string | 必选 | 任务名称 |
call_sn | string | 必选 | 号码批次 |
call_sn_name | string | 可选 | 业务名称 |
bot_id | string | 必选 | 话术id |
bot_name | string | 必选 | 话术名称 |
calls | list | 可选 | 号码节点 |
+call_id | string | 必选 | 呼叫id |
+num | string | 必选 | 被叫号码 |
+degree_name | string | 必选 | 意向度名称 |
+recall_flag | int | 必选 | 是否重呼 0:首呼 1:重呼 |
+state | int | 必选 | 呼叫状态0:成功1:用户拒接2:无法接通3:空号4:关机5:占线6:停机7:无人接听8:欠费9:被拦截10:呼叫失败 |
+start_time | string | 可选 | 呼叫开始时间 |
+answered_time | string | 可选 | 接听时间 |
+end_time | string | 可选 | 通话结束时间 |
+duration | int | 可选 | 通话时长,单位:秒 |
+record_url | string | 可选 | 录音地址 |
+round | int | 可选 | 通话轮次 |
+hangup_by | int | 可选 | 挂机方式,1:用户挂机 2:AI挂机注:该字段仅在接通状态下有效。 |
+sms_state | int | 可选 | 是否发送短信,1:是 2:否 |
+ext_json | string | 可选 | 扩展信息, json字符串结构 |
+is_transfer | int | 可选 | 是否发生转接,1:是 2:否 |
+transfer_reason | int | 可选 | 转接是否成功,1:成功 2:失败 |
+transfer_sip_cause | string | 可选 | 转接状态码 |
+transfer_called | string | 可选 | 转接号码 |
+recall_times | int | 可选 | 重呼次数 |
+dialogs | list | 可选 | 对话详情 |
++dialog_type | int | 可选 | 消息类型:1. 机器人话术 2.用户话术 |
++dialog_text | string | 可选 | 消息文本内容 |
++msg_time | string | 可选 | 消息时间 |
++intention_name | string | 可选 | 命中的意图名称,type =2 时必选 |
请求示例
{
"bot_id": "134614200106471424",
"bot_name": "",
"call_sn": "177356849321648128",
"call_sn_name": "外呼号码模板自己123",
"calls": [{
"num": "18533765401",
"state": 1,
"state_desc": "200",
"start_time": "2024-04-03T09:53:10+08:00",
"end_time": "2024-04-03T09:53:34+08:00",
"duration": 16,
"record_url": "/coeus/82001/200000000/174212519459778560/202404030953/82b18191-c3d2-43e9-98d2-3d356b2220d8.mp3",
"round": 2,
"call_id": "82b18191-c3d2-43e9-98d2-3d356b2220d8",
"answered_time": "2024-04-03T09:53:18+08:00",
"hangup_by": 1,
"ext_json":"{\"businessScene\":\"还呗测试\",\"card_type\":\"中国移动\",\"city\":\"北京\",\"name\":\"ml\",\"number\":\"\",\"phone\":\"15011097245\",\"province\":\"北京\",\"putId\":\"123abc\"}",
"dialogs": [{
"dialog_type": 1,
"dialog_text": "\u003cspeak\u003e\u003cphoneme alphabet=\"py\" ph=\"wei2\"\u003e喂\u003c/phoneme\u003e,您好\u003cbreak time=\"500ms\"/\u003e您好,马先生, 我是xx的客户经理,咱们xx给您预审通过了一笔最高20万的可借额度,来电是想邀请您登录xx APP补充下资料就能领取额度了。\u003c/speak\u003e",
"msg_time": "2024-01-12T17:42:52+08:00",
"intention_name": ""
}, {
"dialog_type": 2,
"dialog_text": "好的好的",
"msg_time": "2024-01-12T17:42:52+08:00",
"intention_name": "yes"
}, {
"dialog_type": 1,
"dialog_text": "好的,咱们电话邀请的用户,今天之内补充资料的话,是自动审批 免人工审核的。您稍后抓紧时间补充资料领取下额度,好吧?",
"msg_time": "2024-01-12T17:42:52+08:00",
"intention_name": ""
}, {
"dialog_type": 2,
"dialog_text": "好的",
"msg_time": "2024-01-12T17:42:52+08:00",
"intention_name": "yes"
}, {
"dialog_type": 1,
"dialog_text": "嗯,好,短信稍后就发您,仅限于您本人申请哈,您尽快操作,如果5分钟都没有收到短信,可以到拦截箱进行查看,也可以打开xxAPP申请,就先不打扰您了,祝您生活愉快,再见。",
"msg_time": "",
"intention_name": ""
}]
}],
"task_id": "174212519459778560",
"task_name": "测试新版意向外呼任务"
}
响应参数
字段名称 | 字段类型 | 字段描述 |
code | string | 状态码 "200" 成功 |
message | string | 状态消息 "200 ok!" 成功 |
返回示例
{
"code": "200",
"message": "200 ok!"
}
统一返回示例
字段名称 | 字段类型 | 字段描述 |
code | string | 状态码 "200" 成功 |
message | string | 状态消息 "200 ok!" 成功 |
success | boolean | 是否成功 true(成功) false(失败) |
data | object | 具体数据 |
5.客户标签结果推送示例
机器人系统呼叫完成后,通过该接口回传标签结果.
支持失败重推3次,间隔5,10,15秒。
请求地址推送地址为创建外呼任务接口传的degree_call_back字段
• Header
名称 | 类型 | 约束 | 说明 | |
Content-Type | application/json | Y | 内容类型,一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码 |
• Body
名称 | 类型 | 约束 | 说明 |
task_id | string | 必选 | 任务 id |
task_name | string | 必选 | 任务名称 |
call_sn | string | 必选 | 号码批次 |
call_sn_name | string | 可选 | 业务名称 |
num | string | 必选 | 客户号码 |
call_id | string | 必选 | 呼叫id |
tag_result | list | 必选 | 标签结果 |
+tag_name | string | 必选 | 标签名称 |
+tag_hit_count | int | 必选 | 标签命中次数 |
22.3 请求示例
HTTP
POST {callbackurl} HTTP/1.1
{
"task_id": "174212519459778560",
"task_name": "测试任务",
"call_sn": "177356849321648128",
"call_sn_name": "外呼号码模板",
"num": "18533765401",
"call_id":"",
"tag_result":[
{
"tag_name":"客户有意向标签",
"tag_hit_count":1
}
]
}
22.4 响应参数
• Header
名称 | 类型 | 约束 | 说明 |
Content-Type | application/json | Y | 内容类型,一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码 |
Content-Length | int | Y | 描述 HTTP 消息实体的传输长度 the transfer-length of the message-body。 |
• Body
字段 | 类型 | 约束 | 说明 |
code | int | 必选 | 请求状态码,取值 0(成功) |
msg | string | 必选 | 状态描述 |
22.5 响应示例
HTTP
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 387
{
"code": "200",
"message": "200 ok!"
}