介绍
百应机器人API文档
这是百应机器人API文档,具体详情查看每个API接口调用说明;
如果有问题,欢迎联系我们客服,技术支持
公司官网地址 :www.byai.com/
开发引导
调用说明
调用方式说明:
第一种方式:主动调用 这种调用方式是客户主动调用接口获取数据或实现功能; 主动调用需要传入APP_KEY和APP_SECRET用于权限校验; 注意:APP_KEY和APP_SECRET 的获取请参考 “AppKey和回调地址” 章节的说明。 第二种方式:方法回调 这种调用方式是当达到预设条件如:任务状态变更或通话结束时,由百应主动向指定地址发送信息;
注意:回调地址配置请参考 “AppKey和回调地址” 章节的说明
百应机器人API是使用HTTP并遵循REST风格设计的Web服务接口;
您可以使用几乎任何客户端和任何编程语言与REST API进行交互。
通过发送简单的HTTP请求就可以轻松接入使用。
认证
认证密钥样例
APP_KEY = "WtSMaXXXXXXXXtvy";
APP_SECRET = "aXSFnnZbHXXXXXXXXXXXXXXXMguz1Q";
API认证采用HMACSha1加密算法进行加密,使用GMT时间戳、APP_KEY、APP_SECRET共同生成一个密钥。
目前已有完整JAVA版的demo,具体实现请下载DEMO查阅。 Python版demo目前包含签名算法和获取公司列表接口demo可供查阅。 Php版demo目前包含签名算法和get,post请求样例可供查阅。
请在API样例
byrobot-openapi-demo
中替换为自己的APP_Key和APP_SECRET.
百应为确保您的账户和信息安全,请在开发对接程序前联系百应技术支持注册接口调用专属密钥。
统一请求格式
URL格式:
/{resource}/{function}
说明:
{resource}为资源名,通常对应一类API
{function}为该资源提供的操作方法
请求响应的结果为json格式
比如查询公司列表的url为:
<code>http://openapi/v1/company </code> 表示调用company(公司列表)的get方法,并且返回json格式的字符串。
我们目前已经提供的接口,请参考API。
HTTP头信息:
Accept:application/json;charset=utf-8
说明:
请求方式(Method):统一用POST方式 编码:UTF-8
AppKey和回调地址
DEMO 下载
本页面提供Java,Python,Php的Demo下载。
SDK包内有部分使用说明,各接口的详细使用说明请浏览各API详情页。
如百应未提供您使用语言的SDK,您可以根据API文档开发接口
语言 | GitHub地址 |
---|---|
JAVA | [GitHub地址] |
Python | [GitHub地址] |
PHP | [GitHub地址] |
最佳实践流程图:
常见问题解答
Q:定时任务和手动任务的异同
A:
异:
定时任务在设定好启动时间和结束时间时会在到达指定时间时自动启动 手动任务则需要导入客户之后手动启动任务
同:
任务到达12-14点或指定暂停时间会自动暂停,并且会占用AI并发量Q:isv账号能否操作多个crm账号下的任务
A: 一个appKey和appSecret可以通过api接口操作多个crm账号,获取公司信息和任务信息,需要提供您的子公司的公司名 给百应的api负责同学,百应这边为您绑定之后就可以通过openApi操作子公司下的任务了Q:不同任务可用相同主叫号码吗?
A: 可以Q:若剩余可用的AI坐席为0,那么是不可以创建任务?
A: 可以创建,但是任务会排队Q:不同的任务是根据AI坐席情况,同时进行执行任务还是根据任务先后进行执行任务?
A: 多个坐席会同时执行一个任务,其他任务会进行排队执行。Q:暂停任务后,会释放主叫号码和AI坐席吗?
A: 会Q:不同的任务可以用相同的主叫号码吗?
A: 可以
流程说明
第一部分:
主要是获取公司相关信息,为创建任务提供数据。
这里一共三个接口分别查询到:
1.公司Id
2.公司的主叫电话号码列表
3.机器人话术相关参数:
1)机器人Id(话术机器人Id)
2) 场景Id(话术场景Id)
3) 录音Id(话术场景录音Id)
第二部分:
核心业务部分,主要是任务的创建,启动,停止等操作。
1.创建任务
创建任务过程中需要传入的几个重要的值:场景id,录音id,机器人id,这三个值不能传入有误,传入出错会导致任务拨打有误
2.任务启动和暂停
任务创建完成之后,调用启动任务接口就可以启动任务,任务在启动时,可调用暂停任务让任务进入暂停状态(可再次运行)
3.停止任务
在任务进行中,每一次通话结束都会调用通话回调接口,将本次通话详情发送到指定回调地址。
第三部分:
任务运行结束,调用任务回调接口,将本次任务信息发送到指定回调地址。
第四部分:
主要是查询任务相关信息。
枚举类型说明
主叫号码(线路)类型枚举
code | desc |
---|---|
0 | 手机号 |
1 | 固话 |
2 | 无主叫线路 |
任务类型枚举
code | desc |
---|---|
1 | 定时启动任务 |
2 | 手动启动任务 |
任务状态枚举
code | desc |
---|---|
0 | 未开始 |
1 | 进行中 |
2 | 已完成 |
3 | 可运行(任务启动过程的中间状态) |
4 | 用户暂停 |
5 | 系统暂停(当“欠费、任务配置重拨没到拨打时间、线路或坐席不可用”时会出现这个状态) |
6 | 已终止 |
7 | 排队中(AI坐席资源不够时进入排队,直到资源释放) |
8 | AI到期(购买的saas服务到期) |
9 | 线路欠费(即用户账户余额不足时) |
10 | 短信欠费(短信余额不足,跟账户余额分开的) |
通话实例状态枚举
code | desc |
---|---|
0 | 未开始 |
1 | 进行中 |
2 | 已完成 |
已完成通话状态枚举(finishStatus,通话完成最终状态)
code | desc |
---|---|
0 | 已接听 |
1 | 拒接 |
2 | 无法接通 |
3 | 主叫号码不可用 |
4 | 空号 |
5 | 关机 |
6 | 占线 |
7 | 停机 |
8 | 未接 |
9 | 主叫欠费 |
10 | 呼损 |
11 | 黑名单 |
22 | 线路盲区 |
ResultModel对象模型
字段 | 描述 |
---|---|
code | 接口响应码, 200表示成功,更多响应码见以下“错误码信息” |
data | API调用返回结果(若调用失败,则为null) |
resultMsg | 响应信息提示 |
errorStackTrace | 错误调试跟踪信息,仅内部使用 |
requestId | 请求链路跟踪id,仅内部使用 |
错误码信息
错误码 | 错误信息 |
---|---|
200 | 执行成功 |
401 | 校验数据错误 |
404 | 资源未找到 |
403 | 权限不足 |
412 | 参数错误 |
500 | 未知错误 |
最近更新日志
2018年7月23日
- 修改任务AI坐席数(任务并发数)
更新说明:
7月 - 新增接口如下: 1. 开放对外呼任务的AI坐席数(任务并发数)进行修改的接口支持,可更新任务状态为非进行中任务的AI坐席数(任务并发数) 2. 开放单次电话外呼接口,可以通过该接口进行单次的电话外呼 - 接口改动如下: 1. 获取已经完成任务电话号码接口查询每页不能超过50条
7月28日 - 新增接口如下: 1. 开放通过客户手机号直接进行电话外呼的接口
2018年11月
11月 - 新增信息获取接口: 1.获取获取任务未开始的电话列表 - 接口改动 1.回调接口增加客户标签数据
2018年12月13日
- 增加任务修改接口的修改返回
2018年12月28日
- 手动修改客户意向等级回调接口。说明:针对用户在crm账号下进行客户意向等级修改后进行回调,及时同步客户意向等级信息
2019-01-07
- 通话记录回调参数补全
2019-02-19
- 新增单个黑名单用户导入到默认分组接口
2019-02-19
- 获取公司话术的接口增加条件获取已发布的话术
- 导入任务数据的时候检查用户属性和话术变量的匹配,并返回成功条数,失败条数
- 新增呼入回调文档接口
2019-03-20
- 新增回调失败查询接口
- 新增任务导入客户号码接口v2版
2019-04-02
- 新增话术变量查询接口
2019-05-09
- 扩大任务查询接口范围
2019年6月27日
- 修复文档错误和不一致的地方
2019年8月15日
- 新增公司黑名单操作接口
公司信息接口
获取绑定公司列表接口
功能说明:
通过此接口可以获取用户isv下绑定所有的公司信息
返回对象示例:
{
"code": 200,
"data": [
{
"companyName": "百应1",
"companyId": 3813
},
{
"companyName": "百应2",
"companyId": 2333
}
],
"resultMsg": "获取成功",
"errorStackTrace": null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/company/getCompanys
请求方法:
GET
请求参数:
无
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码,详见“ResultModel对象模型”https://api.byrobot.cn/doc/v2/#6af18eb20f |
data | list(String) | 返回结果,详见“ResultModel对象模型” |
companyName | String | 公司名称 |
companyId | int | 公司Id |
resultMsg | String | 响应提示,详见“ResultModel响应对象模型” |
errorStackTrace | String | 详见“ResultModel响应对象模型” |
获取公司的短信模版
功能说明:
通过接口可以获取指定公司的短信模版
返回对象示例:
{
"data":{
"pageNum":1,
"pageSize":20,
"size":20,
"orderBy":null,
"startRow":0,
"endRow":19,
"total":51,
"pages":3,
"list":[
{
"smsTemplateId":1,
"companyId":1,
"name":"测试- 22",
"smsTemplateSignId":2004,
"type":1,
"content":"【浙江百应】亲爱的用户,您的包裹已经顺利清关",
"status":2,
"failReason":"百应人工审核通过",
"smsTemplateSignName":"浙江百应",
"gmtCreate":"2019-07-22 11:27:00",
"gmtModified":"2019-07-23 15:11:47"
},
{
"smsTemplateId":2,
"companyId":2,
"name":"测试",
"smsTemplateSignId":2087,
"type":4,
"content":"测试模版",
"status":2,
"failReason":"百应人工审核通过",
"smsTemplateSignName":"测试",
"gmtCreate":"2019-07-23 10:37:04",
"gmtModified":"2019-07-23 10:37:23"
}
]
},
"code":200,
"msg":"查询成功",
"success":true
}
请求:
URL:http://api.byrobot.cn/openapi/v1/sms/template/list
请求方法:
GET
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司Id | 1 |
status | int | 否 | 审核状态:1-审核中, 2-审核通过, 3-审核未通过,不传表示查询所有 | 1 |
pageNum | int | 是 | 页数 | 1 |
pageSize | int | 是 | 每页大小 | 5 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码,详见“ResultModel对象模型”,https://api.byrobot.cn/doc/v2/#6af18eb20f |
data | list(String) | 返回结果, 详见“ResultModel对象模型” |
smsTemplateId | int | 短信模版id |
companyId | int | 公司id |
name | String | 短信模版名称 |
smsTemplateSignId | int | 模板签名id |
type | int | 短信类型:1-通知类, 2-营销类, 3-验证码, 4-金融类 |
content | String | 短信模板内容 |
status | int | 审核状态:1-审核中, 2-审核通过, 3-审核不通过 |
failReason | String | 审核结果备注 |
smsTemplateSignName | String | 模板签名名称 |
gmtCreate | Date | 创建时间 |
gmtModified | Date | 修改时间 |
resultMsg | String | 错误信息,详见“ResultModel响应对象模型”说明 |
errorStackTrace | String | 跟踪信息,详见“ResultModel响应对象模型”说明 |
获取公司的主叫电话列表接口
功能说明:
通过接口可以获取指定公司的所有线路的列表 注意:
- 主叫号码列表的PhoneType字段标识外呼线路类型--需要对应新建任务接口的callType字段
- 文档中给出的是常用枚举类型,若特殊用户自用时出现其他枚举类型,只需要遵循注意点即可
- 不需要对不同主叫类型区分业务使用的情况下,建议对新建任务的callType做成根据主叫id对应的phoneType动态传入,不要写死字段值
返回对象示例:
{
"code": 200,
"data": [{
"userPhoneId": 0,
"callerAccountId": null,
"phone": "1400xxxxxxx",
"account": null,
"phoneName": "xxxxx",
"phoneType": 2,
"available": true,
"useAvailable": true,
"totalConcurrencyQuota": 5,
"usedConcurrencyQuota": 0,
"billPeriod": 60,
"validityBegin": "2018-07-24 00:00:00",
"validityEnd": "2019-07-27 00:00:00",
"sceneType": null,
}, {
"userPhoneId": 2,
"callerAccountId": null,
"phone": "150xxxxxxxx",
"account": null,
"phoneName": "2",
"phoneType": 2,
"available": true,
"useAvailable": true,
"totalConcurrencyQuota": 5,
"usedConcurrencyQuota": 0,
"billPeriod": 60,
"validityBegin": "2018-07-24 00:00:00",
"validityEnd": "2019-07-27 00:00:00",
"sceneType": null,
}],
"resultMsg": "获取成功",
"errorStackTrace": null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/company/getPhones
请求方法:
GET
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司Id | 3811 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
userPhoneId | int | 主叫号码Id |
phone | String | 主叫号码 |
phoneName | String | 主叫号码名称 |
phoneType | int | 主叫号码类型,0:手机号;1:固话;2:无主叫线路 |
available | Boolean | 无效字段,可忽略 |
useAvailable | Boolean | 主叫号码是否可用,true可用,false不可用 |
totalConcurrencyQuota | int | null表示总并发无限制,phoneType为手机号时有总并发限制,其他无限制 |
usedConcurrencyQuota | int | 已经使用并发数 |
billPeriod | int | 计费周期 |
validityBegin | Date | 可用开始时间 |
validityEnd | Date | 可用结束时间 |
sceneType | int | 应用场景 1:呼入,2:呼出,3:呼入呼出 |
resultMsg | String | 提示信息,详见“ResultModel对象模型”,https://api.byrobot.cn/doc/v2/#6af18eb20f |
errorStackTrace | String | 跟踪信息,详见“ResultModel对象模型” |
获取公司的机器人话术列表接口
功能说明:
通过接口可以获取指定公司的所有配置完成上线状态的机器人话术 注意:
- 本接口可获取 robotDefId:机器人id 等字段,在调用创建任务接口时会使用到
返回对象示例:
{
"code": 200,
"data": [{
"robotDefId": 14,
"robotName": "测试话术1",
"sceneDefId": 34,
"sceneRecords": [{
"sceneRecordId": 34,
"sceneRecordName": "测试场景录音"
}],
"industryOneName": "房产类",
"industryTwoName": "高端住宅",
"gmtModify": "2018-11-09 10:09:32"
}, {
"robotDefId": 38375,
"robotName": "测试话术2",
"sceneDefId": 38387,
"sceneRecords": [{
"sceneRecordId": 38383,
"sceneRecordName": "测试录音"
}],
"industryOneName": "房产类",
"industryTwoName": "装修",
"gmtModify": "2018-11-29 09:06:43"
}],
"resultMsg": "获取成功",
"errorStackTrace": null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/company/getRobots
请求方法:
GET
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司Id | 3811 |
robotStatus | int | 否 | 0:所有话术,1:已上线话术,2:查询发布过的话术(包括已上线和上线后重新修改的话术),默认0 | 1 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码,详见“ResultModel对象模型”,https://api.byrobot.cn/doc/v2/#6af18eb20f |
data | list(String) | 返回结果, 详见“ResultModel对象模型” |
robotDefId | int | 机器人Id,创建任务时会用到该ID |
robotName | String | 机器人名称 |
sceneDefId | int | 场景Id |
sceneRecordId | int | 场景录音id |
sceneRecordName | String | 录音名称 |
industryOneName | String | 一级行业名 |
industryTwoName | String | 二级行业名 |
gmtModify | Date | 修改时间 |
resultMsg | String | 错误信息,详见“ResultModel响应对象模型”说明 |
errorStackTrace | String | 跟踪信息,详见“ResultModel响应对象模型”说明 |
获取公司AI坐席概况接口
功能说明:
通过接口可以获取公司所有的坐席以及已经使用的坐席数量。
返回对象示例:
{
"code":200,
"data":
{
"companyAllCallSeat":2,
"companyUsingCallSeat":0
},
"resultMsg":"查询成功",
"errorStackTrace":null,
"requestId":null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/company/seat/statistics
请求方式:
GET
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司id | 1 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码 |
data | Object | 返回结果, 详见“ResultModel响应对象模型”说明 |
companyAllCallSeat | int | 表示公司所有坐席数量 |
companyUsingCallSeat | int | 全公司已使用坐席数量 |
resultMsg | String | 响应信息,详见“ResultModel响应对象模型”说明 |
errorStackTrace | String | 跟踪信息,详见“ResultModel响应对象模型”说明 |
requestId | String | 跟踪信息id,详见“ResultModel响应对象模型”说明 |
添加单个黑名单到公司默认黑名单组接口
功能说明:
通过接口可以导入单个黑名单信息到默认分组中
返回对象示例:
{
"code": 200,
"data": 3221,//黑名单id
"resultMsg": "获取成功",
"errorStackTrace": null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/company/addBlackList
请求方式:
POST
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
name | string | 否 | 客户姓名 | 测试用户 |
mobile | string | 是 | 手机号 | 159xxxxxxxx |
remark | string | 否 | 备注 | 备注信息 |
companyId | int | 是 | 公司Id | 3811 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码,详见“ResultModel响应模型”,https://api.byrobot.cn/doc/v2/#6af18eb20f |
data | int | 黑名单id |
resultMsg | String | 响应信息,详见“ResultModel对模型” |
errorStackTrace | String | 跟踪信息,详见“ResultModel对象模型” |
##查询公司的黑名单分组列表接口
###功能说明:
通过接口可以查询公司的黑名单分组列表
返回对象示例:
{
"code":200,
"data":[
{
"blacklistInfoGroupId":-1,
"name":"默认分组",
"publicFlag":true,
"remark":""
},
{
"blacklistInfoGroupId":357,
"name":"黑名单1",
"publicFlag":false,
"remark":"test"
},
{
"blacklistInfoGroupId":356,
"name":"黑名单2",
"publicFlag":false,
"remark":"test"
},
{
"blacklistInfoGroupId":350,
"name":"黑名单3",
"publicFlag":false,
"remark":null
}
],
"resultMsg":"查询成功",
"errorStackTrace":null,
"requestId":null
}
###请求:
URL:http://api.byrobot.cn/openapi/v1/company/blacklist/group/list
###请求方式:
GET
###请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司Id | 1 |
###响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码,详见“ResultModel响应对象模型”说明 |
data | list | 返回数据 |
blacklistInfoGroupId | int | 黑名单分组id,-1为默认分组 |
name | String | 黑名单分组名称 |
publicFlag | boolean | 是否公开 |
remark | string | 备注 |
查询公司的黑名单号码列表
功能说明:
通过接口可以分页查询公司的某个黑名单分组下的黑名单号码列表
返回对象示例:
{
"code":200,
"data":{
"pageNum":1,
"pageSize":20,
"total":100,
"list":[
{
"blacklistInfoId":321693,
"name":"test99",
"mobile":"13100000099",
"remark":null,
"gmtCreate":"2019-08-14 11:07:34"
},
{
"blacklistInfoId":321692,
"name":"test98",
"mobile":"13100000098",
"remark":null,
"gmtCreate":"2019-08-14 11:07:34"
}
]
},
"resultMsg":"查询成功",
"errorStackTrace":null,
"requestId":null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/company/blacklist/info/page
请求方式:
GET
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司Id | 1 |
blacklistInfoGroupId | int | 是 | 黑名单分组Id | 1 |
pageNum | int | 否 | 分页页号,默认1 | 1 |
pageSize | int | 否 | 每页大小,默认20 | 20 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码,详见“ResultModel响应对象模型”说明 |
data | object | 返回数据 |
pageNum | int | 当前页 |
pageSize | int | 当前页大小 |
total | int | 数据总数量 |
list | list | 黑名单号码信息列表 |
blacklistInfoId | long | 黑名单号码id |
name | string | 黑名单号码名称 |
mobile | string | 黑名单号码 |
remark | string | 备注 |
gmtCreate | string | 创建时间 |
创建黑名单分组接口
功能说明:
通过接口可以创建一个黑名单分组
请求:
URL:http://api.byrobot.cn/openapi/v1/company/blacklist/group/add
请求方式:
POST
请求象示例:
{
"companyId":1,
"name":"test1",
"remark":"test123"
}
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司Id | 1 |
name | int | 是 | 黑名单分组名称 | 1 |
remark | string | 否 | 备注 | test |
返对象示例:
{
"code":200,
"data":123456,
"resultMsg":"新增成功",
"errorStackTrace":null,
"requestId":null
}
响应参数:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码,详见“ResultModel响应对象模型”说明 |
data | long | 创建成功的黑名单分组id |
批量添加黑名单号码到黑名单分组接口
功能说明:
通过接口可以批量添加黑名单号码到某个黑名单分组接口
请求:
URL:http://api.byrobot.cn/openapi/v1/company/addBlackList/batch
请求方式:
POST
请求象示例:
{
"blacklist":[
{
"mobile":"18900000000",
"name":"test0",
"remark":"remark0"
},
{
"mobile":"18900000001",
"name":"test1",
"remark":"remark1"
},
{
"mobile":"18900000002",
"name":"test2",
"remark":"remark2"
}
],
"blacklistInfoGroupId":361,
"companyId":1
}
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司id | 1 |
blacklistInfoGroupId | long | 是 | 黑名单分组id | 1 |
blacklist | list | 是 | 黑名单信息集合 | 1 |
mobile | string | 是 | 黑名单号码 | 18900000001 |
name | string | 是 | 黑名单名 | test |
remark | string | 否 | 备注 | test |
返对象示例:
{
"code":200,
"data":{
"requsetNum":3,
"successNum":3
},
"resultMsg":"新增成功",
"errorStackTrace":null,
"requestId":null
}
响应参数:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码,详见“ResultModel响应对象模型”说明 |
data | object | 返回数据 |
requsetNum | int | 请求数量 |
successNum | int | 成功数量 |
编辑黑名单分组
功能说明:
通过接口可以编辑黑名单分组
请求:
URL:http://api.byrobot.cn/openapi/v1/company/blacklist/group/edit
请求方式:
POST
请求象示例:
{
"companyId":1,
"blacklistInfoGroupId":361,
"name":"test_edit",
"remark":"remark_edit"
}
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司id | 1 |
blacklistInfoGroupId | long | 是 | 黑名单分组id | 1 |
name | string | 是 | 黑名单名 | test |
remark | string | 否 | 备注 | test |
返对象示例:
{
"code":200,
"data":true,
"resultMsg":"修改成功",
"errorStackTrace":null,
"requestId":null
}
响应参数:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码,详见“ResultModel响应对象模型”说明 |
data | boolean | 返回数据 |
## 删除一个黑名单号码
###功能说明:
通过接口可以删除一个黑名单号码
###请求:
URL:http://api.byrobot.cn/openapi/v1/company/blacklist/info/delete
###请求方式:
POST
请求象示例:
{
"blacklistInfoGroupId":361,
"companyId":1,
"mobile":"18900000000"
}
###请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司id | 1 |
blacklistInfoGroupId | long | 是 | 黑名单分组id | 1 |
mobile | string | 是 | 黑名单号码 | 18900000000 |
返对象示例:
{
"code":200,
"data":true,
"resultMsg":"删除成功",
"errorStackTrace":null,
"requestId":null
}
###响应参数:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码,详见“ResultModel响应对象模型”说明 |
data | boolean | 返回数据 |
删除黑名单分组接口
功能说明:
通过接口可以删除一个黑名单分组(还有号码则报错)
请求:
URL:http://api.byrobot.cn/openapi/v1/company/blacklist/group/delete
请求方式:
POST
请求象示例:
{
"blacklistInfoGroupId":361,
"companyId":1
}
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司id | 1 |
blacklistInfoGroupId | long | 是 | 黑名单分组id | 1 |
返对象示例:
{
"code":200,
"data":true,
"resultMsg":"删除成功",
"errorStackTrace":null,
"requestId":null
}
响应参数:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码,详见“ResultModel响应对象模型”说明 |
data | boolean | 返回数据 |
任务操作接口
创建任务接口
功能说明:
通过此接口可以创建新的任务
注意点
电话任务外呼时间范围 9:00-20:00
创建任务,只需设置总坐席数,由系统自动分配每个线路的坐席数量。
注意:
- ai坐席数的总数可在crm界面企业账户中看到
- 创建人默认为公司的主账号
- 开启重拨需要的枚举:
2-无法接通
3-外呼失败
5-关机
6-占线
7-停机
9-主叫欠费
10-呼损
入参JSON示例:
{
"companyId":1,
"taskName":"测试任务",
"taskType":2,
"startDate":"2017-10-19",
"workingStartTime":"08:00",
"workingEndTime":"22:00",
"breakStartTime":"12:00",
"breakEndTime":"13:00",
"userPhoneIds":[
1
],
"callType":0,
"concurrencyQuota":1,
"robotDefId":1,
"smsType":1,
"smsSendLevel":[
"A级(有明确意向)",
"B级(可能有意向)"
],
"smsTemplateId":4198,
"remark":"创建任务",
"repeatCall":true,
"defaultIntentionRule":true,
"repeatCallRule":[
{
"phoneStatus":9,
"times":1,
"interval":5
},
{
"phoneStatus":10,
"times":1,
"interval":5
}
]
}
返回对象示例:
{
"code": 200,
"data": 67, //返回刚刚创建的任务ID
"resultMsg": "操作成功",
"errorStackTrace": null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/task/createTask
请求方法:
POST
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司Id | 3811 |
taskName | String | 是 | 任务名称 | 测试API任务 |
taskType | int | 是 | 任务类型, 1-定时,2-手动 | 1 |
startDate | String | 否 | 任务开始日期(定时任务必填) | "2017-10-19" |
workingStartTime | String | 否 | 可拨打开始时间 | 08:00 |
workingEndTime | String | 否 | 可拨打结束时间 | 22:00 |
breakStartTime | String | 否 | 暂时停止开始时间,对应百应页面创建任务时的不拨打时段的开始时间,到达这个时间点后,任务将会自动暂停 | 12:00 |
breakEndTime | String | 否 | 暂时停止结束时间,对应百应页面创建任务时的不拨打时段的结束时间,到达这个时间点后,任务将会再次启动 | 13:00 |
userPhoneIds | List | 是 | 主叫号码Id,获取主叫电话列表接口可获取到 | [20123] |
robotDefId | int | 是 | 机器人id,获取机器人话术列表接口可获取 | 83754 |
callType | int | 是 | 外呼方式,对应主叫号码(线路)类型:2、1、0 | 2 |
smsType | int | 否 | 是否发送挂机短信:0-否,1-是 | |
smsSendLevel | List |
否 | 发送短信的意向等级,固定值:A级(有明确意向)、B级(可能有意向)、C级(明确拒绝)、D级(用户忙)、E级(拨打失败)、F级(无效客户) | |
smsTemplateId | int | 否 | 短信模版id,只能使用不含变量的短信模版 | |
concurrencyQuota | int | 否 | ai坐席数,默认1,一个坐席对应一个机器人 | 1 |
phoneNum | int | 否 | 多并发数 | 1 |
remark | String | 否 | 备注 | 测试 |
repeatCall | boolean | 否 | 是否开启重拨 默认false 关闭 | |
repeatCallRule | list | 否 | 重拨详细规则 | 重拨详细规则,请看json入参 |
phoneStatus | int | 否 | 通话状态枚举,参考本文 3. 开启重拨需要的枚举 | |
times | int | 否 | 重拨次数(1-5) | |
interval | int | 否 | 间隔时间(0-120min) | |
defaultIntentionRule | boolean | 否 | 是否使用默认客户分配规则,传入true,不传默认false | true |
openElasticity | boolean | 是否开启弹性,默认false | false |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码 |
data | int | 刚刚创建的任务ID |
resultMsg | String | 响应说明 |
启动任务接口
功能说明:
通过此接口可以启动指定的任务
返回对象示例:
{
"code": 200,
"data": null,
"resultMsg": "启动成功",
"errorStackTrace": null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/task/start
请求方法:
POST
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
taskId | int | 是 | 任务Id | 13487 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码 |
resultMsg | String | 响应说明 |
暂停任务接口
功能说明:
通过此接口可以暂停指定的任务,暂停任务后,会释放主叫号码和AI坐席
返回对象示例:
{
"code": 200,
"data": null,
"resultMsg": "执行成功",
"errorStackTrace": null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/task/pause
请求方法:
POST
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
taskId | int | 是 | 任务Id | 13487 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码 |
resultMsg | String | 响应说明 |
停止任务接口
功能说明:
通过此接口可以停止指定的任务,停止任务后,会释放主叫号码和AI坐席
返回对象示例:
{
"code": 200,
"data": null,
"resultMsg": "执行成功",
"errorStackTrace": null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/task/stop
请求方法:
POST
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
taskId | int | 是 | 任务Id | 13487 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码 |
resultMsg | String | 响应说明 |
删除任务
功能说明:
通过调用此接口可以删除任务信息,删除任务后,会释放主叫号码和AI坐席
入参JSON示例
{
"taskId": "13487"
}
返回对象示例:
{
"code": 200,
"data": null,
"resultMsg": "删除成功",
"errorStackTrace": null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/task/delete
请求方法:
POST
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
taskId | String | 是 | 删除任务 | 13487 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码 |
resultMsg | String | 响应说明 |
向任务中导入客户接口
功能说明:
通过此接口可以向指定的任务导入客户信息,用于拨打电话,同一个任务,电话号码不能重复,重复号码自动去重。 单次导入最大10000条
入参JSON示例:
{
"taskId":10000,
"companyId":2000,
"customerInfoList":[
{
"name":"测试0",
"phone":"18311110000",
"properties":{"还款金额":"888","user_id":"33542"
}
},
{
"name":"测试0",
"phone":"18311110000",
"properties":{"还款金额":"888","user_id":"33542"
}
}
]
}
返回对象示例:
v1b版:
{
"code": 200,
"data": null,
"resultMsg": "操作成功",
"errorStackTrace": null
}
v2版:
{
"code":200,
"data":{
"msg":"本次导入:3个客户,预计导入成功:3个客户,成功导入:3个客户,重复:0个客户,话术变量错误:0个客户",
"successNum":3,
"repeatNum":0,
"placeFailNum":0
},
"resultMsg":"操作成功",
"errorStackTrace":null,
"requestId":null
}
请求:
- v1版URL:http://api.byrobot.cn/openapi/v1/task/importTaskCustomer
- v2版URL:http://api.byrobot.cn/openapi/v2/task/importTaskCustomer
PS:v1版接口已过期,不推荐使用,请使用v2版接口。
请求方法:
POST
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司id | 3212 |
taskId | int | 是 | 任务Id | 13487 |
name | String | 是 | 客户名称 | 张三 |
phone | String | 是 | 客户电话 | 13998987676 |
properties | Map |
否 | 话术变量;自定义信息 | {"还款金额":"888","user_id":"33542"} |
话术变量可通过“查询话术变量 task/getSceneVariables” 接口 查到
响应:
v1版:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码 |
resultMsg | String | 响应说明 |
data | String | 响应数据 |
v2版:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码 |
resultMsg | String | 响应说明 |
data | object | 响应数据 |
msg | String | 结果文字消息 |
successNum | int | 成功条数 |
repeatNum | int | 重复条数 |
placeFailNum | int | 话术变量错误条数 |
修改任务
功能说明:
通过接口可以更改AI坐席数量,功能同crm端编辑话术时修改外呼号码的AI坐席数
入参JSON示例
{
//公司Id
"companyId": 123,
//任务Id
"taskId":1669,
//任务名称
"taskName":"test",
//任务类型 详见枚举
"taskType":1,
//外呼号码列表,当有多个外呼号码时可以用[,]分隔
"userPhoneIds":1,
//外呼类型 详见枚举
"callType":1,
//并发数(ai坐席数)
"concurrencyQuota":2,
//多并发数(专业版及以上,最大100,并发数不能超过坐席的2倍)
"concurrencyPhone":4,
//外呼开始日期
"startDate":"2018-12-12",
//任务开始时间
"workingStartTime":"09:00",
//任务结束实际
"workingEndTime":"20:00",
//午休开始时间
"breakStartTime":"12:00",
//午休结束时间
"breakEndTime":"14:00",
"repeatCall": true,
"repeatCallRule": [{
"phoneStatus": 9,
"times": 1,
"interval": 5
},
{
"phoneStatus": 10,
"times": 1,
"interval": 5
}
]
}
返回对象示例:
{
"code": 200,
"data": null,
"resultMsg": "修改成功",
"errorStackTrace": null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/task/update
请求方法:
POST
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司Id | 3212 |
taskId | int | 是 | 任务Id | 13487 |
taskName | String | 是 | 任务名称 | test |
taskType | int | 是 | 任务类型 | 1 |
userPhoneIds | int | 是 | 主叫号码Id | 1 |
callType | int | 是 | 外呼方式,对应主叫号码类型枚举 | 1 |
concurrencyQuota | int | 是 | 坐席数 | 1 |
smsType | int | 否 | 是否发送挂机短信:0-否,1-是 | |
smsSendLevel | List |
否 | 发送短信的意向等级,固定值:A级(有明确意向)、B级(可能有意向)、C级(明确拒绝)、D级(用户忙)、E级(拨打失败)、F级(无效客户) | |
smsTemplateId | int | 否 | 短信模版id | |
concurrencyPhone | int | 否 | 并发量 | 1 |
startDate | String | 否 | 开始日期 | "2018-12-13" |
workingStartTime | String | 否 | 任务开始时间 | "09:00" |
workingEndTime | String | 否 | 任务结束时间 | "20:00" |
breakStartClose | boolean | 否 | 是否关闭不拨打时间 true:关闭,false:维持原状态,默认false | |
breakStartTime | String | 否 | 暂时停止开始时间,对应百应页面创建任务时的不拨打时段的开始时间,到达这个时间点后,任务将会自动暂停 | "12:00" |
breakEndTime | String | 否 | 暂时停止结束时间,对应百应页面创建任务时的不拨打时段的结束时间,到达这个时间点后 任务将会再次启动 | "14:00" |
repeatCall | boolean | 否 | 是否开启重拨 默认false 关闭 | |
repeatCallRule | list | 否 | 重拨详细规则,请看json入参 | |
openElasticity | boolean | 是否开启弹性,默认false | false |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码 |
resultMsg | String | 响应说明 |
查询话术变量
功能说明:
通过调用此接口可以查询到话术内使用的变量
返回对象示例:
{
"code":200,
"data":[
"变量名1",
"变量名2",
"变量名3"
],
"resultMsg":"获取成功",
"errorStackTrace":null
}
请求:
URL: http://api.byrobot.cn/openapi/v1/task/getSceneVariables
请求方法:
GET
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司Id | 3421 |
sceneDefId | int | 是 | 场景Id | 22341 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码 |
data | list(String) | 话术变量集合 |
resultMsg | String | 响应说明 |
任务信息查询接口
获取任务列表接口
功能说明:
通过此接口可以获取指定公司的任务列表
返回对象示例:
{
"code": 200,
"data": {
"pageNum": 2,
"pageSize": 2,
"size": 2,
"total": 46,
"pages": 23,
"list": [
{
"callJobId": 66,
"jobName": "测试任务",
"jobType": 2,
"startDate": "2017-10-25",
"workingStartTime": "09:00:00",
"workingEndTime": "21:00:00",
"status": 2,
"sceneDefId": 1,
"remark": "",
"totalCount": null,
"doneCount": null,
"calledCount": null,
"rejectedCount": null,
"unavailableCount": null,
"fromUnavailableCount": null,
"callPhones": null
},
{
"callJobId": 64,
"jobName": "测试任务2",
"jobType": 2,
"startDate": "2017-10-25",
"workingStartTime": "09:00:00",
"workingEndTime": "21:00:00",
"status": 2,
"sceneDefId": 1,
"remark": "",
"totalCount": null,
"doneCount": null,
"calledCount": null,
"rejectedCount": null,
"unavailableCount": null,
"fromUnavailableCount": null,
"sceneDefName": null,
"callPhones": null
}
]
},
"resultMsg": "操作成功",
"errorStackTrace": null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/task/getTasks
请求方法:
GET
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司Id | 3811 |
taskName | String | 否 | 任务名称 | 测试API任务 |
createDate | String | 否 | 创建时间 | "2017-10-19" |
status | int | 否 | 任务状态枚举 | 1 |
needAll | boolean | 否 | true:返回所有Job信息,false:只返回未标记删除的Job信息,默认false | false |
pageNum | int | 否 | 第几页,默认1 | 1 |
pageSize | int | 否 | 页面大小,选填,默认10,最大100,建议不要太大 | 10 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码 |
pageNum | int | 当前分页数 |
pageSize | int | 当前分页数据条数 |
total | int | 数据总条数 |
pages | int | 分页总数 |
callJobId | int | 任务id |
jobName | String | 任务名称 |
jobType | int | 任务类型,1-定时,2-手动 |
startDate | String | 任务开始时间 |
workingStartTime | String | 可拨打开始时间 |
workingEndTime | String | 可拨打结束时间 |
breakStartTime | String | 暂时停止开始时间,对应百应页面创建任务时的不拨打时段的开始时间,到达这个时间点后 任务将会自动暂停 |
breakEndTime | String | 暂时停止结束时间,对应百应页面创建任务时的不拨打时段的结束时间,到达这个时间点后 任务将会再次启动 |
status | int | 任务状态枚举 |
remark | String | 任务注释 |
totalCount | int | 任务拨打的号码总数 |
doneCount | int | 任务已完成拨打的号码总数 |
calledCount | int | 任务已完成呼通的号码总数 |
rejectedCount | int | 任务呼叫被拒接的号码总数 |
unavailableCount | int | 任务呼叫无法接通的号码总数 |
fromUnavailableCount | int | 任务主叫号码不可用的号码总数 |
callPhones | List | 主叫电话号码列表,格式和getPhones返回结果相同 |
resultMsg | String | 响应说明 |
获取任务详情接口
功能说明:
通过此接口可以获取指定任务的详细信息
返回对象示例:
{
"code": 200,
"data": {
"callJobId": 19,
"jobName": "testJob",
"jobType": 2,
"startDate": "2017-10-19",
"workingStartTime": "08:00:00",
"workingEndTime": "22:00:00",
"status": 2,
"sceneDefId": 1,
"remark": "testJobx",
"totalCount": 2,
"doneCount": 2,
"calledCount": 0,
"rejectedCount": 0,
"unavailableCount": 0,
"fromUnavailableCount": 2,
"robotDefName": "产品电销",
"sceneDefName": "金融催缴",
"sceneRecordName": "房产电销优化版(张飞)",
"durationStat": [
{
"name": "<10s",
"value": 22
}
],
"chatRoundStat": [
{
"name": "0-9次",
"value": 22
}
],
"resultDefs": [
{
"name": "催缴结果",
"values": [
"成功",
"不成功"
]
}
],
"callPhones": [
{
"jobPhoneId": 26,
"userPhoneId": 1,
"callJobId": 19,
"phone": "13333333333",
"phoneName": "sim1",
},
{
"jobPhoneId": 27,
"userPhoneId": 2,
"callJobId": 19,
"phone": "18888888888",
"phoneName": "sim2",
}
],
"extraStat": {
"客户意向等级": [
{
"name": "较强",
"value": 1
}
],
"客户关注点": [
{
"name": "位置",
"value": 1
},
{
"name": "其他楼盘",
"value": 1
},
{
"name": "商业配套",
"value": 1
},
{
"name": "户型",
"value": 1
},
{
"name": "环境",
"value": 1
},
{
"name": "能否贷款",
"value": 1
},
{
"name": "询问价格",
"value": 1
}
]
}
},
"resultMsg": "操作成功",
"errorStackTrace": null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/task/getTaskDetail
请求方法:
GET
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司Id | 3811 |
taskId | int | 是 | 任务Id | 13487 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码 |
callJobId | int | 任务id |
jobName | String | 任务名称 |
jobType | int | 任务类型,1-定时,2-手动 |
startDate | String | 任务开始时间 |
workingStartTime | String | 可拨打开始时间 |
workingEndTime | String | 可拨打结束时间 |
breakStartTime | String | 暂时停止开始时间,对应百应页面创建任务时的不拨打时段的开始时间,到达这个时间点后,任务将会自动暂停 |
breakEndTime | String | 暂时停止结束时间,对应百应页面创建任务时的不拨打时段的结束时间,到达这个时间点后 任务将会再次启动 |
status | int | 任务状态枚举 |
remark | String | 任务注释 |
totalCount | int | 任务拨打的号码总数 |
doneCount | int | 任务已完成拨打的号码总数 |
calledCount | int | 任务已完成呼通的号码总数 |
rejectedCount | int | 任务呼叫被拒接的号码总数 |
unavailableCount | int | 任务呼叫无法接通的号码总数 |
fromUnavailableCount | int | 任务主叫号码不可用的号码总数 |
robotDefName | String | 机器人名称 |
sceneDefName | String | 场景名称 |
sceneRecordName | String | 录音名称 |
durationStat | List | 通话时长的统计信息,通话时长统计类型(小于10秒,10-50秒,1分钟-1分59秒,大于等于2分钟) |
chatRoundStat | List | 通话轮次的统计信息,通话轮次统计类型(0-2次,3-4次,5-6次,7-9次) |
resultDefs | List | 结果分析的枚举,各种类型的分析枚举(A-F级定义) |
callPhones | List | 主叫电话号码列表,格式和getPhones返回结果相同 |
extraStat | List | 任务分析结果统计信息 |
resultMsg | String | 响应说明 |
durationStat(通话时长的统计信息)
参数名 | 类型 | 描述 |
---|---|---|
name | String | 通话时长统计类型 (小于10秒,10-50秒,1分钟-1分59秒,大于等于2分钟) |
value | String | 统计数量 |
chatRoundStat(通话轮次的统计信息)
参数名 | 类型 | 描述 |
---|---|---|
name | String | 通话轮次统计类型(0-2次,3-4次,5-6次,7-9次) |
value | String | 统计数量 |
callPhones(通话轮次的统计信息)
参数名 | 类型 | 描述 |
---|---|---|
jobPhoneId | long | 外呼任务和主叫号码绑定表主键Id |
userPhoneId | long | 主叫号码Id(线路Id,对应获取主叫号码列表接口返回的userPhoneId) |
callJobId | long | 任务Id |
phone | String | 外呼号码 |
phoneName | String | 外呼号码名 |
获取已经完成任务电话号码接口
功能说明:
通过此接口可以获取指定任务中所有已经完成的电话号码
入参JSON示例
{
"callJobId" : 62,
"durationLeft" : 0,
"durationRight" : 100,
"chatRoundLeft":0,
"chatRoundRight":10,
"finishStatus" : 1,
"pageNum": 1,
"pageSize": 10,
"resultQueryList" : [
{
"name" : "客户意向等级",
"value" : "A级(较强)"
}
]
}
返回对象示例:
{
"code": 200,
"data": {
"pageNum": 1,
"pageSize": 2,
"size": 2,
"total": 2,
"pages": 1,
"list": [
{
"callInstanceId": 493,
"sceneDefId": 1,
"callJobId": 62,
"customerTelephone": "1008",
"customerName": "测试02",
"status": 2,
"finishStatus": 0,
"duration": "27",
"chatRound": 0,
"startTime": "2017-10-25 11:32:54",
"endTime": "2017-10-25 11:33:22",
"callerPhone": "15868457106",
"luyinOssUrl": "https://jingrobot-dev.oss-cn-hangzhou.aliyuncs.com/RobotPhoneCommunicate/493.mp3",
"secondaryCallTime": "1970-01-01 11:18:13",
"secondaryCallTimes": 0,
"jobName": "电话任务",
"resultList": [
{
"name": "催缴结果",
"value": "成功"
}
]
},
{
"callInstanceId": 489,
"sceneDefId": 1,
"callJobId": 62,
"customerTelephone": "17751279857",
"customerName": "不弃",
"status": 2,
"finishStatus": 0,
"duration": "11",
"chatRound": 0,
"startTime": "2017-10-25 11:17:06",
"endTime": "2017-10-25 11:17:18",
"callerPhone": "15868457106",
"luyinOssUrl": "https://jingrobot-dev.oss-cn-hangzhou.aliyuncs.com/RobotPhoneCommunicate/489.mp3",
"secondaryCallTime": "1970-01-01 10:59:23",
"secondaryCallTimes": 1,
"jobName": "电话任务",
"resultList": [
{
"name": "催缴结果",
"value": "成功"
}
]
}
]
},
"resultMsg": "操作成功",
"errorStackTrace": null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/task/queryDoneTaskPhones
请求方法:
POST
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
callJobId | int | 是 | 任务id | 1 |
durationLeft | int | 否 | 通话时长左值 | 0 |
durationRight | int | 否 | 通话时长右值 | 100 |
chatRoundLeft | int | 否 | 通话轮次左值 | 21 |
chatRoundRight | int | 否 | 通话时长右值 | 21 |
finishStatus | int | 否 | 已完成通话状态枚举 | 1 |
pageNum | int | 否 | 第几页(默认为1) | 1 |
pageSize | int | 否 | 显示数量/页(默认为10),取值1-50 | 10 |
resultQueryList | List | 否 | 支持按分析结果作为条件 | 10 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码 |
pageNum | int | 第几页 |
pageSize | int | 每页页面条数 |
total | int | 数据总条数 |
pages | int | 页面总数 |
callInstanceId | long | 通话记录Id |
sceneDefId | int | 场景id |
callJobId | int | 任务id |
customerTelephone | String | 被叫客户电话号码 |
customerName | String | 被叫客户名称 |
status | String | 通话实例状态枚举 |
finishStatus | String | 已完成通话状态枚举 |
duration | int | 通话时长 |
chatRound | int | 通话轮次 |
startTime | String | 开始拨打时间 |
endTime | String | 结束拨打时间 |
callerPhone | String | 主叫电话 |
luyinOssUrl | int | 通话录音(包含用户录音和Ai语音) |
secondaryCallTime | String | 二次拨打时间 |
secondaryCallTimes | int | 重试拨打次数 |
jobName | List | 任务名称 |
resultList | List | 通话分析结果信息 |
resultMsg | String | 响应说明 |
resultList(通话轮次的统计信息)
参数名 | 类型 | 描述 |
---|---|---|
name | String | 客户意向等级,客户标签等 |
value | String | A级(有明确意向) 等 |
获取任务未开始的电话列表
功能说明:
通过此接口可以获取任务中还未开始外呼的外呼数据 查询限制:此查询接口每页不能超过50条
入参JSON示例
{
"pageNum" : 1,
"pageSize" : 20,
"taskId" : 21767
}
返回对象示例:
{
"code": 200,
"data": {
"pageNum": 1,
"pageSize": 50,
"list": [
{
"callInstanceId": 493,
"customerName": 测试公司客户1,
"customerTelephone": 1590000xxxx,
"status": 0,
"startTime": 2018-01-01 15:34:20,
"callerPhone": 测试主叫,
"corpName": 测试公司,
"calledTimes": 1
},
{
"callInstanceId": 494,
"customerName": 测试公司客户2,
"customerTelephone": 15900000xxxx,
"status": 1,
"startTime": 2018-01-01 15:34:20,
"callerPhone": 测试主叫,
"corpName": 测试公司,
"calledTimes":2
}
]
},
"resultMsg": "操作成功",
"errorStackTrace": null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/task/notDialedCustomerList
请求方法:
POST
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
pageNum | int | 否 | 第几页(默认为1) | 1 |
pageSize | int | 否 | 显示数量/页(默认为10)单页最大支持50 | 10 |
taskId | int | 是 | 任务Id | 10 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码 |
pageNum | int | 第几页 |
pageSize | int | 每页页面条数 |
total | int | 数据总条数 |
pages | int | 页面总数 |
callInstanceId | long | 通话记录Id(每个被叫电话为一个通话实例) |
customerName | int | 客户名称 |
customerTelephone | int | 被叫客户电话 |
status | String | 通话实例状态枚举 |
startTime | String | 开始时间 |
callerPhone | String | 主叫号码 |
corpName | String | 公司名 |
calledTimes | int | 已拨打次数 |
resultMsg | String | 响应说明 |
errorStackTrace | String | 错误信息 |
获取一个通话的详情接口
功能说明:
通过此接口可以获取指定通话的详细信息
返回对象示例:
{
"code": 200,
"data": {
"phoneLog": {
"phoneLogs": [
{
"sceneInstanceLogId": 1321,
"sceneInstanceId": 540,
"speaker": "AI",
"content": "哎,您好,等待2s 哎,您好,拱墅区 中大银泰城边上有个首付50万左右的精装公寓你考虑吗?",
"userMean": null,
"userMeanDetail": null,
"aiUnknown": 1,
"startTime": 0,
"endTime": 0
},
{
"sceneInstanceLogId": 1322,
"sceneInstanceId": 540,
"speaker": "ME",
"content": "喂你好",
"userMean": "~",
"userMeanDetail": null,
"aiUnknown": 0,
"startTime": 300,
"endTime": 1145
},
{
"sceneInstanceLogId": 1323,
"sceneInstanceId": 540,
"speaker": "ME",
"content": "哦你好",
"userMean": "~",
"userMeanDetail": null,
"aiUnknown": 0,
"startTime": 2330,
"endTime": 3565
}],
"luyinOssUrl": "https://byrobot-test.oss-cn-hangzhou.aliyuncs.com/RobotPhoneCommunicate/540/JYSYDCCHVFYYTMGJKKHJAMHARNNBWEJQ.wav"
},
"sceneInstance": {
"callInstanceId": 540,
"companyId": 1,
"callJobId": 31,
"customerId": 55,
"customerTelephone": "17751279857",
"customerName": "不弃",
"status": 2,
"finishStatus": 0,
"duration": 87,
"chatRound": 18,
"startTime": "2018-01-24 20:51:53",
"endTime": "2018-01-24 20:53:28",
"callerPhone": "18072749353",
"luyinOssUrl": "https://byrobot-test.oss-cn-hangzhou.aliyuncs.com/RobotPhoneCommunicate/540/JYSYDCCHVFYYTMGJKKHJAMHARNNBWEJQ.wav",
"userLuyinOssUrl": "https://byrobot-test.oss-cn-hangzhou.aliyuncs.com/RobotPhoneCommunicate/540_user.wav",
"properties": "{}",
"handlePerson": "房产电销优化版",
"callType": 1,
"readStatus": 1,
"jobName": "buqi新的测试任务",
"robotDefId": 6,
"sceneDefId": 11,
"sceneRecordId": 1,
"trackResult": null,
"hangUp": 0,
"secondaryCallTime": "1970-01-01 13:00:00",
"secondaryCallTimes": 2
},
"taskResult": [
{
"sceneInstanceResultId": 188,
"companyId": 1,
"sceneInstanceId": 540,
"resultName": "预约时间",
"resultValue": "2018-01-25 08:00",
"resultDesc": null
},
{
"sceneInstanceResultId": 189,
"companyId": 1,
"sceneInstanceId": 540,
"resultName": "客户意向等级",
"resultValue": "A级(较强)",
"resultDesc": "该客户在通话过程中主动询问了产品细节,有进一步了解产品的意愿。"
}
]
},
"resultMsg": "获取成功",
"errorStackTrace": null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/task/phoneLogInfo
请求方法:
GET
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
callInstanceId | long | 是 | 通话记录Id | 1 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码 |
phoneLog | String | 对话内容总称 |
phoneLogs | List | 对话内容 |
sceneInstanceId | long | 通话记录Id,callInstanceId |
speaker | String | 角色 |
content | String | 内容 |
userMean | String | 用户说话语义,客户说话内容命中的话术节点分支或知识库问题 |
userMeanDetail | String | 用户说话语义详情,客户说话内容命中详情(包括命中的用户说话内容和话术节点分支或知识库分支问题) |
aiUnknown | int | 是否是ai无法应答的问题,1-是,0-否 |
luyinOssUrl | String | 通话录音 |
sceneInstance | List | 通话信息 |
callInstanceId | long | 通话记录Id |
companyId | int | 公司id |
callJobId | int | 任务id |
customerId | long | 客户id,当前通话记录对应的客户 |
customerTelephone | String | 客户手机 |
customerName | String | 客户名称 |
finishStatus | String | 已完成通话状态枚举 |
status | int | 通话实例状态枚举 |
duration | int | 通话时长 |
chatRound | int | 通话轮次,AI说话次数 |
startTime | String | 开始拨打时间 |
endTime | String | 结束拨打时间 |
callerPhone | String | 主叫电话 |
luyinOssUrl | String | 通话录音(包含Ai和客户) |
userLuyinOssUrl | String | 通话录音(只包含客户) |
properties | String | 通话记录携带的参数(json字符串),包含话术变量和自定义参数,用户可以传入自己的变量,百应回调会传回给用户 |
handlePerson | String | 处理人(一般是话术的话术名) |
callType | int | 外呼方式,对应主叫号码(线路)类型枚举 |
readStatus | int | 是否已读,产品中的通话记录已读未读状态 0:未读 1:已读 |
robotDefId | String | 机器人id |
sceneDefId | String | 场景ID |
sceneRecordId | int | 场景录音id |
jobName | String | 任务名称 |
hangUp | Integer | 挂机人, 0: AI 1: 用户 |
taskResult | List | 任务结果分析 |
sceneInstanceResultId | Long | 通话结果记录id |
companyId | Integer | 公司Id |
sceneInstanceId | Long | 通话记录Id |
resultName | String | 分析结果名(客户意向等级,客户标签) |
resultValue | String | 分析结果,A级(有明确意向) |
resultDesc | String | 分析结果描述 |
信息回调接口
回调说明
通话记录回调与任务完成回调使用不同回调地址,请提前配置。
回调服务器IP
回调类型dateType | 描述 |
---|---|
通话记录回调 | CALL_INSTANCE_RESULT |
任务完成详情回调 | JOB_INFO_RESULT |
手动修改意向等级回调 | CALL_INSTANCE_RESULT |
呼入回调 | INBOUND_CALL_INSTANCE_RESULT |
回调时间
最多回调27次,回调总时常共26小时46分,前16次回调间隔时间如下,超过16次,每次重试间隔2小时。
第几次重试 | 与上次重试的间隔时间 | 第几次重试 | 与上次重试的间隔时间 |
---|---|---|---|
1 | 10 秒 | 9 | 7 分钟 |
2 | 30 秒 | 10 | 8 分钟 |
3 | 1 分钟 | 11 | 9 分钟 |
4 | 2 分钟 | 12 | 10 分钟 |
5 | 3 分钟 | 13 | 20 分钟 |
6 | 4 分钟 | 14 | 30 分钟 |
7 | 5 分钟 | 15 | 1 小时 |
8 | 6 分钟 | 16 | 2 小时 |
回调返回
回调成功后,处理方应当返回字符串success在返回的body体中,百应才会认为回调成功,否则认为回调失败。
通话记录回调接口
功能说明:
当一次通话完成后,百应机器人会自动调用回调程序向用户配置的回调地址,发送本次通话详情。
请求对象示例:
{
"code": 200,
"data": {
"dataType": "CALL_INSTANCE_RESULT",
"data": {
"sceneInstance": {
"callInstanceId": 1,
"companyId": 1,
"callUserId": 1,
"callJobId": 1,
"customerId": 1,
"customerTelephone": "137xxxxxxxx",
"customerName": "2989",
"status": 2,
"finishStatus": 0,
"duration": 35,
"chatRound": 3,
"startTime": "2019-01-12 16:09:32",
"endTime": "2019-01-12 16:10:11",
"callerPhone": "测试线路",
"luyinOssUrl": "https://byrobot-prod.oss-cn-hangzhou.aliyuncs.com/RobotPhoneCommunicate/11/xxx.wav",
"userLuyinOssUrl": "https://byrobot-prod.oss-cn-hangzhou.aliyuncs.com/RobotPhoneCommunicate/11.wav",
"properties": "{\"duration\":20,\"failReason\":\"失败了就是失败了\",\"finishTime\":1546506273268,\"seatGroupId\":1,\"seatGroupName\":\"测试失败\",\"startTime\":1546506263268,\"succTime\":1546506283268,\"success\":false,\"transferMobile\":false,\"useEavesdrop\":false}",
"handlePerson": "测试线路",
"callType": 1,
"callIndex": 0,
"readStatus": 0,
"jobName": "GG0112-YX NEW1",
"robotDefId": 180,
"sceneDefId": 192,
"sceneRecordId": 192,
"industry": "1540384412_151_1",
"trackResult": "C级(很少)",
"hangUp": 1,
"secondaryCallTime": "1970-01-01 09:00:00",
"secondaryCallTimes": 0,
"cost": 0,
"callbacked": 0,
"gmtCreate": "2019-01-12 16:09:44",
"gmtModified": "2019-01-12 16:09:44"
},
"taskResult": [{
"sceneInstanceResultId": 1117274388,
"companyId": 151,
"callJobId": 362574,
"sceneInstanceId": 1540384412,
"resultName": "客户意向等级",
"resultValue": "C级(很少)",
"artificialResultValue": "C级(很少)",
"artificialChanged": null,
"resultDesc": "命中业务问题 <= 0次 并且 肯定次数 <= 0次",
"resultValueAlias": "C",
"resultLabels": null,
"resultValueNew": "C级(明确拒绝)",
"gmtCreate": "2019-01-12 16:09:44",
"gmtModified": "2019-01-12 16:09:44"
}, {
"sceneInstanceResultId": 922147427,
"companyId": 4880,
"sceneInstanceId": 1223552173,
"resultName": "客户标签",
"resultValue": "[1]",
"artificialResultValue": null,
"artificialChanged": null,
"resultDesc": null,
"resultValueAlias": "",
"resultLabels": [{
"key": 200,
"value": "无效用户"
}],
"resultValueNew": ""
}],
"phoneLog": {
"phoneLogs": [{
"sceneInstanceLogId": 1156248612,
"sceneInstanceId": 1540384412,
"companyId": 151,
"robotDefId": 180,
"decisionId": 10638,
"speaker": "AI",
"content": "喂,您好,这里是用户测试电话",
"userMean": "",
"userMeanDetail": null,
"aiUnknown": false,
"answerStatus": null,
"studyStatus": null,
"startTime": 0,
"endTime": 0,
"knowledgeBaseId": null,
"correctionContent": null,
"gmtCreate": "2019-01-12 16:09:44",
"gmtModified": "2019-01-12 16:09:44"
}, {
"sceneInstanceLogId": 1156249713,
"sceneInstanceId": 1540384412,
"companyId": 151,
"robotDefId": 180,
"decisionId": 10638,
"speaker": "ME",
"content": "有什么游戏呀?",
"userMean": "游戏",
"userMeanDetail": "[{\"score\":-1,\"answer\":\"游戏\",\"ask\":\"什么游戏\",\"knowledgeBaseId\":5061}]",
"aiUnknown": false,
"answerStatus": 1,
"studyStatus": null,
"startTime": 8350,
"endTime": 10570,
"knowledgeBaseId": null,
"correctionContent": null,
"gmtCreate": "2019-01-12 16:09:44",
"gmtModified": "2019-01-12 16:09:44"
}],
"luyinOssUrl": "https://byrobot-prod.oss-cn-hangzhou.aliyuncs.com/RobotPhoneCommunicate/1540384412/20190112-161011_13733105333.wav"
},
"jobFinished": false,
"sign": null,
"dateTime": "Thu Oct 16 07:13:48 GMT 2014"
}
},
"resultMsg": "成功",
"errorStackTrace": null
}
请求方法:
公有云:
HttpMethod : post
Content-Type : application/json;charset=utf-8
私有云:
HttpMethod : post
Content-Type : text/plain;charset=utf-8
请求参数:
参数名 | 类型 | 描述 |
---|---|---|
code | String | 回调类型 |
callInstanceId | long | 通话记录Id |
companyId | int | 公司ID |
callUserId | int | 主叫用户ID |
callJobId | int | 任务Id |
customerId | long | 客户Id |
customerTelephone | String | 客户手机号 |
customerName | String | 客户名称 |
status | int | 通话实例状态枚举 |
finishStatus | int | 已完成通话状态枚举 |
duration | int | 通话时长 |
chatRound | int | 通话轮次 |
startTime | Date | 通话开始时间 |
endTime | Date | 通话结束时间 |
callerPhone | String | 主叫号码 |
luyinOssUrl | String | 通话录音(包含Ai和客户) |
userLuyinOssUrl | String | 通话录音(只包含客户) |
properties | String | 通话记录携带的参数(json字符串),包含话术变量和自定义参数,用户可以传入自己的变量,百应回调会传回给用户 |
handlePerson | String | 话术名 |
callType | int | 外呼方式,对应主叫号码(线路)类型枚举 |
callIndex | int | 通话实例索引 |
readStatus | int | 是否已读,产品中的通话记录已读未读状态 0:未读 1:已读 |
jobName | String | 电话任务名称 |
robotDefId | int | 机器人Id |
sceneDefId | int | 场景Id |
sceneRecordId | int | 场景录音id |
industry | String | 所属行业 |
trackResult | String | bug追踪结果 |
hangUp | int | 挂机人 0:AI 1:用户 |
secondaryCallTime | Date | 二次拨打时间 |
secondaryCallTimes | int | 二次拨打次数 为0后不进行外呼 |
cost | int | 通话费用,单位(分) |
callbacked | int | 是否回调完成 0:未回调 1:已回调 |
gmtCreate | Date | 创建时间 |
gmtModified | Date | 修改时间 |
taskResult | List | 任务结果分析 |
sceneInstanceResultId | long | 通话记录结果Id |
companyId | int | 公司Id |
sceneInstanceId | long | 通话记录Id(对应callInstanceId) |
resultName | String | 通话记录结果类型名 |
resultValue | String | 通话记录结果值 |
artificialResultValue | String | 通话结果人工标注值(一般指人工标注意向等级) |
artificialChanged | int | 是否进行过人工标注修改 0:没有 1:有 |
resultDesc | String | 结果描述 |
resultValueAlias | String | 分析结果别名(resultName为【客户意向等级】时标注值为意向级别 A,B,C,D,E,F) |
resultLabels | List |
IntegerStringBO对象中存储一个int类型参数,一个String类型参数,resultName为【客户标签】时存储客户标签 |
resultValueNew | String | 客户意向等级的表述(文案与crm对应) |
phoneLog | String | 对话内容总称 |
phoneLogs | List | 对话详情 |
sceneInstanceLogId | Long | 通话记录日志Id |
sceneInstanceId | Long | 通话记录Id(对应callInstanceId) |
companyId | int | 公司Id |
robotDefId | int | 机器人Id |
decisionId | int | 对应决策Id,话术的节点Id |
speaker | String | 说话人 ME:用户 AI:机器人 |
content | String | 说话内容 |
userMean | String | 用户说话语义,客户说话内容命中的话术节点分支或知识库问题 |
userMeanDetail | String | 用户说话语义详情,客户说话内容命中详情(包括命中的用户说话内容和话术节点分支或知识库分支问题) |
aiUnknown | boolean | 是否是ai无法应答的问题,true-是,false-否 |
answerStatus | int | 回答问题状态:0-分支,1-问题,2-忽略 |
studyStatus | int | 学习状态:0-未学习,1-已学习 |
startTime | Date | 说话的开始时间 |
endTime | Date | 说话的结束时间 |
gmtCreate | Date | 创建时间 |
gmtModified | Date | 修改时间 |
knowledgeBaseId | int | 知识点ID |
correctionContent | String | 通话记录纠错内容 |
luyinOssUrl | String | 通话记录录音 |
jobFinished | boolean | 任务是否已完成 |
sign | String | 回调签名(需联系开通) |
dateTime | String | GMT格式日期(签名计算-需联系开通) |
响应:
success
任务状态回调
功能说明:
任务运行中动态状态变更回调,包含如下状态:手动暂停,自动暂停 ,线路欠费 ,短信欠费 ,任务完成 需另外开通和配置
请求对象示例:
{
"code": 200,
"data": {
"dataType": "JOB_INFO_RESULT",
"data": {
"callJobId": 535,
"companyId": 243,
"jobName": "测试-问题学习",
"jobType": 2,
"startDate": "2018-04-25",
"endDate": "2018-04-25",
"workingStartTime": "09:00:00",
"workingEndTime": "20:00:00",
"breakStartTime": null,
"breakEndTime": null,
"status": 2,
"callType": 1,
"robotDefId": 278,
"sceneDefId": 283,
"sceneRecordId": 280,
"remark": "",
"smsType": 0,
"smsCondition": null,
"smsTemplateId": null,
"userId": 241,
"userName": "步婉",
}
},
"resultMsg": "执行成功",
"errorStackTrace": null
}
请求方法:
公有云:
HttpMethod : post
Content-Type : application/json;charset=utf-8
私有云:
HttpMethod : post
Content-Type : text/plain;charset=utf-8
请求参数:
参数名 | 类型 | 描述 |
---|---|---|
dataType | String | 回调数据类型 |
callJobId | long | 外呼任务Id |
companyId | int | 公司id |
jobName | String | 任务名称 |
jobType | int | 任务类型:1-定时,2-手动 |
startDate | String | 任务开始时间 |
endDate | String | 任务结束时间 |
workingStartTime | String | 可拨打起始时间 |
workingEndTime | String | 可拨打结束时间 |
breakStartTime | int | 暂时停止开始时间,对应百应页面创建任务时的不拨打时段的开始时间,到达这个时间点后,任务将会自动暂停 |
breakEndTime | int | 暂时停止结束时间,对应百应页面创建任务时的不拨打时段的结束时间,到达这个时间点后 任务将会再次启动 |
status | String | 任务状态枚举 |
callType | int | 主叫号码类型:0-手机号,1-固话,2-无主叫 |
robotDefId | int | 机器人id |
sceneDefId | int | 场景id |
sceneRecordId | int | 场景录音id |
remark | String | 备注 |
smsType | int | 是否发送挂机短信:0-否,1-是 |
smsCondition | String | 发送挂机短信条件,json格式 |
smsTemplateId | long | 发送挂机短信的模板 |
userId | int | 创建人id |
userName | String | 创建人名称 |
响应:
success
手动修改客户意向等级回调接口
功能说明:
当在crm端手动修改客户意向等级后,百应会自动调用回调程序向用户配置的回调地址,发送本次通话详情。
请求对象示例:
{
"code": 200,
"data": {
"dataType": "CALL_INSTANCE_RESULT",
"data": {
"taskResult": [{
"companyId": 241,
"sceneInstanceId": 2016,
"resultName": "客户意向等级",
"resultValue": "B"
}]
}
},
"resultMsg": "成功",
"errorStackTrace": null
}
请求方法:
公有云:
HttpMethod : post
Content-Type : application/json;charset=utf-8
私有云:
HttpMethod : post
Content-Type : text/plain;charset=utf-8
请求参数:
参数名 | 类型 | 描述 |
---|---|---|
dataType | String | 回调类型 |
sceneInstanceId | long | 任务实例id |
taskResult | String | 任务结果分析 |
resultName | String | 客户意向等级名 |
resultValue | String | 客户意向等级值 |
响应:
success
呼入回调接口
功能说明:
当一次通话完成后,百应机器人会自动调用回调程序向用户配置的回调地址,发送本次通话详情。 呼入回调数据格式与外呼格式保持高度一致,仅个别字段名称有所变更
请求对象示例:
{
"code": 200,
"data": {
"dataType": "INBOUND_CALL_INSTANCE_RESULT",
"data": {
"sceneInstance": {
"inboundInstanceId": 1091,
"companyId": 1,
"callJobId": 98,
"customerId": 22142595,
"customerTelephone": "1010",
"customerName": "未知呼入客户",
"status": 2,
"finishStatus": 0,
"duration": 27,
"chatRound": 3,
"startTime": "2019-01-24 15:27:39",
"endTime": "2019-01-24 15:28:09",
"calleePhone": "057126881788",
"luyinOssUrl": "https://byrobot-test.oss-cn-hangzhou.aliyuncs.com/InboundRobotCommunicate/1091/20190124-152809_1010.wav",
"userLuyinOssUrl": "https://byrobot-test.oss-cn-hangzhou.aliyuncs.com/InboundRobotCommunicate/1091_user.wav",
"properties": "{}",
"readStatus": null,
"robotDefId": 1155,
"sceneDefId": 1165,
"sceneRecordId": 1149,
"transferStatus": null,
"transferInfo": null,
"userLevel": null,
"hangUp": 1,
"callbacked": null,
"propertiesMap": {
"客户名称": "未知呼入客户",
"联系方式": "1010"
}
},
"taskResult": [
{
"sceneInstanceResultId": 459,
"companyId": 1,
"callJobId": null,
"sceneInstanceId": 1091,
"resultName": "客户意向等级",
"resultValue": "B级(一般)",
"artificialResultValue": "B级(一般)",
"artificialChanged": false,
"resultDesc": "拒绝次数 <= 1 次 并且 命中业务问题 >= 1",
"resultValueAlias": "B",
"resultLabels": null,
"resultValueNew": "B级(可能有意向)"
},
{
"sceneInstanceResultId": 460,
"companyId": 1,
"callJobId": null,
"sceneInstanceId": 1091,
"resultName": "客户关注点",
"resultValue": "位置",
"artificialResultValue": "位置",
"artificialChanged": false,
"resultDesc": null,
"resultValueAlias": null,
"resultLabels": null,
"resultValueNew": null
},
{
"sceneInstanceResultId": 461,
"companyId": 1,
"callJobId": null,
"sceneInstanceId": 1091,
"resultName": "客户标签",
"resultValue": "[7,8,9]",
"artificialResultValue": null,
"artificialChanged": false,
"resultDesc": null,
"resultValueAlias": null,
"resultLabels": [],
"resultValueNew": null
}
],
"phoneLog": {
"phoneLogs": [
{
"sceneInstanceLogId": 1693,
"sceneInstanceId": 1091,
"companyId": 1,
"robotDefId": 1155,
"decisionId": 502993,
"speaker": "AI",
"content": "哎,您好,拱墅区 中大银泰城边上有个首付50万左右的精装公寓你考虑吗?",
"userMean": "",
"userMeanDetail": null,
"aiUnknown": false,
"answerStatus": null,
"studyStatus": null,
"startTime": 0,
"endTime": 0,
"knowledgeBaseId": null,
"correctionContent": null
},
{
"sceneInstanceLogId": 1694,
"sceneInstanceId": 1091,
"companyId": 1,
"robotDefId": 1155,
"decisionId": 502993,
"speaker": "ME",
"content": "呃,不考虑",
"userMean": "拒绝",
"userMeanDetail": "[{\"score\":-1,\"answer\":\"拒绝\",\"ask\":\"不考虑\",\"knowledgeBaseId\":33230}]",
"aiUnknown": false,
"answerStatus": 1,
"studyStatus": null,
"startTime": 6830,
"endTime": 7950,
"knowledgeBaseId": null,
"correctionContent": null
}
],
"luyinOssUrl": "https://byrobot-test.oss-cn-hangzhou.aliyuncs.com/InboundRobotCommunicate/1091/20190124-152809_1010.wav"
},
"sign": null,
"dateTime": "Thu, 24 Jan 2019 07:28:09 GMT"
}
},
"resultMsg": "成功",
"errorStackTrace": null
}
请求方法:
公有云:
HttpMethod : post
Content-Type : application/json;charset=utf-8
私有云:
HttpMethod : post
Content-Type : text/plain;charset=utf-8
请求参数:
1.dataType: "INBOUND_CALL_INSTANCE_RESULT" (固定,标识是呼入回调), 2.sceneInstance: (通话记录相关元数据)
参数名 | 类型 | 描述 |
---|---|---|
inboundInstanceId | long | 通话记录id |
companyId | int | 公司ID |
customerId | long | 客户Id |
customerTelephone | String | 客户手机号 |
customerName | String | 客户名称 |
status | int | 电话实例状态 0:未开始 1:进行中 2:已完成 |
finishStatus | int | 已完成通话状态枚举 |
duration | int | 通话时长 |
chatRound | int | 通话轮次 |
startTime | Date | 通话开始时间 |
endTime | Date | 通话结束时间 |
calleePhone | String | 被叫号码 |
luyinOssUrl | String | 通话录音(包含Ai和客户) |
userLuyinOssUrl | String | 通话录音(只包含客户) |
properties | String | 通话记录携带的参数(json字符串),包含话术变量和自定义参数,用户可以传入自己的变量,百应回调会传回给用户 |
readStatus | int | 是否已读,产品中的通话记录已读未读状态 0:未读 1:已读 |
robotDefId | int | 机器人Id |
sceneDefId | int | 场景Id |
sceneRecordId | int | 场景录音id |
transferStatus | int | 转人工状态:0-无转接,1-成功,2-失败 |
transferInfo | String | 转人工详情 |
callbacked | int | 是否回调 |
hangUp | int | 挂机人 0:AI 1:用户 |
3.taskResult(通话分析的结果)
参数名 | 类型 | 描述 |
---|---|---|
sceneInstanceResultId | long | 通话记录结果Id |
sceneInstanceId | long | 通话记录Id(对应inboundInstanceId) |
callJobId | int | 任务ID |
resultName | String | 通话记录结果类型名 |
resultValue | String | 通话记录结果值 |
artificialResultValue | String | 通话结果人工标注值(一般指人工标注意向等级) |
artificialChanged | boolean | 是否进行过人工标注修改 |
resultDesc | String | 结果描述 |
resultValueAlias | String | 分析结果别名(resultName为【客户意向等级】时标注值为意向级别 A,B,C,D,E,F) |
resultLabels | List | IntegerStringBO对象中存储一个int类型参数,一个String类型参数,resultName为【客户标签】时存储客户标签 |
resultValueNew | String | 客户意向等级的表述(文案与crm对应) |
4.phoneLog(对话详情)
参数名 | 类型 | 描述 |
---|---|---|
sceneInstanceLogId | long | 通话记录日志Id |
sceneInstanceId | Long | 通话记录Id(对应callInstanceId) |
companyId | int | 公司ID |
robotDefId | int | 机器人Id |
decisionId | int | 对应决策Id |
speaker | String | 说话人 ME:用户 AI:机器人 |
content | String | 说话内容 |
userMean | String | 用户说话语义,客户说话内容命中的话术节点分支或知识库问题 |
userMeanDetail | String | 用户说话语义详情,客户说话内容命中详情(包括命中的用户说话内容和话术节点分支或知识库分支问题) |
aiUnknown | int | 是否是ai无法应答的问题,1-是,0-否 |
answerStatus | int | 回答问题状态:0-分支,1-问题,2-忽略,表示命中流程分支或者知识库问题 |
studyStatus | int | 学习状态:0-未学习,1-已学习,在问题学习板块里面的问题学习状态(默认为空) |
startTime | Date | 说话的开始时间,本句话在录音中的开始时间 |
endTime | Date | 说话的结束时间,本句话在录音中的结束时间 |
correctionContent | String | 通话记录纠错内容,通话记录中的人工纠错功能的纠错内容 |
luyinOssUrl | String | 通话记录录音 |
sign | String | 回调签名(需联系开通) |
dateTime | String | GMT格式日期 |
响应:
success
查询回调失败记录
功能说明:
通过接口可以查询时间段内调用用户回调接口失败的记录
返回对象示例:
{
"code":200,
"data":{
"pageNum":1,
"pageSize":1000,
"total":5,
"pages":1,
"list":[
{
"customerTelephone":"13777482716",
"callInstanceId":13,
"callJobId":9,
"callerTime":"2019-03-20 11:22:33"
},
{
"customerTelephone":"13777482716",
"callInstanceId":12,
"callJobId":9,
"callerTime":"2019-03-20 11:22:33"
},
{
"customerTelephone":"13777482716",
"callInstanceId":11,
"callJobId":9,
"callerTime":"2019-03-20 11:22:33"
},
{
"customerTelephone":"18767114326",
"callInstanceId":101705174,
"callJobId":29463,
"callerTime":"2019-03-20 17:20:58"
},
{
"customerTelephone":"18767114326",
"callInstanceId":101705181,
"callJobId":29465,
"callerTime":"2019-03-20 17:28:57"
}
]
},
"resultMsg":"查询成功",
"errorStackTrace":null,
"requestId":null
}
请求:
URL:http://api.byrobot.cn/openapi/v1/callBack/queryUnCallBack
请求方法:
GET
请求参数:
参数名 | 类型 | 是否必须 | 描述 | 示例 |
---|---|---|---|---|
companyId | int | 是 | 公司Id | 1 |
callJobId | int | 否 | 任务ID,如果不传该字段查询该公司下所有回调失败的记录 | 1 |
dataType | int | 是 | 回调类型, 0:呼出结果回调,1:呼入结果回调 | 0 |
startDate | Date | 是 | 查询开始时间 | "2017-10-19" |
endDate | Date | 是 | 查询结束时间 | "2017-10-19" |
pageNum | int | 否 | 第几页,默认1 | 1 |
pageSize | int | 否 | 页面大小,选填,默认100,取值范围1-500 | 10 |
响应:
参数名 | 类型 | 描述 |
---|---|---|
code | int | 响应码 |
pageNum | int | 当前分页数 |
pageSize | int | 当前分页数据条数 |
total | int | 数据总条数 |
pages | int | 分页总数 |
list | list | 查询结果集 |
callJobId | int | 任务id |
customerTelephone | String | 客户手机号 |
callInstanceId | long | 通话记录ID |
callerTime | time | 拨打时间 |
响应:
success