语音机器人对接文档

1.创建外呼任务接口

请求方式:POST
请求地址 '/openapi/robot/v1/task/add'
Header
名称类型约束说明
Content-Type application/jsonY内容类型
请求参数
字段名称字段类型是否必传字段描述
task_namestring必选任务名称
bot_idstring必选机器人 id
voicestring必选发音人模板名称 例:艾夏女声发音(注:需要在系统提前配置发音人模板)
disnumber string必选外显号码(注:需要在系统提前配置线路、外显号码组,系统自动根据号码使用相对应的外显配置。)
task_type int可选外呼任务类型,1:流式任务 3:当日任务,缺省:3说明:流式任务:在设置的任务时间范围内一直运行,下发号码即可发起呼叫。当日任务:无需设置任务时间范围,系统自动设置为当天0点开始24点结束;在此期间内下发号码即可发起呼叫。
start_timestring可选外呼任务开始时间,当task_type=1时必选,格式:yyyy-MM-dd HH:mm:ss
end_timestring可选外呼任务结束时间,当task_type=1时必选,格式:yyyy-MM-dd HH:mm:ss
is_recordint可选是否录音 1:不开启 2:开启, 缺省 1
team_urlstring可选话单推送地址
forbid_policylist可选禁呼时间段,缺省:["00:00-08:00","12:00-13:00","20:00-23:59"]
recall_policylist可选重呼策略,例:["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_intervalint可选重呼间隔,缺省 30 分钟
is_ring_asrint可选是否启用asr ring,1:启用 2:禁用,缺省:1
ring_asr_codestring可选ring错误码,缺省:[\"777,781\",\"775,776,787,788,790\",\"778,780,791,793,794,796\",\"773\"]
makecall_timeoutint可选呼叫超时时长,缺省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_backstring可选意向结果回调接口
degree_carry_recordint可选推送意向是否携带话单,1:是 2:否 , 缺省:2
push_modeint可选推送模式,1:话单模式 2:号码模式,缺省:1当degree_carry_record=1时有效话单模式:所有产生话单的通话均进行推送;号码维度:接通号码准实时推送,异常号码到达重呼上限后推送。
tag_call_backstring可选标签结果推送地址
请求示例
{ "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\"]}]" }
响应参数
字段名称字段类型字段描述
codestring状态码 "200" 成功
messagestring状态消息 "200 ok!" 成功
successboolean是否成功 true(成功) false(失败)
dataobject具体数据
+task_idstring外呼任务 id
返回示例
{   "success": true,   "code": "200",   "message": "200 ok!",   "data": { "task_id": "107126618320961536" } }

2.查询号码模板表头接口

请求方式:POST
请求地址: '/openapi/robot/v1/field/list'
Header
名称类型约束说明
Content-Type application/jsonY内容类型
请求参数
字段名称字段类型是否必传字段描述
task_idstring可选外呼任务id
请求示例
{ "task_id": "134614200106471424" }
响应参数
字段名称字段类型字段描述
codestring状态码 "200" 成功
messagestring状态消息 "200 ok!" 成功
successboolean是否成功 true(成功) false(失败)
dataobject具体数据
+title_listlist客户属性字段集合
返回示例
{   "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=--------------------------312175004158215345208775Y内容类型
请求参数
字段名称字段类型是否必传字段描述
task_idstring必选外呼任务 id
call_countint必选批次号码数量
file_suffixstring必选文件类型(支持格式:excel/csv/txt)
disnum_group_idstring可选外显号码组id,注:不为空时外呼将使用该外显号码组进行外呼,为空使用任务设置的外显号码。
call_sn_namestring可选业务名称
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
响应参数
字段名称字段类型字段描述
codestring状态码 "200" 成功
messagestring状态消息 "200 ok!" 成功
successboolean是否成功 true(成功) false(失败)
dataobject具体数据
+call_snstring外呼任务批次 id(每下发一次号码文件产生一个批次 id)
+call_countint该批次有效号码数量(因为号码规则校验,可能少于原始号码数量)
返回示例
{   "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/jsonY内容类型
请求参数
字段名称字段类型是否必传字段描述
task_idstring必选任务 id
task_namestring必选任务名称
call_snstring必选号码批次
call_sn_namestring可选业务名称
bot_idstring必选话术id
bot_namestring必选话术名称
callslist可选号码节点
+call_idstring必选呼叫id
+numstring必选被叫号码
+degree_namestring必选意向度名称
+recall_flagint必选是否重呼 0:首呼 1:重呼
+stateint必选呼叫状态0:成功1:用户拒接2:无法接通3:空号4:关机5:占线6:停机7:无人接听8:欠费9:被拦截10:呼叫失败
+start_timestring可选呼叫开始时间
+answered_timestring可选接听时间
+end_timestring可选通话结束时间
+durationint可选通话时长,单位:秒
+record_urlstring可选录音地址
+roundint可选通话轮次
+hangup_byint可选挂机方式,1:用户挂机 2:AI挂机注:该字段仅在接通状态下有效。
+sms_stateint可选是否发送短信,1:是 2:否
+ext_jsonstring可选扩展信息, json字符串结构
+is_transferint可选是否发生转接,1:是 2:否
+transfer_reasonint可选转接是否成功,1:成功 2:失败
+transfer_sip_causestring可选转接状态码
+transfer_calledstring可选转接号码
+recall_timesint可选重呼次数
+dialogslist可选对话详情
++dialog_typeint可选消息类型:1. 机器人话术 2.用户话术
++dialog_textstring可选消息文本内容
++msg_timestring可选消息时间
++intention_namestring可选命中的意图名称,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": "测试新版意向外呼任务" }
响应参数
字段名称字段类型字段描述
codestring状态码 "200" 成功
messagestring状态消息 "200 ok!" 成功
返回示例
{   "code": "200",   "message": "200 ok!" }

统一返回示例

字段名称字段类型字段描述
codestring状态码 "200" 成功
messagestring状态消息 "200 ok!" 成功
successboolean是否成功 true(成功) false(失败)
dataobject具体数据

5.客户标签结果推送示例

机器人系统呼叫完成后,通过该接口回传标签结果. 支持失败重推3次,间隔5,10,15秒。
请求地址推送地址为创建外呼任务接口传的degree_call_back字段
• Header
名称类型约束说明
Content-Type application/jsonY内容类型,一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码
• Body
名称类型约束说明
task_idstring必选任务 id
task_namestring必选任务名称
call_snstring必选号码批次
call_sn_namestring可选业务名称
numstring必选客户号码
call_idstring必选呼叫id
tag_resultlist必选标签结果
+tag_namestring必选标签名称
+tag_hit_countint必选标签命中次数
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-Typeapplication/jsonY内容类型,一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码
Content-LengthintY描述 HTTP 消息实体的传输长度 the transfer-length of the message-body。
• Body
字段类型约束说明
codeint必选请求状态码,取值 0(成功)
msgstring必选状态描述
22.5 响应示例
HTTP HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Content-Length: 387 {   "code": "200",   "message": "200 ok!" }
2025-02-07