# 工作手机接口文档 V0.1
# 1. 接入指引
# 1.1 接口说明
所有的接口需使用HTTPS协议、JSON数据格式、UTF8编码。格式如下:
请求方式:GET/POST(HTTPS)
请求地址:https://{domain}/workos/endPoint/getBindRsaCode?userCode=USER_CODE&staffCode=STAFF_CODE
{domain}:需要替换成真实的域名地址
请求参数:
...
参数说明:
...
返回结果:
...
参数说明:
...
请求方式,标明接口调用的HTTP方法,区分HttpGet/HttpPost请求。所有的请求都为https协议
请求地址,参数中标注大写的单词,表示为需要替换的变量。在上面的例子中 USER_CODE 及 STAFF_CODE为需要替换的变量,根据实际获取值更新。假如,这里我们获取到的USER_CODE=UID000000000000001,STAFF_CODE=SID00000000001,那么上述的请求在发送时为:
https://api-workos-paas.xzm.cn/workos/endPoint/getBindRsaCode?userCode=UID000000000000001&staffCode=SID00000000001
返回结果/参数说明,标明返回参数示例及说明。特别留意,所有接口返回包里都有code、msg、data。开发者需根据code是否为40000判断是否调用成功(code意义请见 3.全局错误码。而msg仅作参考,后续可能会有变动,因此不可作为是否调用成功的判据),根据msg获取错误信息提示(调用成功时为空),根据data获取成功调用的响应参数
# 2. 设备管理
# 2.1 创建手机终端设备
请求方式:POST
请求地址: https://{domain}
/workos/endPoint/createEndPoint
请求头:
{
"Content-Type": "application/json;charset=UTF-8"
}
请求参数说明
参数名 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
userCode | string | 是 | 用户编号 |
deviceImei1 | string | 是 | 终端设备IMEI 位置:设置--我的设备--全部参数--状态信息--IMEI |
endTime | int64 | 是 | 到期时间,秒级时间戳,无限期则为0 |
请求示例:
{
"userCode": "UID2022042710270001",
"deviceImei1": "868609051409026",
"endTime": 1677569096
}
返回结果参数说明:
参数名 | 参数类型 | 说明 |
---|---|---|
code | int | 错误码;40000表示接口调用成功,没有错误信息 |
msg | string | 接口请求错误信息; 当 code = 40000 时,该值为空 |
data | object |
返回结果示例:
{
"code": 40000,
"msg": "请求成功",
"data": {}
}
# 2.2 获取手机终端设备列表(带分页)
请求方式:GET
请求地址: https://{domain}
/workos/endPoint/getEndPointPageList
请求参数说明
参数名 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
userCode | string | 是 | 用户编号 |
staffCode | string | 否 | 员工编号 |
pageNum | int | 是 | 页码 |
pageSize | int | 是 | 每页数量 |
请求示例:
https://api-workos-paas.xzm.cn/workos/endPoint/getEndPointPageList?userCode=UID2022042710270001&staffCode=SID202202714021000&pageNum=1&pageSize=10
返回结果参数说明:
参数名 | 参数类型 | 说明 |
---|---|---|
code | int | 错误码;40000表示接口调用成功,没有错误信息 |
msg | string | 接口请求错误信息; 当 code = 40000 时,该值为空 |
data | object | |
data.current | int | 当前页码 |
data.pageSize | int | 当前分页大小 |
data.total | int | 数据总条数 |
data.pages | int | 分页总页数 |
data.list | array | 对象列表 |
data.list.endTime | int64 | 终端使用有效期 |
data.list.staffCode | string | 员工编号 |
data.list.mealType | int64 | 套餐类型,1:基础版,2:高级版 |
data.list.activationTime | string | 系统激活时间,UNIX时间戳(毫秒)恢复出厂设置后会改变 |
data.list.bindTime | int64 | 员工绑定时间,秒级时间戳 |
data.list.deviceBrand | string | 设备品牌 |
data.list.deviceCard | string | 设备SIM卡槽数量,默认值为0 |
data.list.deviceCpu | string | 设备CPU |
data.list.deviceDpi | string | 设备屏幕像素密度 |
data.list.deviceHost | string | 设备主机地址HOST |
data.list.deviceImei1 | string | 设备IMEI1,不插卡的时候可以获取到 |
data.list.deviceMemory | string | 设备运行内存 |
data.list.deviceModel | string | 设备型号 |
data.list.deviceResolution | string | 设备屏幕分辨率 |
data.list.deviceSerial | string | 设备手机序列号 |
data.list.deviceStorage | string | 设备总存储空间 |
data.list.systemAndroid | string | 系统android版本 |
data.list.systemLanguage | string | 系统语音,zh:汉语,en:英语 |
data.list.systemOs | string | 系统OS版本,比如小米的MIUI版本号 |
data.list.systemRom | string | 系统ROM版本,即厂商整合的系统版本 |
data.list.systemRoot | string | 系统ROOT状况 |
返回结果示例:
{
"code": 40000,
"msg": "请求成功",
"data": {
"current": 1,
"pages": 4,
"size": 10,
"total": 40,
"list": [
{
"activationTime": "1647941433000",
"bindTime": 1676258790,
"deviceBrand": "Xiaomi",
"deviceCard": "0",
"deviceCpu": "arm64-v8a",
"deviceDpi": "2.88",
"deviceHost": "c5-miui-ota-bd211.bj",
"deviceImei1": "868609051409026",
"deviceMemory": "5663",
"deviceModel": "M2103K19C",
"deviceResolution": "1080*2167",
"deviceSerial": "",
"deviceStorage": "110845",
"endTime": 1701321700,
"mealType":2,
"staffCode": "SID202202714021000",
"systemAndroid": "11",
"systemLanguage": "zh",
"systemOs": "V12.22.3.22.EP.XZM.K19",
"systemRom": "MIUI V12",
"systemRoot": "1"
}
]
}
}
# 2.3 获取手机终端绑定二维码信息
请求方式:GET
请求地址: https://{domain}
/workos/endPoint/getBindRsaCode
请求参数说明
参数名 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
userCode | string | 是 | 用户编号 |
staffCode | string | 是 | 员工编号 |
mealType | int64 | 是 | 套餐类型:1:基础版,2:高级版 |
请求示例:
https://api-workos-paas.xzm.cn/workos/endPoint/getBindRsaCode?userCode=UID2022042710270001&staffCode=SID202202714021000
返回结果参数说明:
参数名 | 参数类型 | 说明 |
---|---|---|
code | int | 错误码;40000表示接口调用成功,没有错误信息 |
msg | string | 接口请求错误信息; 当 code = 40000 时,该值为空 |
data | object | |
data.expiresIn | int64 | 过期时间,秒级时间戳 |
data.rsaCode | string | 二维码信息 |
data.ticket | string | 二维码ticket |
返回结果示例:
{
"code": 40000,
"msg": "请求成功",
"data": {
"expiresIn": 600,
"rsaCode": "EVAQmM1BfHviHX7LljP0/NR2vtCFBg5M6d5zktRHPEo7zd2aWeIYI1wmOKXsl/7yIwbp5O7tGDICcd6ntQvmBgmRIAwlpyZcovT4zqdXul/8fn9abaV8/c1ub+ivERuRKX0/xqL7J8MBg7VXC7xZWP2yzVZkf4pwaisxKF446nV5a2pzHImg7pn/Qm6BGRtxM0uvCPh3wHdgffv9VtvsnHwkKp9z8f61bx6rtooIB+HGCFuWM4mWGauxW+g2UGP8e+lZfOLSYF0LW88w/a0VkCFsC2slWC9cAbzUIfbxLmw7vq70eFMbVLVIpiHiypT+rl8iVgxeM3UXwNjpYjW4XQ==",
"ticket": "717a204a4b0b4e2e8936f8a9d0462339"
}
}
# 2.4 间隔扫描手机终端绑定状态
请求方式:GET
请求地址: https://{domain}
/workos/endPoint/getTicketBindStatus
请求参数说明
参数名 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
userCode | string | 是 | 用户编号 |
staffCode | string | 是 | 员工编号 |
ticket | string | 是 | 二维码ticket |
请求示例:
https://api-workos-paas.xzm.cn/workos/endPoint/getTicketBindStatus?userCode=UID2022042710270001&staffCode=SID202202714021000&ticket=cbe4c74049a641d29212257527c0fb8f
返回结果参数说明:
参数名 | 参数类型 | 说明 |
---|---|---|
code | int | 错误码;40000表示接口调用成功,没有错误信息 |
msg | string | 接口请求错误信息; 当 code = 40000 时,该值为空 |
data | boolean | true绑定、false未绑定 |
返回结果示例:
{
"code": 40000,
"msg": "请求成功",
"data": true
}
# 2.5 获取已绑定终端的员工列表数组
请求方式:GET
请求地址: https://{domain}
/workos/endPoint/getBindStaffCodeList
请求参数说明
参数名 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
userCode | string | 是 | 用户编号 |
请求示例:
https://api-workos-paas.xzm.cn/workos/endPoint/getBindStaffCodeList?userCode=UID2022042710270001
返回结果参数说明:
参数名 | 参数类型 | 说明 |
---|---|---|
code | int | 错误码;40000表示接口调用成功,没有错误信息 |
msg | string | 接口请求错误信息; 当 code = 40000 时,该值为空 |
data[] | string[] | 绑定员工的数组列表 |
返回结果示例:
{
"code": 40000,
"msg": "请求成功",
"data": [
"SID202202714021000"
]
}
# 2.6 修改手机终端设备到期时间
请求方式:POST
请求地址: https://{domain}
/workos/endPoint/updateEndPoint
请求头:
{
"Content-Type": "application/json;charset=UTF-8"
}
请求参数说明
参数名 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
userCode | string | 是 | 用户编号 |
deviceImei1 | string | 是 | 终端设备IMEI |
endTime | int64 | 是 | 到期时间,秒级时间戳,无限期则为0 |
请求示例:
{
"userCode": "UID2022042710270001",
"deviceImei1": "868609051409026",
"endTime": 1896105599
}
返回结果参数说明:
参数名 | 参数类型 | 说明 |
---|---|---|
code | int | 错误码;40000表示接口调用成功,没有错误信息 |
msg | string | 接口请求错误信息; 当 code = 40000 时,该值为空 |
data | object |
返回结果示例:
{
"code": 40000,
"msg": "请求成功",
"data": {}
}
# 2.7 解绑工作手机终端设备
请求方式: GET
请求地址: https://{domain}
/endPoint/unBindEndPoint
请求参数说明
参数名 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
userCode | string | 是 | 用户编号 |
staffCode | string | 是 | 员工编号 |
请求示例:
https://api-workos-paas.xzm.cn/endPoint/unBindEndPoint?userCode=UID2022042710270001&staffCode=SID202202714021000
返回结果参数说明:
参数名 | 参数类型 | 说明 |
---|---|---|
code | int64 | 错误码;40000表示接口调用成功,没有错误信息 |
msg | string | 接口请求错误信息; 当 code = 40000 时,该值为空 |
data | object |
返回结果示例:
{
"code": 40000,
"msg": "请求成功",
"data": {}
}
# 3. 通话相关
# 3.1 获取终端通话数据(带分页)
请求方式:POST
请求地址: https://{domain}
/workos/record/call/getCallRecordPageList
请求头:
{
"Content-Type": "application/json;charset=UTF-8"
}
请求参数说明
参数名 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
userCode | string | 是 | 用户编号 |
staffCodeList | string[] | 是 | 员工编号集合 |
actPhone | string | 否 | 客户号码 |
beginTime | int64 | 是 | 时间范围:开始时间,秒级时间戳 |
endTime | int64 | 是 | 时间范围:结束时间,秒级时间戳 |
callStatus | int | 否 | 接通情况,1:接通,2:未接通 |
callType | int | 否 | 呼叫类型,1:呼入,2:呼出,3:多方通话 |
pageNum | int | 是 | 页码 |
pageSize | int | 是 | 每页数量 |
请求示例:
{
"actPhone": "17686406613",
"beginTime": 1673625600,
"endTime": 1676303999,
"callStatus": 2,
"callType": 2,
"userCode": "UID2022042710270001",
"staffCodeList": [
"SID202202714021000"
],
"pageNum": 1,
"pageSize": 10
}
返回结果参数说明:
参数名 | 参数类型 | 说明 |
---|---|---|
code | int | 错误码;40000表示接口调用成功,没有错误信息 |
msg | string | 接口请求错误信息; 当 code = 40000 时,该值为空 |
data | object | |
data.current | int | 当前页码 |
data.pageSize | int | 当前分页大小 |
data.total | int | 数据总条数 |
data.pages | int | 分页总页数 |
data.list | array | 对象列表 |
data.list.actPhone | string | 接收(去电)号码,即客户号码 |
data.list.answerTime | int64 | 应答时间,秒级时间戳 |
data.list.callType | int | 电话呼叫类型,1:呼入,2:呼出,3:多方通话 |
data.list.createTime | int64 | 创建时间,秒级时间戳 |
data.list.duration | int64 | 通话时长(秒) |
data.list.filePath | string | 录音路径 |
data.list.fileSize | int64 | 录音文件大小,字节单位 |
data.list.hungupTime | int64 | 结束时间,秒级时间戳 |
data.list.staffCode | string | 员工编号 |
data.list.startTime | int64 | 开始时间 |
data.list.userCode | string | 用户编号 |
data.list.uuid | string | 通话标示,当前设备唯一标示 |
返回结果示例:
{
"code": 40000,
"msg": "请求成功",
"data": {
"current": 0,
"pages": 0,
"size": 0,
"total": 0,
"list": [
{
"actPhone": "17686406613",
"answerTime": 1676082537,
"callType": 2,
"createTime": 1676082543,
"duration": 5,
"filePath": "https://local-number-400.oss-cn-beijing.aliyuncs.com/UID2022042710270001/cbf61d0a95e94f25afd4e9a84975d987.mp3",
"fileSize": 18720,
"hungupTime": 1676082542,
"staffCode": "SID202202714021000",
"startTime": 1676082530,
"userCode": "UID2022042710270001",
"uuid": "a365f4e3-0b94-4a05-a8e1-b1d0bbb14861"
}
]
}
}
# 4. 短信相关
# 4.1 获取终端短信数据(带分页)
请求方式:POST
请求地址: https://{domain}
/workos/record/sms/getSmsRecordPageList
请求头:
{
"Content-Type": "application/json;charset=UTF-8"
}
请求参数说明
参数名 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
userCode | string | 是 | 用户编号 |
staffCodeList | string[] | 是 | 员工编号集合 |
actPhone | string | 否 | 客户号码 |
beginTime | string | 是 | 时间范围:开始时间,秒级时间戳 |
endTime | int64 | 是 | 时间范围:结束时间,秒级时间戳 |
phoneType | string | 否 | 客户号码类型,1:手机号,2:其他 |
smsType | int | 否 | 收发类型,1:接收,2:发送 |
pageNum | int | 是 | 页码 |
pageSize | int | 是 | 每页数量 |
请求示例:
{
"actPhone": "13361554921",
"beginTime": 1673625600,
"endTime": 1676303999,
"pageNum": 1,
"smsType": 2,
"staffCodeList": [
"SID202202714021000"
],
"userCode": "UID2022042710270001",
"pageSize": 10,
"phoneType": 1
}
返回结果参数说明:
参数名 | 参数类型 | 说明 |
---|---|---|
code | int | 错误码;40000表示接口调用成功,没有错误信息 |
msg | string | 接口请求错误信息; 当 code = 40000 时,该值为空 |
data | object | |
data.current | int | 当前页码 |
data.pageSize | int | 当前分页大小 |
data.pages | int | 分页总页数 |
data.total | int | 数据总条数 |
data.list | array | 对象列表 |
data.list.actPhone | string | 短信接收(来信)号码,即客户号码 |
data.list.createTime | int64 | 创建时间,秒级时间戳 |
data.list.phoneType | int | 短信接收号码类型,1:手机号,2:其他 |
data.list.smsContent | string | 短信内容 |
data.list.smsType | int | 短信消息收发类型, 1:接收,2:发送 |
data.list.staffCode | string | 员工编号 |
data.list.userCode | string | 用户编号 |
data.list.uuid | string | 短信标识,当前设备唯一 |
返回结果示例:
{
"code": 40000,
"msg": "请求成功",
"data": {
"current": 1,
"pages": 12,
"size": 10,
"total": 115,
"list": [
{
"actPhone": "17686406613",
"createTime": 1676258795,
"phoneType": 1,
"smsContent": "222",
"smsType": 1,
"staffCode": "SID202202714021000",
"userCode": "UID2022042710270001",
"uuid": "134ca0ff-4100-4341-9156-0b054ec7457e"
}
]
}
}
# 5. 定位相关
# 5.1 获取实时定位数据
请求方式:POST
请求地址: https://{domain}
/workos/record/call/getLocationRealPageList
请求头:
{
"Content-Type": "application/json;charset=UTF-8"
}
请求参数说明
参数名 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
userCode | string | 是 | 用户编号 |
staffCodeList | string[] | 是 | 员工编号集合 |
请求示例:
{
"userCode": "UID2022042710270001",
"staffCodeList": [
"SID202202714021000"
]
}
返回结果参数说明:
参数名 | 参数类型 | 说明 |
---|---|---|
code | int | 错误码;40000表示接口调用成功,没有错误信息 |
msg | string | 接口请求错误信息; 当 code = 40000 时,该值为空 |
data | object | |
data.list | array | 对象列表 |
data.list.recordLat | string | 地址定位维度,以保存时间定位为准 |
data.list.recordLng | string | 地址定位经度,以保存时间定位为准 |
data.list.recordLocation | string | 定位地点,比如上海市宝山区共泉路100号 |
data.list.recordPlace | string | 定位地名简称 |
data.list.staffCode | string | 员工编号 |
返回结果示例:
{
"code": 40000,
"msg": "请求成功",
"data": [
{
"recordLat": "1676258791",
"recordLng": "36.705379",
"recordLocation": "119.196677",
"recordPlace": "中动大厦A座",
"staffCode": "SID202202714021000"
}
]
}
# 5.2 获取员工某月定位数据分布状况
请求方式:GET
请求地址: https://{domain}
/workos/record/location/getLocationTrackSignList
请求参数说明
参数名 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
userCode | string | 是 | 用户编号 |
staffCode | string | 是 | 员工编号 |
collectMonth | string | 是 | 轨迹汇总日期,格式如:2022-10 |
请求示例:
https://api-workos-paas.xzm.cn/workos/endPoint/getLocationTrackSignList?userCode=UID2022042710270001&staffCode=SID202202714021000&collectMonth=2023-02
返回结果参数说明:
参数名 | 参数类型 | 说明 |
---|---|---|
code | int | 错误码;40000表示接口调用成功,没有错误信息 |
msg | string | 接口请求错误信息; 当 code = 40000 时,该值为空 |
data | object | |
data.list | array | 对象列表 |
data.list.collectDay | string | 汇总日期,格式如:2022-10-11 |
返回结果示例:
{
"code": 40000,
"msg": "请求成功",
"data": [
{
"collectDay": "2023-02-01"
}
]
}
# 5.3 获取员工的某日的定位轨迹数据
请求方式:GET
请求地址: https://{domain}
/workos/record/location/getLocationTrackList
请求参数说明
参数名 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
userCode | string | 是 | 用户编号 |
staffCode | string | 是 | 员工编号 |
collectDay | string | 是 | 轨迹汇总日期,格式如:2022-10-10 |
请求示例:
https://api-workos-paas.xzm.cn/workos/endPoint/getLocationTrackList?userCode=UID2022042710270001&staffCode=SID202202714021000&collectDay=2023-02-13
返回结果参数说明:
参数名 | 参数类型 | 说明 |
---|---|---|
code | int | 错误码;40000表示接口调用成功,没有错误信息 |
msg | string | 接口请求错误信息; 当 code = 40000 时,该值为空 |
data | object | |
data.list | array | 对象列表 |
data.list.collectDay | string | 汇总日期,格式如:2022-10-11 |
data.list.collectLevel | int | 汇总顺序,大于0的正整数,数值越大时间越往后 |
data.list.dwellTime | int | 驻留时间,默认值为0,单位分钟 |
data.list.lastTime | int64 | 上次汇总时间,秒级时间戳 |
data.list.recordLat | string | 地址定位维度,以保存时间定位为准 |
data.list.recordLng | string | 地址定位经度,以保存时间定位为准 |
data.list.recordLocation | string | 定位地点,比如上海市宝山区共泉路100号 |
data.list.recordPlace | string | 定位地名简称 |
返回结果示例:
{
"code": 40000,
"msg": "请求成功",
"data": [
{
"collectDay": "2023-02-13",
"collectLevel": 1,
"dwellTime": 1676217621,
"lastTime": 668,
"recordLat": "36.705462",
"recordLng": "119.196782",
"recordLocation": "山东省潍坊市奎文区金光路10002号",
"recordPlace": "中动大厦A座"
}
]
}
# 6.会话存档
提示:会话存档接口系高级功能,请联系客服咨询!
# 全局错误码
错误码(code) | 错误说明(msg) |
---|---|
40001 | 数据请求参数异常,详情参见msg返回信息 |
40002 | 服务不可用,详情参见msg返回信息 |
40029 | 无效用户数据请求(数据不存在) |
40030 | 不允许操作(特定业务场景不允许),详情参见msg返回信息 |
40303 | 工作手机绑定二维码已过期 |
40304 | 工作手机已完成绑定 |