1、通话报表数据查询接口
注意:本接口的使用需要进行接口鉴权
a、请求
-
HTTP请求方式:POST
-
请求url:{HOST}/v20180426/report/getReportData/{ACCOUNTID}?sig={SIG}
-
请求时请将{HOST}换成对接数据查询中获取到的请求域名,{ACCOUNTID}替换为账户编号,{SIG}是根据鉴权规则生成的,请看鉴权文档,查看具体的生成规则
-
鉴权方式:接口鉴权
-
请求频次限制:1次/分钟
b、适用报表
通话报表-坐席报表-坐席工作量报表,工单整体分析报表,工单座席工作量报表,呼出时间趋势报表,技能组对比报表
c、时间查询
日报,月报
d、请求体
字段 | 是否必填 | 值 |
reportType | 是 | call_report_agent:坐席工作量报表 call_report_callout_time:呼出时间趋势报表 business_report_analyse:工单整体分析报表 business_report_agent:工单坐席工作量报表 call_report_queue:技能组对比报表 |
yearReport | 是 | 2020 |
monthReport | 是 | 查询月报必传(示例:查询1月报表可传'01') |
dayReport | 是 | 查询日报必传(示例:查询1号报表可传'01') |
timeType | 是 | day:日报 month:月报 |
e、响应体:
{
"success":true,
"tableHeader": {}, // 报表表头字段说明
"data":[] //报表数据
}
2、通话座席工作量报表日报详情查询接口
查询指定座席一天内的详细报表数据。
报表时间ReportTime
表示[ReportTime, RportTime + 30分钟)
这样一个时间段,即半小时时间段的开始时间。
a、请求
- HTTP请求方式: POST
- 请求url: {HOST}/v20180426/report/getAgentReportDetails/{ACCOUNTID}?sig={SIG}
- 请求时请将{HOST}换成对接数据查询中获取到的请求域名,{ACCOUNTID}替换为账户编号,{SIG}是根据鉴权规则生成的,请看鉴权文档,查看具体的生成规则
- 鉴权方式:接口鉴权
- 请求频次限制: 1次/分钟
b、请求体:
参数 | 是否必填 | 类型 | 描述 |
agent | 是 | 字符串 | YYYY, 例如2020 |
year | 是 | 字符串 | 座席ID或座席工号 |
month | 是 | 字符串 | MM, 例如08 |
day | 是 | 字符串 | DD, 例如01 |
zeroFill | 否 | 布尔类型 | 是否按1天48个半小时时段补全数据 |
c、响应
响应体:
字段 | 含义 |
code | 响应码 |
message | 响应信息 |
success | 是否成功 |
tableHeader | 表头,包含了字段说明 |
data | 报表数据 |
响应码:
代码 | 含义 |
200 | 请求成功 |
400 | 请求参数错误 |
401 | 鉴权错误 |
403 | 接口访问频次达到上限 |
500 | 服务器错误 |
d、返回示例:
{
"success": true,
"tableHeader": {
"_id": "521aca13f16743b15374a1f1",
"Account": "system",
"Config": [
{
"name": "show_time",
"displayname": "时间",
"show": true,
"order": "1"
},
{
"name": "CallInAccessCount",
"displayname": "呼入振铃数",
"show": true,
"order": "2"
},
{
"name": "CallInAcceptCount",
"displayname": "呼入接通数",
"show": true,
"order": "3"
},
// ...
],
},
"data": [
{
"ReportTime": "2020-08-26 00:00:00",
"CallInAcceptCount": 0,
"CallInAccessCount": 0,
"CallOutAcceptCount": 0,
"CallOutAccessCount": 0,
"TransferAcceptCount": 0,
"TransferUnacceptCount": 0,
"RingingTimeLength": 0,
"HoldTimeLength": 0,
"ConsultTimeLength": 0,
"ThreeWayCallTimeLength": 0,
"CallInTimeLength": 0,
"CallOutTimeLength": 0,
"LOGIN_TIME_LENGTH": 0,
"BUSY_TIME_LENGTH": 0,
"IDLE_TIME_LENGTH": 0,
"STATE2_TIME_LENGTH": 0,
"STATE3_TIME_LENGTH": 0,
"STATE4_TIME_LENGTH": 0,
"STATE5_TIME_LENGTH": 0,
"STATE6_TIME_LENGTH": 0,
"STATE7_TIME_LENGTH": 0,
"STATE8_TIME_LENGTH": 0,
"STATE9_TIME_LENGTH": 0,
"STATE99_TIME_LENGTH": 0,
"NormalTransferTimeLength": 0,
"DialTransferTimeLength": 0,
"IncomingRingingTimeLength": 0,
"OutgoingWaitingTimeLength": 0,
"OutgoingAbandonCount": 0,
"HoldSoftphoneCount": 0,
"HoldSoftphoneTimeLength": 0,
"RollOutCount": 0,
"RepeatCallInBy24hCount": 0,
"RepeatCallInBy48hCount": 0,
"RedirectAgentDeal": 0,
"RedirectAgentNotDeal": 0,
"RedirectGroupDeal": 0,
"RedirectGroupNotDeal": 0,
"CallInAcceptRate": "0%",
"IntegratedCallInAcceptRate": "0%",
"CallInAverageTimeLength": 0,
"CallOutAverageTimeLength": 0,
"AverageHourCallCount": 0,
"CallInNotDealCount": 0,
"TransferTimeLength": 0,
"TransferCount": 0,
"TransferAcceptRate": "0%"
},
// ...
]
}
3、会话数时间趋势报表
报表→在线客服报表→会话报表→会话数时间趋势报表
a.请求
-
请求方式:POST
-
请求URL:{HOST}/v20180426/reportIM/queryImSessionTimeReport/{ACCOUNTID}?sig=sig
-
请求时请将{HOST}换成对接数据查询中获取到的请求域名,{ACCOUNTID}替换为账户编号,SIG是根据鉴权规则生成的,请看鉴权文档,查看具体的生成规则
-
鉴权方式:接口鉴权
-
频次限制:20次/每分钟
-
请求示例:http://apis.7moor.com/v20180426/reportIM/queryImSessionTimeReport/N000000xxxxx?sig=DBD2D28F3D895AAD1572925AAE50AEA8
b.请求体
字段 | 是否必填 | 值 |
---|---|---|
yearReport | 是 | 2020 |
monthReport | 是 | 查询月报必传(示例:查询1月报表可传'01') |
dayReport | 是 | 查询日报必传(示例:查询1号报表可传'01') |
timeType | 是 | day:日报 month:月报 |
selectedAccessIdList | 否 | 接入号id |
c.返回值
字段 | 含义 |
---|---|
code | 响应码 |
message | 响应信息 |
data | 返回数据,JSON格式。sum:报表合计信息记录,description:报表表头信息描述,data:报表普通记录信息 |
d.请求体示例
{
"yearReport":"2020",
"monthReport":"08",
"dayReport":"17",
"timeType":"day",
"selectedAccessIdList":["4fb75c90-b81d-11e9-b498-3531d7fbe0f8"]
}
4、坐席工作量报表
报表→在线客服报表→坐席报表→坐席工作量报表
a、请求
-
请求方式:POST
-
请求URL:{HOST}/v20180426/reportIM/queryImAgentReport/{ACCOUNTID}?sig=sig
-
请求时请将{HOST}换成对接数据查询中获取到的请求域名,{ACCOUNTID}替换为账户编号,SIG是根据鉴权规则生成的,请看鉴权文档,查看具体的生成规则
-
鉴权方式:接口鉴权
-
频次限制:20次/每分钟
-
请求示例:http://apis.7moor.com/v20180426/reportIM/queryImAgentReport/N000000xxxxx?sig=DBD2D28F3D895AAD1572925AAE50AEA8
b、请求体
字段 | 是否必填 | 值 |
---|---|---|
yearReport | 是 | 2020 |
monthReport | 是 | 查询月报必传(示例:查询1月报表可传'01') |
dayReport | 是 | 查询日报必传(示例:查询1号报表可传'01') |
timeType | 是 | day:日报 month:月报 |
c、返回值
字段 | 含义 |
---|---|
code | 响应码 |
message | 响应信息 |
data | 返回数据,JSON格式。sum:报表合计信息记录,description:报表表头信息描述,data:报表普通记录信息 |
d、请求体示例
{
"yearReport":"2020",
"monthReport":"08",
"dayReport":"17",
"timeType":"day"
}
5、客服响应统计报表
报表→在线客服报表→坐席报表→客服响应统计报表
a、请求
-
请求方式:POST
-
请求URL:{HOST}/v20180426/reportIM/queryImAgentResponseReport/{ACCOUNTID}?sig=sig
-
请求时请将{HOST}换成对接数据查询中获取到的请求域名,{ACCOUNTID}替换为账户编号,SIG是根据鉴权规则生成的,请看鉴权文档,查看具体的生成规则
-
鉴权方式:接口鉴权
-
频次限制:20次/每分钟
-
请求示例:http://apis.7moor.com/v20180426/reportIM/queryImAgentResponseReport/N000000xxxxx?sig=DBD2D28F3D895AAD1572925AAE50AEA8
b、请求体
字段 | 是否必填 | 值 |
---|---|---|
yearReport | 是 | 2020 |
monthReport | 是 | 查询月报必传(示例:查询1月报表可传'01') |
dayReport | 是 | 查询日报必传(示例:查询1号报表可传'01') |
timeType | 是 | day:日报 month:月报 |
c、返回值
字段 | 含义 |
---|---|
code | 响应码 |
message | 响应信息 |
data | 返回数据,JSON格式。sum:报表合计信息记录,description:报表表头信息描述,data:报表普通记录信息 |
d、请求体示例
{
"yearReport":"2020",
"monthReport":"08",
"dayReport":"17",
"timeType":"day"
}
6、坐席满意度报表
报表→在线客服报表→坐席报表→坐席满意度报表
a、请求
-
请求方式:POST
-
请求URL:{HOST}/v20180426/reportIM/queryImCsrReport/{ACCOUNTID}?sig=sig
-
请求时请将{HOST}换成对接数据查询中获取到的请求域名,{ACCOUNTID}替换为账户编号,SIG是根据鉴权规则生成的,请看鉴权文档,查看具体的生成规则
-
鉴权方式:接口鉴权
-
频次限制:20次/每分钟
-
请求示例:http://apis.7moor.com/v20180426/reportIM/queryImCsrReport/N000000xxxxx?sig=DBD2D28F3D895AAD1572925AAE50AEA8
b、请求体
字段 | 是否必填 | 值 |
---|---|---|
yearReport | 是 | 2020 |
monthReport | 是 | 查询月报必传(示例:查询1月报表可传'01') |
dayReport | 是 | 查询日报必传(示例:查询1号报表可传'01') |
timeType | 是 | day:日报 month:月报 |
c、返回值
字段 | 含义 |
---|---|
code | 响应码 |
message | 响应信息 |
data | 返回数据,JSON格式。sum:报表合计信息记录,description:报表表头信息描述,data:报表普通记录信息 |
d、请求体示例
{
"yearReport":"2020",
"monthReport":"08",
"dayReport":"17",
"timeType":"day"
}
在线接口报错返回
{
"code":400,
"message": "timeType_only_supports_month_or_day_query"
}
{
"code": 400,
"message": "query_monthly_report_need_year_and_month"
}
7.技能组报表
报表→在线客服报表→技能组报表
a、请求
- 请求方式:POST
- 请求URL:{HOST}/v20250122/skillGroup/skillGroupReportInterface/{ACCOUNTID}?sig=sig
- 请求时请将{HOST}换成对接数据查询中获取到的请求域名,{ACCOUNTID}替换为账户编号,SIG是根据鉴权规则生成的,请看鉴权文档,查看具体的生成规则
- 鉴权方式:接口鉴权
- 频次限制:20次/每分钟
b、请求体
字段 | 类型 | 是否必填 | 描述 |
---|---|---|---|
reportType | string | 是 | 工作量对比:cc_im_topeer_workload_report; 工作质量对比: cc_im_topeer_quality_report; 排队情况:cc_im_topeer_wait_report |
action | string | 是 | 工作量对比:imReport.queryImToPeerWorkloadReport; 工作质量对比: imReport.queryImToPeerCsrReport; 排队情况:imReport.queryImToPeerQueueReport |
timeType | string | 是 | day:日报 ; month:月报 |
yearReport | string | 是 | 2025 |
monthReport | string | 是 | 查询月报必传(示例:查询1月报表可传'01') |
dayReport | string | 是 | 查询日报必传(示例:查询1号报表可传'01') |
timePeriodStart | string | 否 | 00:30 |
timePeriodEnd | string | 否 | 01:00 |
timePeriod | bool | 要传timePeriodStart、timePeriodEnd时为必填 | true |
peerId | Array | 否 | 技能组编号 |
注意:reportType和action为一一对应关系,否则接口会报错
c、请求示例
{
"yearReport":"2025",
"monthReport":"03",
"dayReport":"06",
"timeType":"day",
"timePeriod":true,
"timePeriodStart":"00:00",
"timePeriodEnd":"23:55",
"reportType":"cc_im_topeer_wait_report",
"action":"imReport.queryImToPeerQueueReport",
"peerId":["10085113","10082813"]
}
d、不同报表的返回示例
- 工作量对比
字段 | 功能名称 | 页面解释 |
---|---|---|
replyCount | 回复消息数 | 座席回复访客的消息总数 |
accessSessionCount | 接入座席会话数 | 系统分配给该技能组下座席接待的会话数 |
inviteSessionCount | 会话邀请成功数 | 该技能组下座席针对正在浏览网站的访客发起会话邀请且访客有回复的会话总数 |
sessionCompleteCount | 完成会话数 | 该技能组下座席结束的所有会话数 |
sessionCompleteRate | 会话完成率 | (完成会话数 + 转出会话数) / (接入会话数 + 会话邀请成功数 + 转入会话数) (注意:若在所选时间段内结束了未在该段时间内创建的会话,将可能导致会话完成率大于100%) |
sessionAverageTimeLength | 平均会话时长 | 该技能组下座席的平均会话时长,计算方法:A1+A2+A3+……+An/n【An表示单个座席的平均会话时长,n表示技能组下座席个数】 |
averageFirstResponseTimeLength | 平均首次响应时长 | 该技能组下座席的平均首次回复时长,计算方法:A1+A2+A3+……+An/n 【An=单个座席的平均首次相应时长,n=技能组下座席个数】 |
sessionRollInCount | 转入会话数 | 从其它技能组转给当前技能组的会话数 |
sessionRollOutCount | 转出会话数 | 从当前技能组转给其它技能组的会话数 |
lostSessionCount | 流失会话数 | 由以下几种情况导致访客离开的会话总数:座席不在线+座席未打开领取开关+填写询前表单时离开+会话流程结束(若首次被机器人接待,转人工是否成功均不算流失会话) |
averageReplyTimeLength | 平均响应时长 | 指统计时间内,技能组的坐席在会话中响应访客时间的平均值,可用于评估技能组的回复速率,不包含留言 |
- 工作质量对比
字段 | 功能名称 | 页面解释 |
---|---|---|
session_complete_count | 会话总数 | 该技能组下所有座席处理完毕已关闭的会话数 |
agent_invite_csr_count | 邀请评价会话数 | 该技能组下座席主动邀请访客评价的数量(一次会话中,座席点击了多次邀请按钮,只算作一次邀请数) |
inviteSessionCount | 会话邀请成功数 | 该技能组下座席针对正在浏览网站的访客发起会话邀请且访客有回复的会话总数 |
csr_total_count | 总评价数 | 该技能组下面访客做出的满意度评价总数 |
sessionCompleteRate | 会话完成率 | (完成会话数 + 转出会话数) / (接入会话数 + 会话邀请成功数 + 转入会话数) (注意:若在所选时间段内结束了未在该段时间内创建的会话,将可能导致会话完成率大于100%) |
csr_rate | 平均参评率(旧) | 总评价数/会话总数 (注意:当访客主动评价了会话,而此会话在所选时间段内没有结束,将可能导致参评率大于100%) |
tableHeader | 字段表配置 | 表头,含字段说明(每个满意度相关字段(如8839ea10-cfd3-11ee-91a2-3b6e476c15c0 ,各账号不同)都有一个对应的满意度名称。可以通过查看tableHeader.Config数组来找到这些对应关系) |
示例:
{
"tableHeader": {
"_id": "5b67deba704a6bd5e7a2f436",
"Account": "system",
"Type": "cc_im_topeer_quality_report",
"ReportName": "技能组工作质量对比报表",
"Config": [
{
"order": "1",
"name": "peerId",
"displayname": "技能组",
"show": true,
"formulaVar": false
},
{
"order": "2",
"name": "session_complete_count",
"displayname": "会话总数",
"show": true
},
{
"order": "3",
"name": "agent_invite_csr_count",
"displayname": "邀请评价会话数",
"show": true
},
{
"order": "4",
"name": "csr_total_count",
"displayname": "总评价数",
"show": true
},
{
"order": "5",
"name": "csr_rate",
"displayname": "平均参评率(旧)",
"show": true
},
{
"name": "8839ea10-cfd3-11ee-91a2-3b6e476c15c0",
"displayname": "满意12",
"order": 6,
"show": true
},
{
"name": "8839ea10-cfd3-11ee-91a2-3b6e476c15c0_rate",
"displayname": "满意12占比",
"order": 7,
"show": true
}
]
},
{
"invite_csr_count": 1,
"session_complete_count": 38,
"system_invite_csr_count": 0,
"agent_invite_csr_count": 1,
"csr_total_count": 1,
"8839ea10-cfd3-11ee-91a2-3b6e476c15c0": 1,
"a23c3d50-cfd3-11ee-91a2-3b6e476c15c0": 0,
"39627bd0-2223-11ef-9ada-535c83a66ba6": 0,
"cd720ab0-69cd-11ef-ac7f-ab01d5bed7c8": 0,
"ce039c50-69cd-11ef-ac7f-ab01d5bed7c8": 0,
"csr_rate": "2.6",
"8839ea10-cfd3-11ee-91a2-3b6e476c15c0_rate": "100.0",
"a23c3d50-cfd3-11ee-91a2-3b6e476c15c0_rate": "0.0",
"39627bd0-2223-11ef-9ada-535c83a66ba6_rate": "0.0",
"cd720ab0-69cd-11ef-ac7f-ab01d5bed7c8_rate": "0.0",
"ce039c50-69cd-11ef-ac7f-ab01d5bed7c8_rate": "0.0",
"peerId": "10019719"
}//...
}
- 排队情况
字段 | 功能名称 | 页面解释 |
---|---|---|
queueCount | 排队总会话数 | 进入到该技能组的会话数(包括接入座席会话数+排队等待会话数+排队放弃数) |
queueAccessCount | 接入座席会话数 | 系统分配给该技能组下座席接待的会话数 |
queueGiveupCount | 排队放弃会话数 | 排队时长大于0且排队放弃的会话数 |
queueGiveup5LessCount | 5秒内放弃数 | 进入到排队状态下5秒内放弃的会话数 |
queueGiveup15LessCount | 5到15秒放弃数 | 进入到排队状态下5到15秒放弃的会话数 |
queueAccessAvgTimeLength | 平均排队等待时长 | 总排队时长/接入座席会话数 (总排队时长:接入座席的会话排队等待总时长) |
maxQueueAccessTimeLength | 最长排队等待时长 | 接入排队的客户从开始排队到进入会话时间的最大值 |
queueGiveupAvgTimeLength | 平均放弃时长 | 访客排队放弃的平均时长,计算方式:排队放弃总时长 / 总排队放弃数 |
maxQueueGiveupTimeLength | 最长放弃时长 | 访客咨询从排队到放弃排队的最长等待时间。计算方法:取A1......An客户咨询到排队放弃最长排队时长中最大值 |
minQueueGiveupTimeLength | 最短放弃时长 | 客户咨询从排队到放弃排队的最短等待时间。计算方法:取A1......An客户咨询到排队放弃最短排队时长中最小值 |
accessRate | 接入率 | 接入数/排队总会话数 |
queueGiveupRate | 放弃率 | 放弃数/排队总会话数 |
noAccessCount | 未接入会话数 | 排队时长>0并且未触发排队放弃的会话数 |