所有api接口都需要鉴权规则,具体详情前往新平台鉴权规则查看
目录
1.座席功能接口
1.1 查询账户下技能组列表
请求参数
请求示例
curl --location --request POST 'http://v7openapi.7moor.com/openapi/v1/base/queue/list' \
--header 'm7-appkey: 2000100' \
--header 'm7-nonce: 111922' \
--header 'm7-sign: lmwwrahWCRO0x+3DhlMMVgB2V5ytUXp5GxbLTW9wOig=' \
--header 'm7-timestamp: 1609226863021' \
--header 'content-type: application/json' \
--data-raw '{
}'
返回结果
字段名称 | 字段类型 | 是否必传 | 字段描述 |
---|---|---|---|
success | boolean | 是 | 是否成功 true(成功) false(失败) |
code | string | 是 | 状态码 "200" 成功 |
message | string | 是 | 状态消息 "200 ok!" 成功 |
data | object[] | 是 | 技能组列表 |
queue
字段名称 | 字段类型 | 是否必传 | 字段描述 |
---|---|---|---|
_id | string | 是 | 技能组id 主键 |
members | object[] | 是 | 技能组成员配置 uid(座席Id) weight(权重) |
account | string | 是 | 账户编号 |
status | string | 是 | 技能组状态 enable(启用) disable(禁用) |
name | string | 是 | 技能组名称 |
createUser | string | 是 | 创建人 |
updateUser | string | 是 | 更新人 |
createTime | string | 是 | 创建时间 |
updateTime | string | 是 | 更新时间 |
callConfig | object | 是 | 通话技能组通话配置 assignStrategy(分配策略) maxLimit(最大并发数) sayJobNumber(是否报工号) timeOut(超时) userFreeTransfer(无空闲座席溢出) waitTime(排队时长) |
webchatConfig | object | 是 | 在线技能组通话配置 assignStrategy(分配策略) maxTime(最大排队时长) maxNum(最大排队人数) |
返回示例
{
"success":true,
"code":"200",
"message":"200 ok!",
"data":[
{
"_id":"10000004",
"members":[
{
"uid":"5fd2f31c63e3080021c14c5b",
"weight":1,
"agentName":"张三",
"agentNumber":"2000"
}
],
"account":"2000103",
"status":"enable",
"name":"默认技能组",
"createTime":"2020-12-11 12:18:36",
"updateTime":"2021-02-24 16:47:22",
"createUser":"system",
"updateUser":"5fd318e94c65ba0011afaa06",
"callConfig":{
"assignStrategy":"rrmemory",
"maxLimit":10,
"sayJobNumber":false,
"timeOut":30,
"userFreeTransfer":false,
"waitTime":"3600"
},
"webchatConfig":{
"assignStrategy":"queue",
"maxNum":0,
"maxTime":"0"
}
}
]
}
1.2 添加技能组
请求参数
字段名称 | 字段类型 | 是否必传 | 字段描述 |
---|---|---|---|
name | string | 是 | 技能组名称 |
members | Object[] | 否 | 分配座席和权重 |
members[].agentNumber | string | 是 | 座席工号 |
members[].weight | int | 是 | 权重 |
callConfig | Object | 否 | 通话配置 |
callConfig.assignStrategy | string | 是 | 分配策略,rrmemory(轮选),random(随机),order(顺序),skill(技能),maxFreeTime(最长空闲时间),leastAnswerTimes(最少接听次数) |
callConfig.sayJobNumber | boolean | 是 | 是否报工号 |
callConfig.userFreeTransfer | boolean | 是 | 无空闲座席时溢出 |
callConfig.maxLimit | int | 是 | 最大排队数 |
callConfig.timeOut | int | 是 | 座席振铃时长 |
callConfig.waitTime | int | 是 | 排队时长 |
webchatConfig | Object | 否 | 在线客服配置 |
webchatConfig.assignStrategy | string | 是 | 分配策略, queue(轮选),random(随机),priority(技能),least(平均) |
webchatConfig.maxNum | int | 是 | 最大排队人数 |
webchatConfig.maxTime | int | 是 | 最大排队时长 |
请求示例
curl --location --request POST 'http://v7openapi.7moor.com/openapi/v1/base/queue/create' \
--header 'm7-appkey: 2000100' \
--header 'm7-nonce: 111922' \
--header 'm7-sign: lmwwrahWCRO0x+3DhlMMVgB2V5ytUXp5GxbLTW9wOig=' \
--header 'm7-timestamp: 1609226863021' \
--header 'content-type: application/json' \
--data-raw '{
"name": "Q101",
"members": [{
"agentNumber": "9527",
"weight": 1
}],
"webchatConfig": {
"assignStrategy": "random",
"maxTime": 20,
"maxNum": 10
}
}'
返回结果
字段名称 | 字段类型 | 是否必传 | 字段描述 |
---|---|---|---|
success | boolean | 是 | 是否成功 true(成功) false(失败) |
code | string | 是 | 状态码 "200" 成功 |
message | string | 是 | 状态消息 "200 ok!" 成功 |
data | object | 是 | 新添加的技能组 |
data._id | string | 是 | 技能组id 主键 |
data.queueId | string | 是 | 同data._id |
data.members | object[] | 是 | 技能组成员配置 uid(座席Id) weight(权重) |
data.account | string | 是 | 账户编号 |
data.status | string | 是 | 技能组状态 enable(启用) disable(禁用) |
data.name | string | 是 | 技能组名称 |
data.createUser | string | 是 | 创建人 |
data.updateUser | string | 是 | 更新人 |
data.createTime | string | 是 | 创建时间 |
data.updateTime | string | 是 | 更新时间 |
data.callConfig | object | 是 | 通话技能组通话配置 assignStrategy(分配策略) maxLimit(最大并发数) sayJobNumber(是否报工号) timeOut(超时) userFreeTransfer(无空闲座席溢出) waitTime(排队时长) |
data.webchatConfig | object | 是 | 在线技能组通话配置 assignStrategy(分配策略) maxTime(最大排队时长) maxNum(最大排队人数) |
返回示例
{
"success": true,
"code": "200",
"message": "requestSuccess",
"data": {
"_id": "10000586",
"account": "2100147",
"createTime": "2021-07-22 18:06:29",
"createUser": "system",
"updateTime": "2021-07-22 18:06:29",
"updateUser": "system",
"members": [
{
"uid": "6059a9a63fa2b7002138b962",
"weight": 1
}
],
"name": "Q101",
"callConfig": {
"assignStrategy": "rrmemory",
"maxLimit": 10,
"sayJobNumber": false,
"timeOut": 30,
"userFreeTransfer": false,
"waitTime": 60
},
"status": "enable",
"webchatConfig": {
"assignStrategy": "random",
"maxTime": 20,
"maxNum": 10
}
}
}
1.3 更新技能组
请求参数
字段名称 | 字段类型 | 是否必传 | 字段描述 |
---|---|---|---|
queueId | string | 是 | 技能组ID |
name | string | 否 | 技能组名称 |
members | Object[] | 否 | 分配座席和权重 |
members[].agentNumber | string | 是 | 座席工号 |
members[].weight | int | 是 | 权重 |
callConfig | Object | 否 | 通话配置 |
callConfig.assignStrategy | string | 是 | 分配策略,rrmemory(轮选),random(随机),order(顺序),skill(技能),maxFreeTime(最长空闲时间),leastAnswerTimes(最少接听次数) |
callConfig.sayJobNumber | boolean | 是 | 是否报工号 |
callConfig.userFreeTransfer | boolean | 是 | 无空闲座席时溢出 |
callConfig.maxLimit | int | 是 | 最大排队数 |
callConfig.timeOut | int | 是 | 座席振铃时长 |
callConfig.waitTime | int | 是 | 排队时长 |
webchatConfig | Object | 否 | 在线客服配置 |
webchatConfig.assignStrategy | string | 是 | 分配策略, queue(轮选),random(随机),priority(技能),least(平均) |
webchatConfig.maxNum | int | 是 | 最大排队人数 |
webchatConfig.maxTime | int | 是 | 最大排队时长 |
请求示例
curl --location --request POST 'http://v7openapi.7moor.com/openapi/v1/base/queue/modify' \
--header 'm7-appkey: 2000100' \
--header 'm7-nonce: 111922' \
--header 'm7-sign: lmwwrahWCRO0x+3DhlMMVgB2V5ytUXp5GxbLTW9wOig=' \
--header 'm7-timestamp: 1609226863021' \
--header 'content-type: application/json' \
--data-raw '{
"queueId": "10000586",
"name": "Q101",
"members": [{
"agentNumber": "9527",
"weight": 2
},{
"agentNumber": "2000",
"weight": 1
}]
}'
返回结果
字段名称 | 字段类型 | 是否必传 | 字段描述 |
---|---|---|---|
success | boolean | 是 | 是否成功 true(成功) false(失败) |
code | string | 是 | 状态码 "200" 成功 |
message | string | 是 | 状态消息 "200 ok!" 成功 |
data | object | 是 | 技能组信息 |
data._id | string | 是 | 技能组id 主键 |
data.members | object[] | 是 | 技能组成员配置 uid(座席Id) weight(权重) |
data.account | string | 是 | 账户编号 |
data.status | string | 是 | 技能组状态 enable(启用) disable(禁用) |
data.name | string | 是 | 技能组名称 |
data.createUser | string | 是 | 创建人 |
data.updateUser | string | 是 | 更新人 |
data.createTime | string | 是 | 创建时间 |
data.updateTime | string | 是 | 更新时间 |
data.callConfig | object | 是 | 通话技能组通话配置 assignStrategy(分配策略) maxLimit(最大并发数) sayJobNumber(是否报工号) timeOut(超时) userFreeTransfer(无空闲座席溢出) waitTime(排队时长) |
data.webchatConfig | object | 是 | 在线技能组通话配置 assignStrategy(分配策略) maxTime(最大排队时长) maxNum(最大排队人数) |
返回示例
{
"success": true,
"code": "200",
"message": "requestSuccess",
"data": {
"name": "Q101",
"members": [
{
"uid": "6059a9a63fa2b7002138b962",
"weight": 2
},
{
"uid": "6037844e455a140021f22c31",
"weight": 1
}
],
"updateTime": "2021-07-22 18:10:15",
"updateUser": "system",
"callConfig": {
"assignStrategy": "rrmemory",
"maxLimit": 10,
"sayJobNumber": false,
"timeOut": 30,
"userFreeTransfer": false,
"waitTime": 60
},
"_id": "10000586"
}
}
1.4 删除技能组
请求参数
字段名称 | 字段类型 | 是否必传 | 字段描述 |
---|---|---|---|
queueId | string | 是 | 技能组ID |
请求示例
curl --location --request POST 'http://v7openapi.7moor.com/openapi/v1/base/queue/delete' \
--header 'm7-appkey: 2100147' \
--header 'm7-nonce: 111922' \
--header 'm7-sign: lmwwrahWCRO0x+3DhlMMVgB2V5ytUXp5GxbLTW9wOig=' \
--header 'm7-timestamp: 1609226863021' \
--header 'content-type: application/json' \
--data-raw '{
"queueId": "10000586"
}'
返回结果
字段名称 | 字段类型 | 是否必传 | 字段描述 |
---|---|---|---|
success | boolean | 是 | 是否成功 true(成功) false(失败) |
code | string | 是 | 状态码 "200" 成功 |
message | string | 是 | 状态消息 "200 ok!" 成功 |
data | object | 是 | 技能组信息 |
data._id | string | 是 | 技能组id 主键 |
data.members | object[] | 是 | 技能组成员配置 uid(座席Id) weight(权重) |
data.account | string | 是 | 账户编号 |
data.status | string | 是 | 技能组状态 enable(启用) disable(禁用) |
data.name | string | 是 | 技能组名称 |
data.createUser | string | 是 | 创建人 |
data.updateUser | string | 是 | 更新人 |
data.createTime | string | 是 | 创建时间 |
data.updateTime | string | 是 | 更新时间 |
data.callConfig | object | 是 | 通话技能组通话配置 assignStrategy(分配策略) maxLimit(最大并发数) sayJobNumber(是否报工号) timeOut(超时) userFreeTransfer(无空闲座席溢出) waitTime(排队时长) |
data.webchatConfig | object | 是 | 在线技能组通话配置 assignStrategy(分配策略) maxTime(最大排队时长) maxNum(最大排队人数) |
返回示例
{
"success": true,
"code": "200",
"message": "requestSuccess",
"data": {
"_id": "10000586",
"members": [
{
"uid": "6059a9a63fa2b7002138b962",
"weight": 2
},
{
"uid": "6037844e455a140021f22c31",
"weight": 1
}
],
"account": "2100147",
"createTime": "2021-07-22 18:06:29",
"createUser": "system",
"updateTime": "2021-07-22 18:10:15",
"updateUser": "system",
"name": "Q101",
"callConfig": {
"assignStrategy": "rrmemory",
"maxLimit": 10,
"sayJobNumber": false,
"timeOut": 30,
"userFreeTransfer": false,
"waitTime": 60
},
"status": "enable",
"__v": 0
}
}
接口限流说明
为防止接口调用请求过频带来的风险,接口请求具有限流机制 账户限流:20次/分
2 错误码
说明
v7 联络云系统接口通话/座席相关错误码
错误编码 | 中文信息 | 英文信息 | 错误原因 | 解决方案 |
---|---|---|---|---|
6700 | 获取座席在线状态失败 请联系管理员 | get agent online status fail | 服务内部异常 | 发生此问题 请联系管理员 |
6701 | 座席不存在 请选择正确的座席 | agent no found | 账户下不存在该座席 | 请在登录时确保工号无误 |
6702 | 座席已被停用 请选择启用的座席 | agent is disable | 座席被停用 | 请在v7系统中重新启用座席或选择启用的座席 |
6703 | 座席已被删除 请选择正确的座席 | agent is delete | 座席被删除 | 目前v7系统中没有删除座席的按钮 该错误不会出现 |
6704 | 占用licence失败 账户所属席位不足 | agent occupy fail | 账户下licence数量不足 | 1. 在计费购买更多该座席版本的licence数量 2. 登录其他有数量的版本座席 3. 下线其他同版本座席 |
6705 | 座席获取通话能力失败 请联系管理员 | agent online fail | 服务内部异常 | 发生此问题 请联系管理员 |
6706 | 请求头m7-appkey不存在 | no found accountId | 请求头m7-appkey不存在 | 请在请求头中添加m7-appkey参数 |
6707 | 请求体座席工号不存在 | no found agentNumber | 请求体座席工号未传 | 部分接口是需要在请求体中添加agentNumber来定位座席的 请在请求体中传递该参数 |
6708 | 座席未登录 请登录座席 | agent must login | openApi或web端座席不在线 | 需要上线openApi或web端才能正常使用通话能力 |
6709 | 座席置忙失败 请联系管理员 | agent use busy fail | 服务内部异常 | 发生此问题 联系管理员 |
6710 | 座席置闲失败 请联系管理员 | agent use rest fail | 服务内部异常 | 发生此问题 联系管理员 |
6711 | 座席登录状态非法 必须属于PSTN,SIP,WEBRTC的一种 | agent loginType must in PSTN,SIP,WEBRTC | 座席登录状态错误 | 请按照文档中提供的字段进行传递 |
6712 | 座席未在通话中 | agent not calling | 座席必须在通话中,保持,静音状态下才可以使用保持,取消保持,静音,取消静音接口 | 在调用保持或静音时,请校验当前通话状态 |
6713 | 座席正在通话中 请勿重复外呼 | agent is calling | 外呼状态下无法重复外呼 | 在外呼时,请校验当前通话状态 |
6714 | 座席正在通话中 请勿更换状态 | agent not change status | 通话中无法切换座席状态 | 在切换座席状态时,请校验当前通话状态 |
6715 | 座席未在通话中 无法挂机 | unable to hangUp | 不在通话中的座席无法挂机 | 在挂机时,请校验是否在通话中 |
6716 | 座席绑定状态无效 必须属于PSTN,SIP的一种 | agent bindType must in PSTN,SIP | 绑定的号码状态不属于SIP或PSTN | 请传递文档中指定的绑定状态 |
6717 | 账户不存在 | account no found | 账户编号在v7平台中不存在 | 请确保请求头中的m7-appkey是有效的账户编号 |
6718 | 账户已停用 | account disable | 账户已被停用 | 发生此问题 请联系管理员 |
6719 | 同步座席失败 | update agent fail | 服务内部异常 | 发生此问题 请联系管理员 |
6720 | 同步座席SIP号失败 | sync sipNumber fail | 服务内部异常 | 发生此问题 请联系管理员 |
6721 | 座席手机号重复 | agent mobile repeat | 同一个账户下的座席手机号不可以重复 | 1. 绑定其他手机号 2. 将相同座席的手机号去除后再绑定 |
6722 | SIP号未注册 无法绑定 | sip not register | 座席绑定的SIP号码必须是已注册且未绑定的 | 1. 选择已注册且未被座席绑定的SIP号 2. 添加新的SIP号进行注册绑定 |
6723 | 报表查询最大支持3个月 | report max month | 查询外呼号码接通率报表的时间间隔太长 | 请选择小于或等于三个月的时间间隔进行查询 |
6724 | 外呼规则参数只支持0,1 0(随机) 1(地区) | dialOut rule must in 1,2 | 外呼指定外呼策略的参数格式错误 | 请传递文档中指定格式 |
6725 | 外呼回调参数长度超出150个字符的长度 | dialOut extras beyond | 外呼时指定的extras参数过长 | 请传递小于255个字节数的自定义信息 |
6726 | 风控服务异常 | risk control service exception | 服务内部异常 | 发生此问题 请联系管理员 |
6727 | 风控禁止外呼 | risk control dialout forbidden | 外呼频率过高导致号码被风控 | 1. 降低该号码的外呼频率 2. 使用其他的外呼号码 |
6728 | 风控外呼提醒 | risk control dialout warning | 外呼频率过高 即将被风控 | 1. 降低该号码的外呼频率 2. 使用其他的外呼号码 3. 继续外呼 但可能会被风控导致无法外呼 |
6730 | 坐席已锁定 请联系管理员解除锁定 | agent is lock, please contact admin | 连续输入多次错误密码导致的座席锁定 | 发生此问题 请联系管理员 |
6731 | 无法定位座席 缺少座席id或座席工号 | agentId and agentNumber no found | 接口中未传递座席id或座席工号 | 请传递文档中指定格式 |
6732 | 角色参数类型无效 | role invalid param | 创建座席时指定的角色id参数类型错误 | 请使用角色列表中的id进行创建 |
6733 | 呼叫开始时间和呼叫结束时间必填 | startTime and endTime must need | 查询外呼号码接通率报表没有指定开始和结束时间 | 请传递开始和结束时间字段 |
6734 | 呼叫开始时间或呼叫结束时间格式错误 | startTime or endTime format error | ||
6734 | 通话记录查询最大支持10000条 | query cdr list max count 10000 | ||
2017 | 转换extras参数失败 请检查extras参数格式 | conver extras to json fail | 服务内部异常 | 发生此问题 请联系管理员 |
2020 | 该座席所属版本不具备通话能力或该座席所属版本不具备在线咨询能力 | lack of call_toolbar permission or lack of im_change permission | 该座席所属版本不具备通话能力或该座席所属版本不具备在线咨询能力 | 请使用正确的licence版本座席进行登录 |
2021 | 帐户余额不足 | account balance not enough | 账户余额不足 无法进行外呼 | 请联系管理员缴费 |
v7 联络云系统接口其他错误码
错误编码 | 中文信息 | 英文信息 | 错误原因 | 解决方案 |
---|---|---|---|---|
50001 | 路由不存在 | route not found | 请求接口的路径错误 | 请检查接口路径是否和文档中描述的一致 |
50002 | 鉴权失败 | auth failed | 令牌校验算法错误 | 请参阅提供的代码示例进行令牌加密 |
50006 | 服务不存在,请检查service配置 | server not found | 请求接口的服务错误 | 请检查接口路径是否和文档中描述的一致 |
50007 | 请求远程服务出错 | request server error | 服务内部异常 | 发生此问题 请联系管理员 |
50008 | 远程地址不存在 | remote addr 404 | 请求接口的路径错误 | 请检查接口路径是否和文档中描述的一致 |
50009 | 远程请求未知错误 | remote addr error | 服务内部异常 | 发生此问题 请联系管理员 |
50010 | 请求超过频率限制 | limit error | 请求频次过高 | 请降低请求频次 |
50012 | headers: m7-appkey错误 | headers appkey error | 请求头m7-appkey不存在 | 请在请求头中添加m7-appkey参数 |
50013 | headers: m7-timestamp错误 | headers timestamp error | 请求头m7-timestamp不存在 | 请在请求头中添加m7-timestamp参数 |
50014 | 该请求已过时 | headers timestamp overtime | m7-timestamp有效期为五分钟 | 请及时刷新m7-timestamp时间戳 |
50015 | headers: m7-sign错误 | headers sign error | 令牌校验算法错误 | 请参阅提供的代码示例进行令牌加密 |
50016 | headers: m7-nonce错误 | headers nonce error | 随机数不等于6位数 | 请传递6位数随机数 |
50018 | sk配置未找到 | sk not found | 企业密钥不存在 | 请使用正确的账户密钥 |
50019 | 请输入10位秒级时间戳 | timestamp timeout | m7-timestamp格式错误 | 请传递十位时间戳 |
50020 | 频率超限 | account route limited | 请求频次过高 | 请降低请求频次 |
40000 | 参数异常 | param error | 未按照文档指定的参数格式进行传递 导致在服务中校验失败 | 请传递文档指定的参数格式 |