智能终端对接文档
接入openapi准备(接口鉴权)
调用接口准备
此项目主要用于主动调取接口进行操作鉴权
第一步:生成clientId
和clientSecret
接入openapi服务,首先需要在管理后台生成clientId
和clientSecret
提醒: 请牢记
clientId
和clientSecret
,以及生成的accessToken
和refreshToken
参数timestamp表示1970年1月1日至今的毫秒数
请求传递的数据格式为JOSN
响应值code=1表示成功,0表示失败
请求协议为https
单页数量最大为500
获取企业微信消息信息接口限制:每分钟调用20次;
获取客户列表接口限制:每分钟调用20次
获取通话记录接口限制:每分钟调用20次
获取短信记录接口限制:每分钟调用20次
注意
- 接口返回
statusCode
字段代表状态码,对应接口响应的具体情况,在异常的时候参照调用的接口可以查看具体的信息,下面是statusCode
值和信息的对照表:
statusCode值(int类型) | 对应信息 |
---|---|
4004 | 员工不存在 |
4001 | 智能终端未联网或版本过低 |
4005 | 参数错误 |
4006 | 参数解密失败 |
4007 | 参数加密失败 |
4008 | ip不在访问白名单 |
4009 | 接入错误,可能:未配置或者找不到配置 |
4015 | 响应解析错误 |
4016 | 响应加密错误 |
4017 | 时间格式错误 |
4018 | 时间跨度过大 |
4019 | 拉取数据量过大 |
- 加密和解密问题:
如果后台调用数据开启加密, 请求参数除了oauth
相关接口不加密,其他请求一律要加密;响应返回一律都加密。具体实例可参考 接入步骤
- cfTs字段分页问题:
分页使用cfTs字段实现,具体是:获取第一页数据之后,用第一页的最后一条数据的cfTs字段作为参数,比如:获取一个时间段的数据,单页数量为10,获取第二页的数据,cfTs参数以第一页数据的最后一条数据的cfTs字段作为参数,即获取大于当前cfTs值的10条数据也就是第二页
第一步:获取accessToken和refreshToken
请求方式: POST
请求地址: https://wpapi.7moor.com/oauth/token/getToken
请求参数:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
clientId | string | 管理后台生成 | true |
clientSecret | string | 管理后台生成 | true |
请求示例:
curl -X POST https://wpapi.7moor.com/oauth/token/getToken?timestamp=1562734640000 -H "Content-Type:application/json" -d '{"clientId":"0f30a37f1adca729","clientSecret":"af9cb1d2acf88264ab8477e3b8b34353"}'
成功响应(未设置加密):
{
"code": 1,
"msg": "",
"data": {
"accessToken": "70C5F5F19942DF9378422B649D3E14BD",
"refreshToken": "F8A3F1DB4EF4DECFB3526E11C5D9C90A"
}
}
成功响应(设置加密):
{
"code": 1,
"msg": "",
"data": "FlXDoezQGhQ2s7cqG9XIwrXzNh6TJipRjzj4kDUd/eKxcsq3aCDgh98Hk6jYi3FyrihmzJoLzFfOZvjCIJgE4AQGads4oPGfgtGkLts3KRdg13oWpEV3oL5TxUaP8olykUoA3lPJOO3wbFuWBr7egntYMY6UMaMmM+1+7UQsrb4="
}
字段说明:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
accessToken | string | 获取数据的令牌 | true |
refreshToken | string | 刷新accessToken的令牌 | true |
第二步:使用accessToken调用接口
注意:在请求params参数中带上accessToken,以下使用请求通话数据列表为例
请求示例(未设置加密):
curl -X POST https://wpapi.7moor.com/api/device/call?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD -H "Content-Type:application/json" -d '{"page":"1","pageSize":"10"}'
请求示例(设置加密):
curl -X POST https://wpapi.7moor.com/api/device/call?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD -H "Content-Type:application/json" -d '{"param":"Ub9zzRtPjebKVZ1rMerRnE932/sRT70rdHv/YA1LsQ7XFZcX/GlYZ7H4ra7iaQwuEEEVMQc3TVB4G1k8XYT6exdYK8MJECkens2ZW+bY9AZgmobdshdG85V1ZpsHEQUS"}'
成功响应(未设置加密):
{
"code": 1,
"msg": "",
"data": {
// count表示当前条件下的数据总数,而非list的数量
"count" : 1,
"list" : [{
// ...
}]
}
}
成功响应(设置加密):
{
"code": 1,
"msg": "",
"data": "LuaHTYSBSETP9q9jsiyIb1RvWL2k7C8j6qt/GKrNz6v6yYDnNNwbWXJ5V3Q/ee0bvrGPFOh6SD9dkhxCzRVlt9KxDW2GL6XGxfAs5LgK04CpK8l2vFVJ46OoD0w3/QfiIge+oTuMQEGDGDGD+3QXqVuGaXZmXVfI+tb4lXBcOSrt7RqNOM1ZWwv2V4bFPqPnjqzLiLR2hknpl3dGqWXgxE9zlg0Y3p0g1ADlrw6jap9zG8YKmSGWCxxqKqXuuVjLW7/DoTHqkxxxxxx"
}
相关说明
accessToken有效期为2个小时,当accessToken超时后,可以使用refreshToken进行刷新,accessToken刷新结果有两种:
-
若accessToken已超时,那么进行refreshToken会获取一个新的accessToken;
-
若accessToken未超时,那么进行refreshToken不会改变accessToken,但超时时间会刷新,相当于续期accessToken。
refreshToken的有效期为30天,当refreshToken失效的后,需要用户重新获取token,所以,请开发者在refreshToken即将过期时(如第29天时),进行定时的自动获取token并保存好它。
刷新accessToken
请求方式: POST
请求地址: https://wpapi.7moor.com/oauth/token/reToken
请求示例:
curl -X POST https://wpapi.7moor.com/oauth/token/reToken?timestamp=1562734640000&refreshToken=F8A3F1DB4EF4DECFB3526E11C5D9C90A
成功响应:
{
"code": 1,
"msg": "",
"data": {
// 注意:accessToken已超时才会重新生成accessToken,否则只刷新超时时间,详见相关说明
"accessToken": "70C5F5F19942DF9378422B649D3E14BD"
}
}
数据推送准备
此项目主要用于接收智能终端推送数据的鉴权
加解密SDK包地址
说明
-
推送方式为
POST
,数据传递使用JSON
格式(请求头:Content-Type: application/json) -
body为加密的字符串,加密的
key
为openapi颁发的clientSecret
-
推送的数据结构如下:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
event | string | 事件名 | true |
body | string | 事件内容,方式加密详见SDK | true |
示例:
{
"event": "wxUser",
// 注意,加密后的数据难以阅读,因此以下接口文档body参数以JSON方式展示
"body": "neD0iV1eFLpIy4/F1XHFEomEfx2kV/EPMg+edO9TU/8="
}
- 响应数据结构(第三方接收到推送数据后请按照下面的json结构响应结果)
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
code | int | 状态码 0 失败,1 成功 | true |
msg | string | 状态信息 | false |
示例:
{
"code": 1,
"msg": "成功!"
}
- 失败重试:
在推送不成功的情况下,总共会发起15次重试,重试频率为15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h - 总计 24h4m
event 字段(字符串类型)表示数据类型,说明当前推送的data属于哪类数据,以下是所有event的值:
event | 说明 |
---|---|
call | 通话记录 |
record | 通话录音 |
sms | 短信记录 |
wxUser | 企业微信用户 |
wxContact | 企业微信联系人 |
wxLabel | 企业微信联系人标签 |
wxChatRoom | 企业微信群 |
wxChatRoomMember | 群成员 |
wxChat | 企业微信会话 |
wxMessage | 企业微信消息 |
wxMedia | 企业微信多媒体消息 |
updateUserInfo | 更新员工登录手机号 |
customer | 客户信息推送 |
- 建议接受推送后校验数据的完整性即响应推送服务,避免请求一直挂起
员工和设备对接
员工和设备对接包括:获取设备信息、员工信息同步和获取员工外出轨迹
获取设备信息
接入前请确认已完成接入openapi准备(接口鉴权)
应用场景:查询已购买手机的当前使用情况
请求方式: POST
请求地址: https://wpapi.7moor.com/api/device/devices
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求Body:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
page | int | 页码 | true |
pageSize | int | 单页数量 | true |
isFree | bool | 是否空闲(登出)设备:true空闲,false非空闲 | false |
status | string | 设备状态:online在线,offline离线 | false |
imeiOrMemo | string | IMEI或备注 | false |
请求示例:
curl -X POST https://wpapi.7moor.com/api/device/devices?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD -H "Content-Type:application/json" -d '{"page":1,"pageSize":10,"imeiOrMemo":"张三的手机","isFree": false,"status":"online"}'
成功响应:
{
"code": 1,
"msg": "",
"data": {
"count": 7,
"list": [
{
"id": "a919e0bf-90e3-11e9-9b59-0242ac110005",
"no": 1,
"imei": "860113046800736",
"brand": "xiaomi",
"model": "Redmi 7",
"phone1": "133xxxx4075",
"status": "offline",
"wechat": "yo小号",
"wechatHead": "http://wx.qlogo.cn/mmhead/ver_1/qp31OPiahuiaZ3hZD2QRHGU8wT0lDI1nfu8bVq16dy8FyuN4zicicfLCDZMPUJWBKtAvk0CiaKm9mEFpiaCLSkq3UM3WJ2KyxnefY0SiaHQ0xa4EQI/96",
"firstTime": "2019-06-20 11:39:44",
"department": "无部门"
}
]
}
}
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
id | string | 设备的唯一id | true |
no | int64 | 设备编号 | true |
imei | string | 设备IMEI码 | true |
brand | string | 手机品牌 | true |
model | string | 设备型号 | true |
phone | string | 卡槽1号码 | false |
phone1 | string | 卡槽2号码 | false |
memo | string | 设备备注 | false |
status | string | 设备状态 | true |
string | 企业微信昵称 | false | |
wechatHead | string | 企业微信头像 | false |
uid | string | 员工id | false |
uName | string | 员工名称 | false |
firstTime | string | 激活时间 | false |
logoutTime | string | 最近一次登出时间 | false |
department | string | 当前登录员工所属部门 | false |
员工信息同步
接入前请确认已完成接入openapi准备(接口鉴权)
主要用于查询和同步员工信息
-
通过“1、获取员工信息列表”接口查询智能终端员工信息,员工ID在调用接口时会频繁使用,需提前做好双方员工映射关系;
-
为及时同步智能终端已有员工信息变更,需使用“2、员工信息更新推送”同步信息给第三方系统
1、获取员工信息列表
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/getUsers
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求示例:
curl -X POST https://wpapi.7moor.com/api/crm/getUsers?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD
成功响应:
{
"code": 1,
"msg": "",
"data": {
"list":[
{
"_id": "agiew74717516969",
"name": "张三",
"phone": "138xxxx9999"
}
]
}
}
字段说明:
字段 | 类型 | 描述 |
---|---|---|
_id | string | 员工id编号 |
name | string | 员工姓名 |
phone | string | 员工手机 |
2、获取单个员工信息
请求方式: POST
请求地址: https://wpapi.7moor.com/api/v2/crm/getUserInfo
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求body:
{
"phone": "13212345678"
}
字段说明:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
phone | string | 员工电话 | true |
请求示例:
curl -X POST https://wpapi.7moor.com/api/v2/crm/getUserInfo?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD -H "Content-Type:application/json" -d '{"phone":"13212345678"}'
成功响应:
{
"code": 1,
"msg": "",
"data": {
"_id" : "297",
"name" : "张三",
"phone" : "13212345678"
}
}
字段说明:
字段 | 类型 | 描述 |
---|---|---|
_id | string | 员工id编号 |
name | string | 员工姓名 |
phone | string | 员工手机 |
3、员工信息更新推送
要使用此推送需前往智能终端管理后台—设置—高级设置—系统对接中配置推送地址
event: "updateUserInfo"
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
_id | string | 员工的唯一id | true |
name | string | 员工的姓名 | true |
phone | string | 员工的登录手机号 | true |
推送示例:
{
"event" : "updateUserInfo",
"body" : {
"_id" : "0e4ccc60-8b6e-4693-87d4-f7d84bf57bf5",
"name" : "张三",
"phone" : "136xxxx3333"
}
}
获取员工外出轨迹
接入前请确认已完成接入openapi准备(接口鉴权)
应用场景:主要用于统计智能终端的外出轨迹信息
接入准备:此功能需向对接人员申请开通,开通后在智能终端管理后台启用并配置相关信息
请求方式:POST
请求地址:http://wpapi.7moor.com/api/device/getLocationMovingTrackData
参数说明:
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
JSON :
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
page | int | 页码 | true |
pageSize | int | 单页数量 | true |
uids | []string | 查询轨迹的员工ID列表,空值时查询全部员工 | false |
start | string | 记录开始日期,格式:2019-12-11 | false |
end | string | 记录结束日期:格式:2019-12-11 | false |
请求示例:
curl -X POST http://wpapi.7moor.com/api/device/getLocationMovingTrackData?timestamp=1596061711241&accessToken=42100C216728DFD60AF172E16E3402EA20191211191321 -H "Content-Type:application/json" -d '{"page":1,"pageSize":10,"uids":null,"start":"2019-12-04","end":"2019-12-04"}'
成功响应:
{
"code":1,
"msg":"",
"data":{
"count": 2,
"list":[
{
"uid":"76591e8d-a9cb-11e9-9a95-0242ac110009",
"day":"2019-12-04",
"movingTrack":[
{
"longitude":104.063256,
"latitude":30.554429,
"datetime":"2019-12-04 01:06:34"
},
{
"longitude":104.063256,
"latitude":30.554429,
"datetime":"2019-12-04 01:06:43"
}
]
}
]
}
}
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
count | int | 查询到的记录总数量 | |
list | array | 查询到的记录详情数组 | |
uid | string | 员工唯一ID | true |
day | string | 轨迹记录日期,格式:2019-12-11 | true |
movingTrack | array | 移动轨迹数组 | true |
movingTrack.longitude | float64 | 轨迹点经度 | true |
movingTrack.latitude | float64 | 轨迹点纬度 | true |
movingTrack.datetime | string | 轨迹点时间,格式:2019-12-11 00:00:00 | true |
轨迹绘制说明
我们的经纬度使用高德地图采集,使用其他地图服务商请自行转换经纬度,如需在页面中展示轨迹地图,请查看高德地图轨迹线绘制参考文档。
客户数据同步
接入前请确认已完成接入openapi准备(接口鉴权)
客户数据对接需要将第三方系统数据同步到智能终端,同步时请按照下方接口顺序调用
6、修改客户信息(支持自动新增客户和传输客户字段所有数据自动修改)
7、智能终端客户数据变更推送(若不在智能终端操作客户数据,可忽略此步)
1、获取客户字段模版
应用场景:同步数据前需要调用此接口查询客户字段类型
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/customerTmp
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求示例:
curl -X POST https://wpapi.7moor.com/api/crm/customerTmp?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD
成功响应:
{
"code": 1,
"msg": "",
"data": {
"fieldMap":{
"name":"姓名",
"companyName":"公司",
"job":"职务",
"phone":"电话",
"sourceId":"来源", //可通过来源列表获取id
"customerStatus":"客户状态", //见字段说明
"tags":"标签", //可通过标签模版获取标签id
"pool":"公海", //可通过公海列表获取id
"sex":"性别", //"1":男,"2":女,"0":未知
"prov_city":"省市",
"email":"邮箱",
"birthday":"生日",
"addressfull":"详细地址",
"remark":"备注",
"owner":"跟进人", //可通过员工列表获取id
"shareIds":"共享成员", //可通过员工列表获取id
"wxNo":"企业微信号",
"filed1":"自定义字段1",
"filed2":"自定义字段2"
}
}
}
字段说明:
customerStatus:{
"effective": "有效客户",
"invalid": "无效客户",
"signatureing": "待签客户",
"lost": "丢单客户",
"success": "成单客户",
"repeat": "复购客户",
"potential": "潜在客户",
"clue": "线索客户"
}
sex: {
"0": "未知",
"1": "男",
"2": "女"
}
字段说明:
字段 | 类型 | 描述 |
---|---|---|
name | string | 姓名 |
companyName | string | 公司 |
job | string | 职务 |
phone | string | 电话 |
sourceId | string | 来源 |
customerStatus | string | 客户状态 |
tags | string | 标签 |
pool | string | 公海 |
sex | string | 性别 |
prov_city | string | 省市 |
string | 邮箱 | |
birthday | string | 生日 |
addressfull | string | 详细地址 |
remark | string | 备注 |
owner | string | 跟进人 |
shareIds | []string | 共享成员 |
wxNo | string | 企业微信号 |
filed1 | string | 自定义字段1(自定义字段均以filed开头) |
filed2 | string | 自定义字段2 |
获取客户来源key-value模版
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/customerSource
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求示例:
curl -X POST https://wpapi.7moor.com/api/crm/customerSource?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD
成功响应:
{
"code": 1,
"msg": "",
"data": {
"marketActivity":"市场活动",
"socialPromotion":"社交推广",
"personalDevelopment":"个人开发",
"searchEngines":"搜索引擎",
"customerIntroduction":"客户介绍",
"other":"其他",
"7c452c1c-17fc-11ea-874e-542696cd507f":"自定义来源1"
}
}
获取客户标签key-value模版
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/customertags
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求示例:
curl -X POST https://wpapi.7moor.com/api/crm/customertags?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD
成功响应:
{
"code": 1,
"msg": "",
"data": {
"uuid1":"热门",
"uuid2":"重要"
}
}
2、获取公海列表
应用场景:添加客户时支持通过接口直接将客户添加到公海,调用此接口可获取系统已有公海信息,若需配置公海信息,可前往智能终端管理—设置—客户设置—公海管理中配置
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/getPoolList
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求示例:
curl -X POST https://wpapi.7moor.com/api/crm/getPoolList?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD
成功响应:
{
"code":1,
"msg":"",
"data":[
{
"_id" : "String",
"admins" : ["xx"],
"expireIn" :
{
"day" : 1,
"hour" : 2,
"minute" : 3,
},
"prewarningTime" :
{
"day" : 1,
"hour" : 2,
"minute" : 3,
},
"maxPerPerson" : 4,
"members" : ["xx0", "xx1"],
"departments" : ["xx0", "xx1"],
"isAllDepartment":false,
"name" : "String",
"policy" : "String",
"statusChangePolicy" : "String"
"followPolicy":["xx"],
"type":"string"
}
]
}
字段说明:
字段 | 类型 | 说明 |
---|---|---|
_id | string | 公海主键id |
name | string | 公海名称 |
admins | []string | 管理员uid集合 |
isAllDepartment | bool | 成员列表-是否全公司 |
members | []string | 成员列表-员工uid集合 |
departments | []string | 成员列表-部门id集合 |
policy | string | 领取策略 assign:"公海领取规则-分配" get:"公海领取规则-领取" |
maxPerPerson | int | 最大持有量 |
statusChangePolicy | string | 状态变更策略 manually:"公海回收状态规则-手动回收" auto:"公海回收状态规则-自动回收" |
expireIn | object | 超时策略 {"day":1,"hour":24,"minute":60} |
prewarningTime | object | 预提示时间 {"day":1,"hour":24,"minute":60} |
followPolicy | []string | 有效行为 newCall-已接通话 newWxRecord-企业微信记录 newFollow-发布根据记录 newSales-新增销售机会 |
type | string | 公海类型 customDefine-自定义新增 systemSet-系统预设 |
3、获取客户列表
应用场景:拉取智能终端客户列表客户数据,若需双向同步智能终端与第三方系统客户数据,需设置客户之间映射关系
接口限制:每分钟调用20次;单次数量最大为500;开始—结束时间跨度不超过30天
请求方式: POST
请求地址: https://wpapi.7moor.com/api/v2/crm/getCustomeres
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求body:
{
"userPhone": "15883434323",
"start": "2020-01-08 15:04:05",
"end": "2020-01-09 15:04:05",
"cfTs": 100000000,
"pageSize": 100
}
字段说明:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
start | string | 开始时间(创建时间,查询时间跨度不超过30天) | true |
end | string | 结束时间(创建时间) | true |
userPhone | string | 员工的手机号码(可筛选当前员工的客户) | false |
cfTs | uint64 | 筛选条件(返回大于此值的数据) | false |
pageSize | int | 分页尺码(最大值500) | true |
请求示例:
curl -X POST https://wpapi.7moor.com/api/v2/crm/getCustomeres?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD
成功响应:
{
"code": 1,
"msg": "",
"data": {
"count": 100,
"list": [
{
"_id": "uuid",
"owner": "uuid",
"ownerName": "跟进人1",
"customerStatus": "clue",
"price": 00,
"tags": [
"tags_id_01",
"tags_id_02"
],
"shareIds": [
"uuid_01"
],
"sourceId": "source_id",
"source": "来源01",
"name": "客户姓名",
"companyId": "company_id_01",
"companyName": "公司1",
"job": "职务01",
"phone": [
{
"display": "手机",
"type": "mobile",
"tel": "132xxxx5678"
}
],
"pool": "pool_id_01",
"poolName": "公海名称",
"creator": "uuid",
"creatorName": "创建人名称",
"sex": "1",
"prov_city": "河北省-秦皇岛市-山海关区",
"email": "",
"birthday": "",
"address": "成都北路 上海市静安区",
"addressfull": "",
"remark": "",
"wxNo": "",
"wxNick": "",
"createTime": "yyyy-MM-dd HH:mm:ss",
"getTime": "yyyy-MM-dd HH:mm:ss",
"lastTime": "yyyy-MM-dd HH:mm:ss",
"logTime": "yyyy-MM-dd HH:mm:ss",
"cfTs": 100000000,
// 自定义字段
}
]
}
}
字段说明:
字段 | 类型 | 描述 |
---|---|---|
_id | string | 客户主键id |
name | string | 客户姓名 |
companyId | string | 公司id |
companyName | string | 公司名称 |
job | string | 职务 |
phone | []object | 电话 |
sourceId | string | 来源Id |
source | string | 来源名称 |
customerStatus | string | 客户状态 |
tags | []string | 标签id数组 |
pool | string | 公海id |
poolName | string | 公海名称 |
sex | string | 性别 |
prov_city | string | 省市 |
string | 邮箱 | |
birthday | string | 生日 |
addressfull | string | 详细地址 |
remark | string | 备注 |
owner | string | 跟进人 |
ownerName | string | 跟进人姓名 |
shareIds | []string | 共享成员 |
wxNo | string | 企业微信号 |
wxNick | string | 企业微信昵称 |
createTime | string | 创建时间 |
getTime | string | 获取客户时间 |
lastTime | string | 最近修改时间 |
logTime | string | 最近联系时间 |
creator | string | 创建人id |
creatorName | string | 创建人姓名 |
price | int64 | 销售机会金额 |
cfTs | uint64 | 筛选条件(返回大于此值的数据) |
字段说明:
customerStatus:{
"effective": "有效客户",
"invalid": "无效客户",
"signatureing": "待签客户",
"lost": "丢单客户",
"success": "成单客户",
"repeat": "复购客户",
"potential": "潜在客户",
"clue": "线索客户"
}
sex: {
"0": "未知",
"1": "男",
"2": "女"
}
phone字段说明:
字段 | 类型 | 说明 |
---|---|---|
display | string | 显示名称(该号码的备注) |
type | string | 类型:mobile,landline,other |
tel | string | 号码 |
4、批量添加客户
应用场景:通过接口批量创建客户
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/batchAddCustomer
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求body:
{
"list":[{
"name":"张三",
"companyName":"李白清公司",
"job":"经理",
"phone":"138xxxx0000",
"sourceId":"",
"tags":["tag1","tag2"],
"pool":"公海id",
"sex":"0",
"prov_city":"四川省成都市",
"email":"4999999@qq.com",
"birthday":"2019-12-12",
"addressfull":"四川省成都市高新区999号",
"remark":"备注",
"owner":"",
"shareIds":["uid1","uid2"],
"wxNo":"企业微信号"
// 自定义字段
}]
}
字段说明:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
name | string | 姓名 | true |
companyName | string | 公司名称 | false |
job | string | 职务 | false |
phone | string | 电话号码 | false |
sourceId | string | 来源id | false |
tags | []string | 标签id数组 | false |
pool | string | 公海id | false |
sex | string | 性别 | false |
prov_city | string | 省市 | false |
string | 邮箱 | false | |
birthday | string | 生日 | false |
addressfull | string | 详细地址 | false |
remark | string | 备注 | false |
owner | string | 员工id | false |
shareIds | []string | 共享成员 | false |
wxNo | string | 企业微信号 | false |
自定义字段 | 自定义字段 | false |
请求示例:
curl -X POST https://wpapi.7moor.com/api/crm/batchAddCustomer?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD
成功响应:
{
"code": 1,
"msg": "增加成功",
"data": {
"failList": [],
"successCidList": [
"a5511d68-be6b-11e9-9bbe-a0999b1a254b"
]
}
}
字段说明:
字段 | 类型 | 说明 |
---|---|---|
failList | array | 失败数据集合 |
successCidList | array | 插入成功的客户id集合 |
5、批量删除客户
接口限制:每分钟调用20次;单次最大限制500;
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/delCustomer
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求body:
{
"ids": ["a5511d68-be6b-11e9-9bbe-a0999b1a254b"]
}
字段说明:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
ids | []string | 客户主键id数组 | true |
请求示例: |
curl -X POST https://wpapi.7moor.com/api/crm/delCustomer?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD -H "Content-Type:application/json" -d '{"ids": ["a5511d68-be6b-11e9-9bbe-a0999b1a254b"]}'
成功响应:
{
"code": 1,
"msg": "删除成功",
"data": {}
}
6、修改客户信息
应用场景:同步第三方系统客户数据到智能终端系统;支持只同步修改字段数据或同步客户所有字段数据,智能终端自动更新;若客户不存在,自动创建客户;不支持删除客户,删除客户请单独调用批量删除客户接口
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/addOrUptCustomer
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求body-有_id更新:
{
"_id": "a5511d68-be6b-11e9-9bbe-a0999b1a254b"
"companyName": "托尔斯泰"
"name": "张三",
"phone": [],
"owner": "uid",
"address": "成都市",
"remark":"备注",
"job": "经理",
"email":"邮箱",
"birthday":"生日",
"shareIds": ["uid1","uid2"],
"pool": "公海id",
"wxNo": "wxNo",
}
字段说明:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
name | string | 姓名 | true |
companyName | string | 公司名称 | false |
job | string | 职务 | false |
phone | []object | 电话号码 | true |
sourceId | string | 来源id | false |
customerStatus | string | 客户状态,新增客户无效 | false |
tags | []string | 标签id数组 | false |
pool | string | 公海id | false |
sex | string | 性别 | false |
prov_city | string | 省市 | false |
string | 邮箱 | false | |
birthday | string | 生日 | false |
addressfull | string | 详细地址 | false |
remark | string | 备注 | false |
owner | string | 员工id | false |
shareIds | []string | 共享成员 | false |
wxNo | string | 企业微信号 | false |
自定义字段 | 自定义字段 | false |
请求body-无_id新增:
{
"name":"张三",
"companyName":"李白清公司",
"job":"经理",
"phone":"138xxxx0000",
"sourceId":"",
"customerStatus":"客户状态",
"tags":["tag1","tag2"],
"pool":"公海id",
"sex":"0",
"prov_city":"四川省成都市",
"email":"4999999@qq.com",
"birthday":"2019-12-12",
"addressfull":"四川省成都市高新区999号",
"remark":"备注",
"owner":"",
"shareIds":["uid1","uid2"],
"wxNo":"企业微信号"
自定义字段
}
字段说明:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
name | string | 姓名 | true |
companyName | string | 公司名称 | false |
job | string | 职务 | false |
phone | string | 电话号码 | true |
sourceId | string | 来源id | false |
customerStatus | string | 客户状态 | false |
tags | []string | 标签id数组 | false |
pool | string | 公海id | false |
sex | string | 性别 | false |
prov_city | string | 省市 | false |
string | 邮箱 | false | |
birthday | string | 生日 | false |
addressfull | string | 详细地址 | false |
remark | string | 备注 | false |
owner | string | 员工id | false |
shareIds | []string | 共享成员 | false |
wxNo | string | 企业微信号 | false |
请求示例:
curl -X POST https://wpapi.7moor.com/api/crm/addOrUptCustomer?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD
成功响应:
{
"code": 1,
"msg": "",
"data": {}
}
7、智能终端客户数据变更推送
应用场景:将系统中客户的变更数据推送到第三方系统,需提前在智能终端管理后台—设置—高级设置—对接设置中配置推送地址
event: "customer"(客户)
更新UPDATE/新增ADD示例-body字段说明:
字段 | 类型 | 说明 |
---|---|---|
type | string | 客户信息变更类型 |
list | []object | 客户信息对象数组 |
_id | string | 主键Id |
name | string | 客户姓名 |
phone | []object | 客户电话 |
ownerName | string | 跟进人姓名 |
owner | string | 跟进人id |
sex | string | 性别 |
string | 邮箱 | |
remark | string | 备注 |
birthday | string | 生日 |
job | string | 职务 |
prov_city | string | 省市 |
price | int64 | 销售机会金额 |
addressfull | string | 详细地址 |
address | string | 定位地址 |
customerStatus | string | 客户状态 |
shareIds | []string | 共享成员id数组 |
sourceId | string | 来源id |
source | string | 来源名称 |
wxNo | string | 企业微信号 |
wxNick | string | 企业微信昵称 |
headImg | string | 头像 |
poolName | string | 公海名称 |
pool | string | 公海id |
tags | []string | 标签id数组 |
companyId | string | 公司id |
companyName | string | 公司名称 |
createTime | string | 创建时间 |
getTime | string | 领取时间 |
lastTime | string | 最后变更时间 |
logTime | string | 最近联系时间 |
onlyCode | string | 客户唯一码 |
{
"event": "customer",
"body": {
"type":"UPDATE/ADD",
"list":[ {
"_id" : "f2e98447-ffb3-11e9-af1a-0242ac110003",
"name" : "张小兵",
"phone" : [
{
"type" : "mobile",
"display" : "手机",
"tel" : "153xxxx3075"
}
],
"ownerName" : "张杰",
"owner" : "d08eb8c8-cfb5-11e9-a5d6-0242ac110004",
"sex" : "0",
"email" : "7777777@qq.com",
"remark" : "备注",
"birthday" : "生日",
"job" : "经理",
"prov_city" : "四川省成都市",
"price" : 123457536609,
"address" : "四川省成都市武侯区高新区天府一街吉瑞四路307号",
"addressfull" : "四川省成都市武侯区高新区天府一街吉瑞四路307号",
"customerStatus" : "success",
"shareIds" : ["7b390cb5-fa02-11e9-ac6d-0242ac110003"],
"source" : "市场活动",
"sourceId" : "marketActivity",
"wxNo" : "企业微信号",
"wxNick" : "老马",
"headImg" : "http://wx.qlogo.cn/mmhead/ver_1/MJGiaClVIc7Fo8qBx3k1eLYv4Yr98FyOWHeiaXw5Mkx7Syn8VGAtkZ2tCxRKM88pVlA7ljYDTkSC8Nqsg6rXIP7bibTBCNXiaygU7bibscSJ1Cqk/96",
"poolName" : "待领取",
"pool" : "c0c8e946-dde6-11e9-818d-acbc3293876b",
"tags" : ["id1","id2"],
"companyId" : "c0c8e946-dde6-11e9-818d-acbc3293876",
"companyName" : "成都的公司",
"createTime" : "2019-11-05 18:06:35",
"getTime" : "2020-01-08 11:28:39",
"lastTime" : "2020-01-08 11:28:47",
"logTime" : "2019-12-27 17:42:57",
"cfTs" : 277063928058479e17,
"onlyCode" : "code_0zAAL2pg"
}]
}
}
删除DEL示例-body字段说明:
字段 | 类型 | 说明 |
---|---|---|
type | string | 客户信息变更类型 |
list | []string | 客户id数组 |
{
"event": "customer",
"body": {
"type":"DEL",
"list":["id1","id2"]
}
}
字段说明:
customerStatus:{
"effective": "有效客户",
"invalid": "无效客户",
"signatureing": "待签客户",
"lost": "丢单客户",
"success": "成单客户",
"repeat": "复购客户",
"potential": "潜在客户",
"clue": "线索客户"
}
sex: {
"0": "未知",
"1": "男",
"2": "女"
}
phone字段说明:
字段 | 类型 | 说明 |
---|---|---|
display | string | 显示名称(该号码的备注) |
type | string | 类型:mobile,landline,other |
tel | string | 号码 |
8、获取客户企业微信是否绑定
应用场景:获取客户的企业微信号是否已经被绑定过
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/getCustomerIsBind
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求body:
{
"cid": "305f30ab-06ba-11ea-855e-0242ac110004"
}
字段说明:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
cid | string | 客户id | true |
请求示例:
curl -X POST https://wpapi.7moor.com/api/crm/getCustomerIsBind?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD
成功响应:
{
"code": 1,
"msg": "",
"data": {
"bind": true
}
}
字段说明:
字段 | 类型 | 描述 |
---|---|---|
bind | bool | ture 绑定 false 未绑定 |
9、获取客户字段设置模版
应用场景:获取客户字段设置模版
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/customerTmpDetail
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求body:
{}
请求示例:
curl -X POST https://wpapi.7moor.com/api/crm/customerTmpDetail?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD
成功响应:
{
"code": 1,
"msg": "",
"data": {
// 自定义字段
"custom": [
{
"enable": true,
"id": "filed0",
"require": false,
"show": "自定义单行文本",
"type": "single"
},
{
"enable": true,
"id": "filed1",
"require": false,
"show": "自定多选框",
"type": "checkbox",
"choices": [
"选项0",
"选项1",
"选项2"
]
}
// ...
],
// 系统预设字段
"stable": [
{
"require": true,
"show": "姓名",
"type": "single",
"enable": true,
"id": "name"
}
// ...
]
}
}
字段说明:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
id | string | 字段的key | true |
show | string | 字段显示的值 | true |
type | string | 字段的类型(下面会对类型做解释) | true |
enable | bool | 是否启用(启用:true) | true |
require | bool | 是否必填(必填:true) | true |
choices | array | 自定义选项 | False |
字段的类型(type):
注意以下各个类型的自定义字段值都是字符串类型
key | value |
---|---|
date | 日期 |
datetime | 日期时间 |
single | 单行文本 |
multi | 多行文本 |
radio | 单选 |
checkbox | 多选 |
number | 数字 |
10、通过号码获取客户详情
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/getCustomerInfo
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求body:
{
"phone": "13212345678"
}
字段说明:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
phone | string | 客户电话号码 | true |
请求示例:
curl -X POST https://wpapi.7moor.com/api/crm/getCustomerInfo?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD -H "Content-Type:application/json" -d '{"phone":"13212345678"}'
成功响应:
{
"code": 1,
"msg": "",
"data": {
"_id": "uuid",
"owner": "uuid",
"ownerName": "跟进人1",
"customerStatus": "clue",
"price": 00,
"tags": [
"tags_id_01",
"tags_id_02"
],
"shareIds": [
"uuid_01"
],
"sourceId": "source_id",
"source": "来源01",
"name": "客户姓名",
"companyId": "company_id_01",
"companyName": "公司1",
"job": "职务01",
"phone": [
{
"display": "手机",
"type": "mobile",
"tel": "132xxxx5678"
}
],
"pool": "pool_id_01",
"poolName": "公海名称",
"creator": "uuid",
"creatorName": "创建人名称",
"sex": "1",
"prov_city": "河北省-秦皇岛市-山海关区",
"email": "",
"birthday": "",
"address": "成都北路 上海市静安区",
"addressfull": "",
"remark": "",
"wxNo": "",
"wxNick": "",
"createTime": "yyyy-MM-dd HH:mm:ss",
"getTime": "yyyy-MM-dd HH:mm:ss",
"lastTime": "yyyy-MM-dd HH:mm:ss",
"logTime": "yyyy-MM-dd HH:mm:ss",
"cfTs": 100000000,
// 自定义字段
}
}
字段说明:
字段 | 类型 | 描述 |
---|---|---|
_id | string | 客户主键id |
name | string | 客户姓名 |
companyId | string | 公司id |
companyName | string | 公司名称 |
job | string | 职务 |
phone | []object | 电话 |
sourceId | string | 来源Id |
source | string | 来源名称 |
customerStatus | string | 客户状态 |
tags | []string | 标签id数组 |
pool | string | 公海id |
poolName | string | 公海名称 |
sex | string | 性别 |
prov_city | string | 省市 |
string | 邮箱 | |
birthday | string | 生日 |
addressfull | string | 详细地址 |
remark | string | 备注 |
owner | string | 跟进人 |
ownerName | string | 跟进人姓名 |
shareIds | []string | 共享成员 |
wxNo | string | 企业微信号 |
wxNick | string | 企业微信昵称 |
createTime | string | 创建时间 |
getTime | string | 获取客户时间 |
lastTime | string | 最近修改时间 |
logTime | string | 最近联系时间 |
creator | string | 创建人id |
creatorName | string | 创建人姓名 |
price | int64 | 销售机会金额 |
cfTs | uint64 | 筛选条件(返回大于此值的数据) |
字段说明:
customerStatus:{
"effective": "有效客户",
"invalid": "无效客户",
"signatureing": "待签客户",
"lost": "丢单客户",
"success": "成单客户",
"repeat": "复购客户",
"potential": "潜在客户",
"clue": "线索客户"
}
sex: {
"0": "未知",
"1": "男",
"2": "女"
}
phone字段说明:
字段 | 类型 | 说明 |
---|---|---|
display | string | 显示名称(该号码的备注) |
type | string | 类型:mobile,landline,other |
tel | string | 号码 |
11、通过id获取客户详情
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/getCustomerInfoById
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求body:
{
"id": "xxx"
}
字段说明:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
id | string | 客户主键id | true |
请求示例:
curl -X POST https://wpapi.7moor.com/api/crm/getCustomerInfoById?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD -H "Content-Type:application/json" -d '{"id":"xxx"}'
成功响应:
{
"code": 1,
"msg": "",
"data": {
"_id": "uuid",
"owner": "uuid",
"ownerName": "跟进人1",
"customerStatus": "clue",
"price": 00,
"tags": [
"tags_id_01",
"tags_id_02"
],
"shareIds": [
"uuid_01"
],
"sourceId": "source_id",
"source": "来源01",
"name": "客户姓名",
"companyId": "company_id_01",
"companyName": "公司1",
"job": "职务01",
"phone": [
{
"display": "手机",
"type": "mobile",
"tel": "132xxxx5678"
}
],
"pool": "pool_id_01",
"poolName": "公海名称",
"creator": "uuid",
"creatorName": "创建人名称",
"sex": "1",
"prov_city": "河北省-秦皇岛市-山海关区",
"email": "",
"birthday": "",
"address": "成都北路 上海市静安区",
"addressfull": "",
"remark": "",
"wxNo": "",
"wxNick": "",
"createTime": "yyyy-MM-dd HH:mm:ss",
"getTime": "yyyy-MM-dd HH:mm:ss",
"lastTime": "yyyy-MM-dd HH:mm:ss",
"logTime": "yyyy-MM-dd HH:mm:ss",
"cfTs": 100000000,
// 自定义字段
}
}
字段说明见第10项
12、添加跟进记录
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/addFollowRecord
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求body:
{
"uid":"xxx",
"cid":"xxx",
"content": "测试内容"
}
字段说明:
参数 | 类型 | 解释 | 是否必须传 |
---|---|---|---|
uid | string | 员工id | true |
cid | string | 客户Id | true |
content | string | 跟进记录内容,最多1000个字 | true |
createTime | string | 创建时间(yyyy-MM-dd HH:mm:ss),默认使用当前时间 | false |
请求示例:
curl -X POST https://wpapi.7moor.com/api/crm/addFollowRecord?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD -H "Content-Type:application/json" -d '{"localPhone":"18866666666","cid":"xxx", "content": "测试内容"}'
成功响应:
{
"code": 1,
"msg": "添加跟进记录成功",
"data": null
}
13、获取跟进记录
event: followRecord
当客户添加或者修改跟进记录的时候回推送该事件
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
_id | string | 跟进记录的唯一id | true |
cid | string | 客户id | true |
content | string | 跟进记录内容 | true |
uid | string | 创建人Id | true |
userPhone | string | 创建人手机号 | true |
createTime | string | 创建时间(yyyy-MM-dd HH:mm:ss) | true |
lastTime | string | 最近修改时间(yyyy-MM-dd HH:mm:ss) | true |
推送示例:
{
"event" : "followRecord",
"body" : {
"_id" : "0e4ccc60-8b6e-4693-87d4-f7d84bf57bf5",
"cid" : "e1ec479c-971f-11e9-b311-0242ac120002",
"content" : "跟进记录",
"uid" : "076f2acf-e810-4bc0-9c31-bbc21135709d",
"userPhone" : "13600006666",
"createTime" : "2019-06-26 11:01:49",
"lastTime" : "2019-06-26 11:02:50"
}
}
通话短信数据对接
通话记录同步
注意:通话录音(soundUrl)是原始的文件地址,可能包含特殊字符(比如空格、“+”),在浏览器中访问录音资源需要将“+”替换成“%2B”,空格一般会默认转译(比如谷歌浏览器会将空格默认转为“%20”),如果没有请自行转译,遇到问题可以联系我们的对接人员协助处理
对接通话记录需要进行三步操作
第一步:获取通话记录;
第二步:新增通话记录推送到第三方系统(若对通话记录数据时效性要求不高可忽略此步骤);
第三步:由于通话录音生成有延迟,生成好的录音需要推送到对应通话记录中;
1、获取通话记录
接入前请确认已完成接入openapi准备(接口鉴权)
应用场景:获取智能终端系统中已产生的通话记录,由于通话录音生成有延迟,部分通话记录中没有录音地址,需要后续调用此接口重新获取
接口限制:每分钟调用20次;单次数量最大为500;通话记录开始—结束时间跨度不超过30天
请求方式: POST
请求地址: https://wpapi.7moor.com/api/v2/device/call
参数说明:
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求Body:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
pageSize | int | 单页数量 | true |
imeiOrName | string | IMEI或设备持有人 | false |
contactTel | string | 联系号码 | false |
callType | string | 通话类型:in呼入,out外呼 | false |
start | string | 开始时间 (呼叫时间,查询时间跨度不能超过30天) | true |
end | string | 结束时间(呼叫时间) | true |
callId | []string | 第三方自定义该值(请确保唯一性),方便快速匹配通话记录或录音 | false |
cfTs | uint64 | 筛选条件(返回大于此值的数据) | false |
请求示例:
curl -X POST https://wpapi.7moor.com/api/v2/device/call?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD -H "Content-Type:application/json" -d '{"pageSize":10,"imeiOrName":"张三","callType":"in","start":"2019-06-17 11:11:11","end":"2019-06-18 12:12:12"}'
成功响应:
{
"code": 1,
"msg": "",
"data": {
"count" : 1,
"list" : [
{
"id" : "0e4ccc60-8b6e-4693-87d4-f7d84bf57bf5",
"did" : "e1ec479c-971f-11e9-b311-0242ac120002",
"imei" : "867183048059394",
"callType" : "out",
"connectType" : "disconnected",
"localTel" : "133xxxx3333",
"uid" : "076f2acf-e810-4bc0-9c31-bbc21135709d",
"uName" : "川普",
"contactTel" : "150xxxx3333",
"contactName" : "奥巴马",
"beginTime" : "2019-06-26 11:01:49",
"endTime" : "2019-06-26 11:02:50",
"duration" : 61,
"soundUrl" : "cf-workphone.oss-cn-hangzhou.aliyuncs.com/originalRecord/P00000000024/201907/20190708172233-19926022861-outCall-1562577753335.mp3",
"callId": "uuid",
"address": "四川省成都市高新区环球中心",
"longitude": 102.123456,
"latitude": 34.123456,
"cid": "NA",
"cfTs": 1231654681
}
]
}
}
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
id | string | 通话记录的唯一id | true |
did | string | 设备id | true |
imei | string | 设备IMEI码 | true |
callType | string | 呼叫类型( in:呼入,out:呼出) | true |
connectType | string | 通话类型("connected":接通,"disconnected":未接通) | true |
localTel | string | 本机号码 | true |
uid | string | 当时设备持有员工id | true |
uName | string | 当时设备持有员工name | true |
contactTel | string | 联系号码 | true |
contactName | string | 当时联系号码通讯录名称 | false |
beginTime | string | 呼通时间(例如:2006-01-02 15:04:05) | true |
endTime | string | 挂机时间(例如:2006-01-02 15:05:06) | true |
duration | int | 录音时长(例如:61) | false |
soundUrl | string | 录音地址,"not_found":录音未找到, "copy_fail":录音拷贝失败,"multiple_call_lose":多通通话录音丢失 | false |
callId | string | 第三方自定义该值(请确保唯一性),方便快速匹配通话记录或录音 | false |
address | string | 通话时定位中文地址 | false |
longitude | float64 | 通话时定位经度 | false |
latitude | float64 | 通话时定位纬度 | false |
cid | string | 通话当时匹配到的客户Id。multiCus 匹配到多个,NA 未匹配到,不存在 未匹配到 | false |
cfTs | uint64 | 筛选条件(返回大于此值的数据) | false |
2、新增通话记录推送
应用场景:将系统中新生成的通话记录推送到第三方系统,需提前在智能终端管理后台—设置—高级设置—对接设置中配置推送地址
event: "call"
目前是先同步通话记录,通话录音需要先上传到服务器,之后再修改通话记录的录音地址,所以需要用户提供修改录音地址(soundUrl)的接口,下面会提供推送录音地址的数据
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
_id | string | 通话记录的唯一id | true |
did | string | 设备id | true |
imei | string | 设备IMEI码 | true |
callType | string | 通话类型( in:呼入,out:呼出) | true |
connectType | string | 通话类型("connected":接通,"disconnected":未接通) | true |
localTel | string | 本机号码 | true |
uid | string | 当时设备持有员工id | true |
uName | string | 当时设备持有员工name | true |
contactTel | string | 联系号码 | true |
contactName | string | 联系号码通讯录名称 | false |
beginTime | string | 呼通时间(例如:2006-01-02 15:04:05) | true |
endTime | string | 挂机时间(例如:2006-01-02 15:05:06) | true |
duration | int | 录音时长(例如:61) | true |
soundUrl | string | 录音地址,"not_found":录音未找到, "copy_fail":录音拷贝失败,"multiple_call_lose":多通通话录音丢失 | false |
callId | string | 第三方自定义该值(请确保唯一性),方便快速匹配通话记录或录音 | false |
address | string | 通话时定位中文地址 | false |
longitude | float64 | 通话时定位经度 | false |
latitude | float64 | 通话时定位纬度 | false |
推送示例:
{
"event" : "call",
"body" : {
"_id" : "0e4ccc60-8b6e-4693-87d4-f7d84bf57bf5",
"did" : "e1ec479c-971f-11e9-b311-0242ac120002",
"imei" : "867183048059394",
"callType" : "out",
"connectType" : "disconnected",
"localTel" : "133xxxx3333",
"uid" : "076f2acf-e810-4bc0-9c31-bbc21135709d",
"uName" : "川普",
"contactTel" : "150xxxx3333",
"contactName" : "奥巴马",
"beginTime" : "2019-06-26 11:01:49",
"endTime" : "2019-06-26 11:02:50",
"duration" : 61,
"soundUrl" : "",
"address": "四川省成都市高新区环球中心",
"longitude": 102.123456,
"latitude": 34.123456,
"callId": "uuid"
}
}
3、通话录音推送
应用场景:通话录音生成时间晚于通话记录,需要使用此推送将生成好的通话录音推送到对应的通话记录中
event: "record"
字段说明:
需要更新该条通话记录(唯一_id)的录音地址(soundUrl)
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
_id | string | 通话记录的唯一id | true |
uid | string | 员工id | true |
soundUrl | string | 录音地址,"not_found":录音未找到, "copy_fail":录音拷贝失败,"multiple_call_lose":多通通话录音丢失 | true |
推送示例:
{
"event" : "record",
"body" : {
"_id" : "0e4ccc60-8b6e-4693-87d4-f7d84bf57bf5",
"soundUrl" : "cf-workphone.oss-cn-hangzhou.aliyuncs.com/originalRecord/P00000000024/201907/20190708172233-19926022861-outCall-1562577753335.mp3"
}
}
短信记录同步
接入前请确认已完成接入openapi准备(接口鉴权)
对接短信记录需要进行二步操作
第一步:获取系统中已产生短信记录;
第二步:新增短信记录推送到第三方系统(若对短信记录数据时效性要求不高可忽略此步骤);
1、获取短信记录
应用场景:获取系统中已产生的短信记录
接口限制:每分钟调用20次;单次数量最大为500;短信记录开始—结束时间跨度不超过30天
请求方式: POST
请求地址: https://wpapi.7moor.com/api/v2/device/sms
参数说明:
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求Body:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
page | int | 页码 | true |
pageSize | int | 单页数量 | true |
imeiOrName | string | IMEI或设备持有人 | false |
contactTel | string | 联系号码 | false |
smsType | string | 短信类型:in接收,out发送 | false |
start | string | 开始时间 (发送/接收时间,查询时间跨度不超过30天) | true |
end | string | 结束时间(发送/接收时间) | true |
请求示例:
curl -X POST https://wpapi.7moor.com/api/v2/device/sms?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD -H "Content-Type:application/json" -d '{"page":1,"pageSize":10,"imeiOrName":"867183048059394","smsType":"in","start":"2019-06-17 11:11:11","end":"2019-06-18 12:12:12"}'
成功响应:
{
"code": 1,
"msg": "",
"data": {
"count" : 1,
"list" : [{
"id" : "0e4ccc60-8b6e-4693-87d4-f7d84bf57bf5",
"did" : "e1ec479c-971f-11e9-b311-0242ac120002",
"imei" : "867183048059394",
"smsType" : "out",
"localTel" : "13323333333",
"uid" : "076f2acf-e810-4bc0-9c31-bbc21135709d",
"uName" : "川普",
"contactTel" : "15023333333",
"contactName" : "奥巴马",
"snedTime" : "2019-06-26 11:01:49",
"content" : "短信内容"
}]
}
}
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
id | string | 通话记录的唯一id | true |
did | string | 设备id | true |
imei | string | 设备IMEI码 | true |
smsType | string | 短信类型( in:呼入,out:呼出) | true |
localTel | string | 本机号码 | true |
uid | string | 当时设备持有员工id | true |
uName | string | 当时设备持有员工name | true |
contactTel | string | 联系号码 | true |
contactName | string | 当时联系号码通讯录名称 | false |
sendTime | string | 短信发送或接收时间(例如:2006-01-02 15:04:05) | true |
content | string | 短信内容 | true |
2、新增短信记录推送
应用场景:将系统中新生成的短信记录推送到第三方系统,需提前在智能终端管理后台—设置—高级设置—对接设置中配置推送地址
event: "sms"
字段说明:
字段 | 类型 | 是否必须 |
---|---|---|
_id | string | true |
did | string | true |
imei | string | true |
smsType | string | true |
localTel | string | true |
uid | string | true |
uName | string | true |
contactTel | string | true |
contactName | string | false |
sendTime | string | true |
content | string | true |
推送示例:
{
"event" : "sms",
"body" : {
"_id" : "0e4ccc60-8b6e-4693-87d4-f7d84bf57bf5",
"did" : "e1ec479c-971f-11e9-b311-0242ac120002",
"imei" : "867183048059394",
"smsType" : "out",
"localTel" : "13323333333",
"uid" : "076f2acf-e810-4bc0-9c31-bbc21135709d",
"uName" : "川普",
"contactTel" : "15023333333",
"contactName" : "奥巴马",
"sendTime" : "2019-06-26 11:02:50",
"content" : "短信内容"
}
}
员工个人通话报表
接入前请确认已完成接入openapi准备(接口鉴权)
1、获取员工个人通话报表
请求方式: POST
请求地址: https://wpapi.7moor.com/api/report/callReport
参数说明:
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求Body:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
agentId | string | 员工id(agentId和localPhone不能同时为空) | false |
localPhone | string | 员工手机号(agentId和localPhone不能同时为空) | false |
请求示例:
curl -X POST https://wpapi.7moor.com/api/report/callReport?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD -H "Content-Type:application/json" -d '{"agentId":"d65cca44-930c-11e9-b272-0242ac110006"}'
成功响应:
{
"code": 1,
"msg": "",
"data": {
"today": 31,
"late7": 142,
"late30":176
}
}
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
today | int | 今日通话总数 | true |
late7 | int | 最近7天通话总数 | true |
late30 | int | 最近30天通话总数 | true |
2、获取员工个人通话报表详情
请求方式: POST
请求地址: https://wpapi.7moor.com/api/report/callDetail
参数说明:
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求Body:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
agentId | string | 员工id(agentId和localPhone不能同时为空) | false |
timeSet | string | 时间段(今日:"today", 近7日:"late7",近30日:"late30"),默认今日 | false |
localPhone | string | 员工手机号(agentId和localPhone不能同时为空) | false |
请求示例:
curl -X POST https://wpapi.7moor.com/api/report/callDetail?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD -H "Content-Type:application/json" -d '{"agentId":"d65cca44-930c-11e9-b272-0242ac110006","timeSet":"late7"}'
成功响应:
{
"code": 1,
"msg": "",
"data": {
"in": 45,
"out": 97,
"inConnect": 26,
"outConnect": 41,
"inDuration": 550,
"outDuration": 980,
"timeframe": "2019-07-11 ~ 2019-07-17",
"list": [
{
"date": "2019-07-11",
"in": 0,
"out": 0,
"inDuration": 0,
"outDuration": 0
},
// ...省略部分数据
{
"date": "2019-07-17",
"in": 7,
"out": 24,
"inDuration": 120,
"outDuration": 429
}
]
}
}
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
in | int | 呼入通话总数 | true |
out | int | 呼出通话总数 | true |
inConnect | int | 呼入通话接通数 | true |
outConnect | int | 呼出通话接通数 | true |
inDuration | int | 呼入通话总时长(单位:秒) | true |
outDuration | int | 呼出通话总时长(单位:秒) | true |
timeframe | string | 统计时间段 | true |
list | array | 统计时间段内的数据数组,timeSet=="today"时为null | false |
date | string | 通话数据记录时间 | false |
企业微信数据对接
查询员工与客户企业微信聊天记录步骤
员工企业微信同步(获取员工企业微信号)——企业微信联系人同步(获取客户企业微信号)——企业微信会话信息同步(获取员工与客户会话ID)——企业微信消息同步(获取员工与客户聊天消息)
查询某企业微信群聊天记录步骤
企业微信群信息同步(获取群ID)——企业微信会话信息同步(获取群会话ID)——企业微信消息同步(获取群聊天消息)
若要推送企业微信数据到第三方系统,需提前在智能终端管理后台—设置—高级设置—对接设置中配置推送地址
员工企业微信同步
接入前请确认已完成接入openapi准备(接口鉴权)
同步员工企业微信需要进行二步操作
第一步:获取系统中员工已关联的企业微信;
第二步:定时推送员工关联企业微信数据到第三方系统(若对员工关联企业微信数据时效性要求不高可忽略此步骤);
1、获取员工企业微信
请求方式: POST
请求地址: https://wpapi.7moor.com/api/v2/wechat/getWeChatUserByPage
Params:
位置 | 字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|---|
url | timestamp | string | 毫秒时间戳 | true |
url | accessToken | string | 获取数据的令牌 | true |
body | localPhone | string | 员工登录手机号 | false |
body | page | int | 页码,1 ~ 500 | true |
body | pageSize | int | 每页返回条数,1 ~ 100 | true |
请求示例:
curl -X POST https://wpapi.7moor.com/api/v2/wechat/getWeChatUserByPage?timestamp=xxx&accessToken=foo -H "Content-Type:application/json" -d '{"page": 1,"pageSize": 10}'
成功响应:
位置 | 字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|---|
data | count | int | 总数 | true |
data | list | Array | 详细数据 | true |
list | id | string | 主键Id,即员工微信Id | true |
list | imei | string | 设备Id | true |
list | phone | string | 微信手机号 | false |
list | wxNo | string | 原始企业微信号 | true |
list | wxNo1 | string | 自定义企业微信号,有可能不存在 | false |
list | version | string | 企业微信版本号 | true |
list | nick | string | 企业微信昵称 | true |
list | headImg | string | 小头像 | false |
list | headImg1 | string | 大头像 | false |
{
"code": 1,
"msg": "ok",
"data": {
"count": 3,
"list": [
{
"id": "00557d49-9d7a-11e9-b16f-0242ac110006",
"imei": "4dff585a-930a-11e9-9022-0242ac110005",
"phone": "177xxxx1273",
"wxNo": "wxid_m90g9psrmdbf22",
"wxNo1": "fake_1561617539899",
"version": "7.0.5",
"nick": "电信手",
"headImg": "http://wx.qlogo.cn/mmhead/ver_1/oia0Eng0Lm0xq3Zv4vnM5zcZzYOpQ0KpVsMXicd3fLT2iaUdIicmJCHeO347cQSs1Mv4TJSiauXqWT0Cz7Z2B3gUP0dVvhHcbc3qJib2D68dJHVdU/132",
"headImg1": "http://wx.qlogo.cn/mmhead/ver_1/oia0Eng0Lm0xq3Zv4vnM5zcZzYOpQ0KpVsMXicd3fLT2iaUdIicmJCHeO347cQSs1Mv4TJSiauXqWT0Cz7Z2B3gUP0dVvhHcbc3qJib2D68dJHVdU/0"
}
]
}
}
失败响应:
{
"code": 0,
"msg": "",
"data": null
}
2、员工企业微信全量推送
当前设备登录的企业微信账号信息;全量推送,需要接收方自己去重
event: wxUser
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
id | string | 主键Id,员工微信Id | true |
imei | string | 设备Id | true |
phone | string | 微信手机号 | true |
wxNo | string | 原始企业微信号 | true |
wxNo1 | string | 自定义企业微信号 | false |
version | string | 企业微信版本号 | true |
nick | string | 昵称 | true |
headImg | string | 头像 | true |
headImg1 | string | 大头像 | false |
remark | string | 备注 | false |
示例:
{
"event": "wxUser",
"body": {
"id": "xxx",
"imei": "xxx",
"phone": "138xxxx8888",
"wxNo": "xxx",
"wxNo1": "xxx",
"version": "v1.0.0",
"nick": "昵称",
"headImg": "xxx",
"headImg1": "xxx",
"remark": ""
}
}
企业微信联系人同步
接入前请确认已完成接入openapi准备(接口鉴权)
同步企业微信联系人(员工企业微信号添加的企业微信好友)需要进行二步操作
第一步:获取系统中已有的企业微信联系人;
第二步:新增企业微信联系人数据推送到第三方系统(若对企业微信联系人数据时效性要求不高可忽略此步骤);
1、获取企业微信联系人
请求方式: POST
请求地址: https://wpapi.7moor.com/api/v2/wechat/getWeContactByPage
Params:
位置 | 字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|---|
url | timestamp | string | 毫秒时间戳 | true |
url | accessToken | string | 获取数据的令牌 | true |
body | userWxId | string | 员工企业微信id,从员工企业微信接口获取的主键Id | false |
body | cfTs | uint64 | 检索标记,查询更多传最后一条数据的cfTs | false |
body | pageSize | int | 每页返回条数,1 ~ 500 | true |
数据按照联系人创建时间正序排列,使用cfTs可以查询更新的数据,直到查询区间没有数据为止
请求示例:
curl -X POST https://wpapi.7moor.com/api/v2/wechat/getWeContactByPage?timestamp=xxx&accessToken=foo -H "Content-Type:application/json" -d 'xxx'
成功响应:
位置 | 字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|---|
data | count | int | 总数 | true |
data | list | Array | 详细数据 | true |
list | id | string | 主键Id | true |
list | userWxId | 员工企业微信id,从员工企业微信接口获取的主键Id | true | |
list | agentWxNo | string | 员工企业微信号,自定义和原始微信号都有可能,取决于微信数据库存储的数据 | true |
list | agentNick | string | 员工企业微信昵称,同步好友时的昵称,不会发生改变 | true |
list | wxNo | string | 好友原始企业微信号 | true |
list | wxNo1 | string | 好友自定义企业微信号,有可能不存在 | false |
list | nick | string | 好友昵称 | true |
list | headImg | string | 好友小头像 | false |
list | headImg1 | string | 好友大头像 | false |
list | status | string | 状态,normal 正常,unknown 不确定状态(删除 | 添加好友申请还未通过),delete 删除,blacklist 黑名单 |
list | createTime | string | 创建时间yyyy-MM-dd HH:mm:ss,系统创建时间,微信本身没有创建时间,第一次接入工作手机上传的微信好友创建时间都在同一天 | true |
list | updateTime | string | 创建时间yyyy-MM-dd HH:mm:ss,系统更新时间 | false |
list | ts | string | 创建时间戳 | false |
list | cfTs | int64 | 检索标记,查询更多传最后一条数据的cfTs | false |
list | contactLabelIds | string | 好友标签Id,使用","分割 | false |
list | sign | string | 签名 | false |
list | remark | string | 备注 | false |
{
"code": 1,
"msg": "ok",
"data": {
"count": 206,
"list": [
{
"id": "a989bc40-9329-11e9-b272-0242ac110006",
"userWxId": "xxx",
"agentWxNo": "wxid_1gdsssshs22",
"agentNick": "呵呵1",
"wxNo": "wxid_nss3l12",
"wxNo1": "",
"nick": "A00耘健身小虎 123",
"headImg": "http://wx.qlogo.cn/mmhead/ver_1/vpC9eRFDs0fM7HWDZBUAJZnIhknAOry6dHXdiadURr61Uj0CRyFnn0uEV4z2HD3mk4OejKIsKOLCeLHma9H2C4HUod8picr6IaxayTibq3vMCE/96",
"headImg1": "http://wx.qlogo.cn/mmhead/ver_1/vpC9eRFDs0fM7HWDZBUAJZnIhknAOry6dHXdiadURr61Uj0CRyFnn0uEV4z2HD3mk4OejKIsKOLCeLHma9H2C4HUod8picr6IaxayTibq3vMCE/0",
"status": "normal",
"createTime": "2019-06-20 15:04:35",
"updateTime": "2020-01-02 10:00:00",
"ts": 1561014275882,
"cfTs": 277066244438360065,
"contactLabelIds": "1,2,3,4,5"
}
]
}
}
失败响应:
{
"code": 0,
"msg": "",
"data": null
}
2、新增企业微信联系人推送
当前设备登录的企业微信的好友信息,agentWxNo为wxUser的wxNo或者wxNo1;增量推送,数据可能重复(联系人信息变更),需要接收方自己实现更新逻辑。
event: "wxContact"
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
id | string | 主键Id | false |
imei | string | 设备Id | true |
agentWxNo | string | 当前设备登录企业微信号 | true |
agentNick | string | 当前设备登录企业微信号昵称 | true |
wxNo | string | 企业微信号 | true |
wxNo1 | string | 企业微信号1 | false |
nick | string | 企业微信昵称 | true |
headImg | string | 头像 | false |
headImg1 | string | 大头像 | false |
sign | string | 签名 | false |
remark | string | 备注 | false |
status | string | 状态(normal:正常,unknown 不确定状态(删除 | 添加好友申请还未通过),deleted:已删除,blacklist:已拉黑) |
createTime | string | 系统创建时间 | true |
ts | long | 创建时间时间戳 | true |
contactLabelIds | string | 好友标签Id,使用","分割 | false |
示例:
{
"event": "wxContact",
"body": {
"id": "xxx",
"agentWxNo" : "wxid_adzxxi1i8o22",
"agentNick" : "小仙女",
"wxNo" : "v七陌",
"wxNo1": "wxid_adxi1i8o22",
"nick" : "昵称-s",
"headImg" : "xx",
"headImg1" : "",
"sign" : "",
"remark" : "",
"status" : "",
"createTime" : "2019-06-26 15:31:12",
"ts" : 1562307211188,
"contactLabelIds": "1,2,3,4,5"
}
}
企业微信联系人标签同步
接入前请确认已完成接入openapi准备(接口鉴权)
同步企业微信联系人标签(员工企业微信号添加的企业微信好友)需要进行二步操作
第一步:获取系统中已有的企业微信联系人标签;
第二步:新增企业微信联系人标签数据推送到第三方系统(若对企业微信联系人标签数据时效性要求不高可忽略此步骤);
1、获取企业微信联系人标签
请求方式: POST
请求地址: https://wpapi.7moor.com/api/v2/wechat/getWeLabelByPage
Params:
位置 | 字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|---|
url | timestamp | string | 毫秒时间戳 | true |
url | accessToken | string | 获取数据的令牌 | true |
body | userWxId | string | 员工企业微信id,从员工企业微信接口获取的主键Id | true |
> 通过员工企业微信id一次性获取该员工所有的标签信息 |
请求示例:
curl -X POST https://wpapi.7moor.com/api/v2/wechat/getWeLabelByPage?timestamp=xxx&accessToken=foo -H "Content-Type:application/json" -d 'xxx'
成功响应:
位置 | 字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|---|
data | count | int | 总数 | true |
data | list | Array | 详细数据 | true |
list | id | string | 主键Id | true |
list | userWxId | string | 员工企业微信id,从员工企业微信接口获取的主键Id | true |
list | labelId | string | 员工企业微信号,自定义和原始微信号都有可能,取决于微信数据库存储的数据 | true |
list | labelName | string | 标签名 | true |
list | createTime | string | 创建时间yyyy-MM-dd HH:mm:ss,系统创建时间,微信本身没有创建时间,第一次接入工作手机上传的微信好友标签创建时间都在同一天 | true |
list | lastTime | string | 创建时间yyyy-MM-dd HH:mm:ss,系统更新时间 | false |
{
"code": 1,
"msg": "ok",
"data": {
"count": 206,
"list": [
{
"id": "a989bc40-9329-11e9-b272-0242ac110006",
"userWxId": "xxx",
"labelId": "1",
"labelName": "客户",
"createTime": "2019-06-20 15:04:35",
"lastTime": "2020-01-02 10:00:00"
}
]
}
}
失败响应:
{
"code": 0,
"msg": "",
"data": null
}
2、新增企业微信联系人标签推送
当前设备登录的企业微信的好友标签信息;增量推送,数据可能重复(联系人标签信息变更),需要接收方自己实现更新逻辑。
event: "wxLabel"
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
id | string | 主键Id | false |
userWxId | string | 员工微信Id | true |
labelId | string | 标签Id,联系人信息中contactLabelIds对应的值 | true |
labelName | string | 标签名 | true |
createTime | string | 系统创建时间 | true |
lastTime | string | 系统更新时间 | false |
示例:
{
"event": "wxContact",
"body": {
"id": "a989bc40-9329-11e9-b272-0242ac110006",
"userWxId": "xxx",
"labelId": "1",
"labelName": "客户",
"createTime": "2019-06-20 15:04:35",
"lastTime": "2020-01-02 10:00:00"
}
}
企业微信群信息同步
接入前请确认已完成接入openapi准备(接口鉴权)
同步企业微信群(员工企业微信号拥有的企业微信群)需要进行二步操作
第一步:获取系统中已有的企业微信群;
第二步:新增企业微信群数据推送到第三方系统(若对企业微信群数据时效性要求不高可忽略此步骤);
1、获取企业微信群信息
请求方式: POST
请求地址: https://wpapi.7moor.com/api/v2/wechat/getWeChatRoomByPage
Params:
位置 | 字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|---|
url | timestamp | string | 毫秒时间戳 | true |
url | accessToken | string | 获取数据的令牌 | true |
body | userWxId | string | 员工企业微信id,从员工企业微信接口获取的主键Id | false |
body | cfTs | uint64 | 检索标记,查询更多传最后一条数据的cfTs | false |
body | pageSize | int | 每页返回条数,1 ~ 500 | true |
数据按照群信息创建时间正序排列,使用cfTs可以查询更新的数据,直到查询区间没有数据为止
请求示例:
curl -X POST https://wpapi.7moor.com/api/v2/wechat/getWeChatRoomByPage?timestamp=xxx&accessToken=foo -H "Content-Type:application/json" -d 'xxx'
成功响应:
位置 | 字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|---|
data | count | int | 总数 | true |
data | list | Array | 详细数据 | true |
list | id | string | 主键Id | true |
list | imei | string | 设备Id | true |
list | userWxId | string | 员工企业微信id,从员工企业微信接口获取的主键Id | true |
list | agentWxNo | string | 员工企业微信号 | true |
list | name | string | 群名称 | false |
list | headImg | string | 群头像 | false |
list | memberList | string | 群成员企业微信号,使用";"分割 | true |
list | displayName | string | 群成员展示昵称,存在特殊字符使用群成员企业微信号,使用"、"分割 | false |
list | roomOwner | string | 群主企业微信号 | true |
list | memberCount | string | 群成员数量 | true |
list | selfDisplayName | string | 自己在本群的昵称 | false |
list | createTime | string | 群创建时间,系统时间 | true |
list | lastTime | string | 群更新时间,成分系统时间 | false |
list | cfTs | uint64 | 检索标记,查询更多传最后一条数据的cfTs | false |
{
"code": 1,
"msg": "ok",
"data": {
"count": 41,
"list": [
{
"id": "2a7a1c4d-9323-11e9-b272-0242ac110006",
"imei": "4dff585a-930a-11e9-9022-0242ac110005",
"userWxId": "xxx",
"agentWxNo": "wxid_tzpssr9u22",
"member": [
"ffc17316-a454-11e9-adf5-0242ac110009"
],
"name": "打农药的王者",
"headImg": "http://wx.qlogo.cn/mmcrhead/0A9uqO1pZiaF4lYYdhU3bdKSUaNHibf1qof0GZ5gZ6HwUbVaZAtb8icUicTBmic8rJzQNZNas8KIiaTyXafbiatpoCeo2lwCMibKL2qr/0",
"memberList": "lu616601854;ZhangJunBo666666;haibing0;wxid_rl6ewf0wsb5a31;wxid_j88919z5u6ta22;weiliyangcool;wxid_v0mldafv7qc822;wxid_zhuvuxo5i22922;wxid_tzp39rgo8r9u22;a29776044;artemuslll;wxid_veoyvjwusrnh22;wxid_vmp7hmxkyzo12;wxid_r610uc4a5tm541;chongjing344054",
"displayName": "黄璐、ZhangJunBo666666、haibing0、王加、wxid_j88919z5u6ta22、weiliyangcool、高翔、wxid_zhuvuxo5i22922、菜头、a29776044、李、wxid_veoyvjwusrnh22、王添、wxid_r610uc4a5tm541、chongjing344054",
"roomOwner": "lu616601854",
"memberCount": "15",
"createTime": "2020-01-02 10:00:00",
"lastTime": "2020-01-02 10:00:00",
"cfTs": 277066244438360065
}
]
}
}
失败响应:
{
"code": 0,
"msg": "",
"data": null
}
2、获取企业微信群成员信息
请求方式: POST
请求地址: https://wpapi.7moor.com/api/v2/wechat/getWeChatRoomMemberByPage
Params:
位置 | 字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|---|
url | timestamp | string | 毫秒时间戳 | true |
url | accessToken | string | 获取数据的令牌 | true |
body | chatRoomId | string | 群Id,从企业微信群信息接口获取的主键Id | true |
根据群id一次性拉取完所有的成员数据
请求示例:
curl -X POST https://wpapi.7moor.com/api/v2/wechat/getWeChatRoomMemberByPage?timestamp=xxx&accessToken=foo -H "Content-Type:application/json" -d 'xxx'
成功响应:
位置 | 字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|---|
data | count | int | 总数 | true |
data | list | Array | 详细数据 | true |
list | id | string | 主键Id | true |
list | chatRoomId | string | 群Id | true |
list | nick | string | 昵称 | true |
list | headImg | array | 头像 | false |
list | wxNo | string | 企业微信号 | false |
list | isAgent | string | 是否是员工, false的时候字段被忽略 | false |
list | agentWxNo | string | 员工企业微信号 | false |
list | createTime | string | 创建时间,系统时间 | true |
list | lastTime | string | 修改时间,系统时间 | false |
list | cfTs | uint64 | 检索标记,查询更多传最后一条数据的cfTs | true |
{
"code": 1,
"msg": "ok",
"data": {
"count": 15,
"list": [
{
"id": "ffc21cdb-a454-11e9-adf5-0242ac110009",
"chatRoomId": "2a7a1c4d-9323-11e9-b272-0242ac110006",
"nick": "海冰",
"headImg": "http://wx.qlogo.cn/mmhead/ver_1/44r4BtQoRnccWSGIia3QGbITSlhEYM1MUBj7JSDkazfpOXD98SoyL9FoibxxSfg3wQJCr4oFHkiaYQOuRjGHePGVw/132",
"wxNo": "haibsng0",
"isAgent": true,
"agentWxNo": "haisng0",
"createTime": "2020-01-02 10:00:00",
"lastTime": "2020-01-02 10:00:00",
"cfTs": 277066244438360065
}
]
}
}
失败响应:
{
"code": 0,
"msg": "",
"data": null
}
3、新增群信息推送
当前设备登录的企业微信的群信息,agentWxNo为wxUser的wxNo或者wxNo1;增量推送,需要接收方自己去重
event: "wxChatRoom"(群)
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
id | string | 主键Id | true |
imei | string | 设备Id | true |
agentWxNo | string | 员工企业微信号 | true |
name | string | 群名称 | true |
headImg | string | 群头像 | false |
memberList | string | 群成员企业微信号,使用“;”分割 | true |
displayName | string | 群成员企业微信昵称(含有特殊字符使用企业微信号),使用“、”分割 | true |
roomOwner | string | 群主企业微信Id | true |
selfDisplayName | string | 自己在群里面的昵称 | false |
memberCount | int | 群成员数量 | true |
示例:
{
"event": "wxChatRoom",
"body": {
"id": "xxx",
"imei": "xxx",
"agentWxNo": "wxid_adzpssi8o22",
"name": "慧算账内部沟通裙",
"headImg": "xxx",
"memberList": "xx;xx",
"displayName": "xxx、xx",
"roomOwner": "wxid_eh6ss1n1c521",
"selfDisplayName": "",
"memberCount": "12"
}
}
event: "wxChatRoomMember"(群成员)
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
id | string | 主键Id | true |
chatRoomId | string | 所属群id,即chatRoom的Id | true |
nick | string | 昵称 | true |
headImg | string | 小头像 | false |
headImg1 | string | 大头像 | false |
wxNo | string | 企业微信号 | true |
isAgent | bool | 是否是员工 | true |
agentWxNo | string | 员工企业微信Id | true |
示例:
{
"event": "wxChatRoomMember",
"body": {
"id": "xxx",
"chatRoomId": "xxx",
"nick": "xxx",
"headImg": "xxx",
"headImg1": "xxx",
"wxNo": "xxx",
"isAgent": false,
"agentWxNo": ""
}
}
企业微信会话信息同步
接入前请确认已完成接入openapi准备(接口鉴权)
同步企业微信会话(主要获取企业微信联系人或企业微信群的会话ID便于查询企业微信消息)需要进行二步操作
第一步:获取系统中已有的企业微信会话;
第二步:新增企业微信会话数据推送到第三方系统(若对企业微信会话数据时效性要求不高可忽略此步骤);
1、获取企业微信会话信息
请求方式: POST
请求地址: https://wpapi.7moor.com/api/v2/wechat/getWeChatByPage
Params:
位置 | 字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|---|
url | timestamp | string | 毫秒时间戳 | true |
url | accessToken | string | 获取数据的令牌 | true |
body | userWxId | string | 员工企业微信id,从员工企业微信接口获取的主键Id | false |
body | cfTs | uint64 | 检索标记,查询更多传最后一条数据的cfTs | false |
body | pageSize | int | 每页返回条数,1 ~ 500 | true |
数据按照会话创建时间正序排列,使用cfTs可以查询更新的数据,直到查询区间没有数据为止
请求示例:
curl -X POST https://wpapi.7moor.com/api/v2/wechat/getWeChatByPage?timestamp=xxx&accessToken=foo -H "Content-Type:application/json" -d 'xxx'
成功响应:
位置 | 字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|---|
data | count | int | 总数 | true |
data | list | Array | 详细数据 | true |
list | id | string | 主键Id | true |
list | userWxId | string | 员工企业微信id,从员工企业微信接口获取的主键Id | true |
list | agentWxNo | string | 员工企业微信号 | true |
list | contactWxNo | string | 好友企业微信号,群聊没有 | false |
list | contactId | string | 联系人Id,联系人接口获取的主键Id(会话类型为single有值) | false |
list | group | string | 群Id,群信息接口获取的主键Id,(会话类型为group有值) | false |
list | chatType | string | 聊天类型 group 群聊,single 单聊,(不存在或者空为公众号会话) | false |
list | isSend | string | 会话发起 0 :对方 1:自己 | true |
list | createTime | string | 会话创建时间yyyy-MM-dd HH:mm:ss,微信原始时间 | true |
list | lastTime | string | 最新消息时间,可能滞后于最新的消息 | false |
list | cfTs | uint64 | 检索标记,查询更多传最后一条数据的cfTs | true |
{
"code": 1,
"msg": "ok",
"data": {
"count": 43,
"list": [
{
"id": "2b0959b1-9323-11e9-b272-0242ac110006",
"userWxId": "xxx",
"agentWxNo": "wxid_tzsrgo8r9u22",
"group": "2b06e8a8-9323-11e9-b272-0242ac110006",
"chatType": "group",
"isSend": "0",
"createTime": "2020-01-02 10:00:00",
"lastTime": "2020-01-02 10:00:00",
"cfTs": 277066244438360065
}
]
}
}
失败响应:
{
"code": 0,
"msg": "",
"data": null
}
2、新增企业微信会话推送
当前设备登录的企业微信的会话信息,agentWxNo为wxUser的wxNo或者wxNo1;增量推送
event: "wxChat"
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
id | string | 主键Id | true |
imei | string | 设备Id | true |
agentWxNo | string | 员工企业微信号 | true |
contactWxNo | string | 联系人企业微信号(1v1聊天有值) | false |
group | string | 群id,(会话类型为group有值) | false |
chatType | string | 会话类型(group:群,single:单个聊天) | true |
isSend | string | 会话发起 0 :对方 1:自己 | true |
示例:
{
"event": "wxChat",
"body": {
"id": "xxx",
"imei" : "设备Id",
"agentWxNo" : "xxx",
"contactWxNo" : "",
"group" : "",
"chatType" : "group",
"isSend" : "0"
}
}
企业微信消息同步
接入前请确认已完成接入openapi准备(接口鉴权)
查询员工与客户企业微信聊天记录步骤
员工企业微信同步(获取员工企业微信号)——企业微信联系人同步(获取客户企业微信号)——企业微信会话信息同步(获取员工与客户会话ID)——企业微信消息同步(获取员工与客户聊天消息)
查询某企业微信群聊天记录步骤
企业微信群信息同步(获取群ID)——企业微信会话信息同步(获取群会话ID)——企业微信消息同步(获取群聊天消息)
1、获取企业微信消息
接口限制:每分钟调用20次;单次数量最大为500
请求方式: POST
请求地址: https://wpapi.7moor.com/api/v2/wechat/getWeMessageByPage
Params:
位置 | 字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|---|
url | timestamp | string | 毫秒时间戳 | true |
url | accessToken | string | 获取数据的令牌 | true |
body | sendDate | string | 发送消息日期(yyyy-MM-dd) | true |
body | cfTs | uint64 | 检索标记,查询更多传最后一条数据的cfTs | false |
body | pageSize | int | 每页返回条数,1 ~ 500 | true |
消息发送日期按天过滤数据,一次最多一天
在指定的时间范围内,数据按照消息时间正序排列,使用cfTs可以查询更新的数据,直到查询区间没有数据为止
请求示例:
curl -X POST https://wpapi.7moor.com/api/v2/wechat/getWeMessageByPage?timestamp=xxx&accessToken=foo -H "Content-Type:application/json" -d 'xxx'
成功响应:
位置 | 字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|---|
data | count | int | 总数 | true |
data | list | Array | 详细数据 | true |
list | id | string | 主键Id | true |
list | chatId | string | 会话Id,会话信息的主键Id | true |
list | from | string | 群聊消息发送人,消息发送人的原始/自定义微信号;如果自己发的消息,此字段为空;单聊使用isSend即可判断 | false |
list | msg | string | 消息内容 | false |
list | msgType | string | 消息类型 | true |
list | date | string | 发送日期 | true |
list | ts | int | 发送时间戳 | true |
list | msgId | string | 聊天信息id | true |
list | isSend | string | 会话发起 0 :对方/群成员 1:自己 | true |
list | msgSvrId | string | 多媒体消息Id | false |
list | thumbImgPath | string | 语音消息,图片小图,视频封面 | false |
list | bigImgPath | string | 图片大图,视频链接 | false |
list | cfTs | uint64 | 检索标记,查询更多传最后一条数据的cfTs | true |
{
"code": 1,
"msg": "ok",
"data": {
"count": 75,
"list": [
{
"id": "43b3a7f5-9328-11e9-b272-0242ac110006",
"chatId": "2b0959b1-9323-11e9-b272-0242ac110006",
"from": "293ab6bc-9323-11e9-b272-0242ac110006",
"msg": "\n真的是好难约噢",
"msgType": "1",
"date": "2019-06-20",
"ts": 1561013064,
"msgId": "82",
"isSend": "0",
"msgSvrId": "9046641001935868169",
"cfTs": 277066244438360065
}
]
}
}
失败响应:
{
"code": 0,
"msg": "",
"data": null
}
2、新增企业微信消息推送
当前设备登录的企业微信的消息信息,chatId为wxChat的Id;增量推送
event: "wxMessage"
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
id | string | 主键Id | true |
imei | string | 设备Id | true |
chatId | string | 会话Id | true |
from | string | 发送人 (可能为空,通过消息类型来分辨) | false |
msg | string | 消息内容 | false |
msgType | int | 消息类型 | true |
date | string | 发送日期 | true |
ts | long | 发送时间戳(毫秒) | true |
payId | string | 转账、红包Id | false |
msgId | string | 聊天信息id | true |
isSend | string | 发送方 0:对方;1:自己 | false |
msgSvrId | string | 多媒体消息Id | false |
thumbImgPath | string | 图片缩略图、语音消息、视频封面 | true |
bigImgPath | string | 图片原图,视频连接 | false |
{
"event": "wxMessage",
"body": {
"id" : "xxx",
"imei" : "xxx",
"chatId" : "xxx",
"from" : "xxx",
"msg" : "原先是多少啊",
"msgType" : 1,
"date" : "2019-06-26",
"ts" : 1561531920,
"payId" : "",
"msgId" : "3",
"isSend" : "0",
"msgSvrId": "xx",
"thumbImgPath": "xx",
"bigImgPath": "xx"
}
}
3、新增多媒体数据推送
当前设备登录的企业微信的消息的多媒体消息,id对应wxMessage的msgSvrId;增量推送
event: "wxMedia"
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
id | string | 主键Id | true |
thumbImgPath | string | 图片缩略图、语音消息、视频封面 | true |
bigImgPath | string | 图片原图,视频连接 | false |
{
"event": "wxMedia",
"body": {
"id": "xxx",
"thumbImgPath": "",
"bigImgPath": ""
}
}
4、新增企业微信语音消息转文本推送
当前设备登录的企业微信的语音消息转换为文本,id对应wxMessage的Id;增量推送
event: "wxVoiceContent"
字段说明:
字段 | 类型 | 说明 | 是否必须 |
---|---|---|---|
id | string | 主键Id | true |
msgContent | string | 语音消息转换后的文本(按照普通话转化,方言口音转换准确率较低) | true |
{
"event": "wxMedia",
"body": {
"id": "xxx",
"msgContent": ""
}
}
5、企业微信消息类型说明
msgType 类型说明(注意语音消息,转换成文本成功,对应的文本字段也是msg)
类型 | 解释 |
---|---|
101 | 文本 |
102 | 图片 |
103 | 语音 |
104 | 视频 |
105 | 名片 |
106 | 地理位置 |
107 | 分享链接,网址,文件 |
108 | 系统消息 |
109 | 撤回消息 |
110 | 群系统消息 |
111 | SEMI_XML |
112 | 红包 |
113 | 群收款 |
114 | 群收款提醒 |
115 | 转账 |
116 | 表情(m7_msg内容http开头的展示图片,其他的展示展位图),未下载动图表情 |
117 | 语音电话/视频电话 |
119 | 素材库分享消息 |
120 | 位置共享 |
121 | 企微名片 |
122 | 转账分享 |
123 | 微信卡包 |
124 | 微信亲属卡 |
125 | 微信小游戏 |
126 | 链接 |
127 | 文件 |
128 | 聊天记录 |
129 | 未知的消息类型 |
130 | 引用消息 |
0 | 其他类型 |
文本
- 类型:101
- 数据结构:
wxMessage中的msg
{
"msg": "这是文本"
}
图片、语音、视频
- 类型:102、103、104
- 数据结构:
wxMedia的存储结构
{
"bigImgPath" : "test_big.jpg",
"thumbImgPath" : "test_thumb.jpg"
}
名片
- 类型:105
- 数据结构:
wxMessage中的msg,json格式的字符串
{
"nickName": "一块二包邮",
"wxNo": "gh_66cxf58915",
"bigHeadImgUrl": "http://wx.qlogo.cn/mmhead/Q3auHgzwzM5riaOEnlFZtibiaMZMpIricKZaosia2ExVGKzNZga4D2L92OQ/0",
"smallHeadImgUrl": "http://wx.qlogo.cn/mmhead/Q3auHgzwzM5riaOEnlFZtibiaMZMpIricKZaosia2ExVGKzNZga4D2L92OQ/96"
}
地理位置
- 类型:106
- 数据结构:
wxMessage中的msg,json格式的字符串
{
"log": "104.062881",
"lat": "30.554096",
"address": "蜀都中心二期(武侯区吉庆三路333号)",
"wxNo": "wxid_008x784612"
}
分享链接,网址,文件 等
- 类型:107
- 数据结构:
wxMessage中的msg,json格式的字符串
{
"title": "余林呱与余林🐑的聊天记录", //标题
"des": "余林呱:[图片]\n余林呱:那个。。给我发个红包???\n余林呱:[动画表情]\n余林呱:[图片]\n余林呱:[色]...", //描述
"type": "19", //类型:33 小程序,5 链接,6 文件, 19 聊天记录
"showtrueype": "0",
"url": "https://support.weixin.qq.com/cgi-bin/mmsupport-bin/readtemplate?t=page/favorite_record__w_unsupport\u0026from=singlemessage\u0026isappinstalled=0",//企业微信内部链接
"recordItem": "余林呱与余林🐑的聊天记录" //详细内容
}
系统消息
- 类型:108
- 数据结构:
wxMessage中的msg,json格式的字符串
{
"content": "\"A手机维修二手买卖\" 撤回了一条消息", //内容
"payId": "", //企业微信支付Id(红包有值)
"msgIsSend": "", //原始消息发送类型(红包有值)
"type": 3 //类型 1 红包,2 普通消息,3 未知消息
}
{
"content":"位置共享已经结束", //内容
"payId":"", //红包企业微信支付Id
"msgIsSend": "",
"type":2 //类型 1 红包,2 普通消息,3 未知消息
}
{
"content":"H.Note领取了你的红包",
"payId":"1000039501201906056015038761805",
"msgIsSend": "",
"type":1
}
{
"content": "\"H.Note\" 撤回了一条消息",
"payId": "",
"msgIsSend": "",
"type": 2
}
撤回的消息
- 类型: 109
- 数据结构:
wxMessage中的msg,json格式的字符串
{
"test": "你撤回了一条消息", //撤回消息展示
"timestrueamp": "1560150444638", //撤回消息发送时间
"preContent": "这是第三条消息", //撤回消息内容
"link": {
"text": "重新编辑"
}
}
群系统消息
- 类型:110
- 数据结构:
wxMessage中的msg,字符串格式
{
"msg": `"名字"邀请"余林🐑"加入了群聊`
}
{
"msg": `"名字"修改群名为“测试群”`
}
{
"msg": `"superwomen"邀请你加入了群聊,群聊参与人还有:呵呵😄`
}
红包
- 类型:112
- 数据结构:
wxMessage中的msg,json格式的字符串
{
"des": "我给你发了一个红包,赶紧去拆!",
"url": "https://wxapp.tenpay.com/mmpayhb/wxhb_personalreceive?showwxpaytitle=1\u0026msgtype=1\u0026channelid=1\u0026sendid=1000039501201906056011499657896\u0026ver=6\u0026sign=6cabac162d11b76b628227520ee424b1e3878d33e78df534abba75b16c9cf1d36fede8e6db6677195b986d7a31e887fabaeeba13e6614b49334fd3d26b047d81a65fc89e97a304e6e2e7803398f0c573",
"type": "2001",
"title": "企业微信红包",
"thumbUrl": "https://wx.gtimg.com/hongbao/1800/hb.png",
"wcPayInfo": {
"templateId": "7a2a165d31da7fce6dd77e05c300028a",
"url": "https://wxapp.tenpay.com/mmpayhb/wxhb_personalreceive?showwxpaytitle=1\u0026msgtype=1\u0026channelid=1\u0026sendid=1000039501201906056011499657896\u0026ver=6\u0026sign=6cabac162d11b76b628227520ee424b1e3878d33e78df534abba75b16c9cf1d36fede8e6db6677195b986d7a31e887fabaeeba13e6614b49334fd3d26b047d81a65fc89e97a304e6e2e7803398f0c573",
"iconUrl": "https://wx.gtimg.com/hongbao/1800/hb.png",
"receivertrueitle": "普天同庆", //收到的红包标题
"sendertrueitle": "普天同庆", //发送的红包标题
"scenetrueext": "企业微信红包", //场景描述,1002对应的为企业微信红包
"senderDes": "查看红包", //发送的红包描述
"receiverDes": "领取红包", //收到的红包描述
"nativeUrl": "wxpay://c2cbizmessagehandler/hongbao/receivehongbao?msgtype=1\u0026channelid=1\u0026sendid=1000039501201906056011499657896\u0026sendusername=wxid_1gdwolwrn5hs22\u0026ver=6\u0026sign=6cabac162d11b76b628227520ee424b1e3878d33e78df534abba75b16c9cf1d36fede8e6db6677195b986d7a31e887fabaeeba13e6614b49334fd3d26b047d81a65fc89e97a304e6e2e7803398f0c573",
"sceneId": "1002", //类型:1002 红包,1001 群收款
"innertrueype": "0",
"payMsgId": "1000039501201906056011499657896", //企业微信支付交易Id
"Invalidtrueime": "1559803593",
"m7trueype": "0" //收钱类型 0 未领取,1 已领取
}
}
群收款
- 类型 113
- 数据结构:
wxMessage中的msg,json格式的字符串
{
"des": "",
"url": "https://support.weixin.qq.com/security/readtemplate?t=w_security_center_website/upgrade\u0026wechat_real_lang=zh_CN",
"type": "2001",
"title": "",
"thumbUrl": "http://wx.gtimg.com/hongbao/img/newaa_3x.png",
"wcPayInfo": {
"templateId": "b9a794071ca79264fb48909c24f2c6cc",
"url": "https://support.weixin.qq.com/security/readtemplate?t=w_security_center_website/upgrade\u0026wechat_real_lang=zh_CN",
"iconUrl": "http://wx.gtimg.com/hongbao/img/newaa_3x.png",
"receivertrueitle": "活动账单",
"sendertrueitle": "活动账单",
"scenetrueext": "活动账单",
"senderDes": "每人需支付0.02元",
"receiverDes": "每人需支付0.02元",
"nativeUrl": "",
"sceneId": "1001",
"innertrueype": "0",
"payMsgId": "",
"Invalidtrueime": "1562226087",
"newAa": {
"billNo": "00db48218eb1a54d77489c9bb4fcd80bb22bd76fdd5d1316e8df44490f9f68aba92abfd31eb7b217dcb88e490b3d0e02",
"newAatrueype": "2",
"receiverList": "wxid_1gdwolwrn5hs22,1,5,0",//发起人企业微信号,收款状态?3 = 已收齐,2 = 有人支付,1 = 无人支付,参与人数,已支付人数
"payerList": "wxid_tzp39rgo8r9u22,2,1|wxid_m90g9psrmdbf22,2,1|wxid_afhuw9rhn5dy22,2,1|wxid_1mel9kj31aft22,2,1|wxid_0080250784612,2,1"//支付人企业微信号,需支付金额(单位:分),支付状态:1 = 未支付,2 = 已支付
},
"m7trueype": "0"
},
"content": ""
}
群收款提示
- 类型 114
- 数据结构:
wxMessage中的msg,json格式的字符串
{
"content": "@菜头 @「卷心菜」 @呵呵😄 @电信手机📱 @余林呱\n你有一笔未支付的群收款", //消息内容
"payId": "0db48218eb1a54d77489c9bb4fcd80b50b2aa1cb9846f6a12cb53f24f8ce45a910f32bdc64fc4d5eaf51bbf30ed4c4d" //收款支付Id
}
转账
- 类型:115
- 数据结构
wxMessage中的msg,json格式的字符串
{
"title": "企业微信转账",
"des": "收到转账0.01元。如需收钱,请点此升级至最新版本",
"type": "2000",
"content": "",
"url": "https://support.weixin.qq.com/cgi-bin/mmsupport-bin/readtemplate?t=page/common_page__upgrade\u0026text=text001\u0026btn_text=btn_text_0",
"thumbUrl": "https://support.weixin.qq.com/cgi-bin/mmsupport-bin/readtemplate?t=page/common_page__upgrade\u0026text=text001\u0026btn_text=btn_text_0",
"lowurl": "",
"extinfo": "",
"wcPayInfo": {
"paySubtrueype": "3", //转账类型
"feeDesc": "¥0.01", //转账金额
"transcationId": "100005010119060500024224115148949337",//交易Id
"transferId": "1000050101201906051703664585970",//转账Id
"invalidtrueime": "1559813867",//失效时间
"begintrueransfertrueime": "1559727467",//开始时间
"effectiveDate": "1",
"payMsgId": "",
"payMemo": "",//转账附加消息
"hastrueransferAddress": "",
"m7trueype": "2" //领取类型
}
}
内部字段解释
paySubType | 解释 |
---|---|
1 | 实时转账 |
3 | 实时转账收钱回执 |
4 | 转账退还回执 |
5 | 非实时转账收钱回执 |
7 | 非实时转账 |
m7Type | 解释 |
---|---|
0 | 未领取 |
1 | 已被领取(paySubType==1,7) |
2 | 已领取(paySubType==3) |
3 | 已退还(paySubType==1,4,7) |
4 | 已领取待入账(paySubType==5,7) |
企业微信新增及关联客户报表
接入前请确认已完成接入openapi准备(接口鉴权)
请求方式: POST
请求地址: https://wpapi.7moor.com/api/wechat/getWeContactAddByPage
Params:
位置 | 字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|---|
url | timestamp | string | 毫秒时间戳 | true |
url | accessToken | string | 获取数据的令牌 | true |
body | localPhone | string | 员工登陆手机号 | false |
body | userName | string | 员工昵称 | false |
body | start | string | 开始区间(yyyy-MM-dd) | true |
body | end | string | 结束区间(yyyy-MM-dd) | true |
body | page | int | 页码,1 ~ 500 | true |
body | pageSize | int | 每页返回条数,1 ~ 100 | true |
请求示例:
curl -X POST https://wpapi.7moor.com/api/wechat/getWeContactAddByPage?timestamp=xxx&accessToken=foo -H "Content-Type:application/json" -d '{"start": "2019-11-13", "end": "2019-11-14","page": 1,"pageSize": 10}'
成功响应:
位置 | 字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|---|
data | count | int | 总数 | true |
data | list | Array | 详细数据 | true |
list | id | string | 主键Id | true |
list | agentId | string | 员工企业微信Id | true |
list | uid | string | 员工Id | true |
list | agentNick | string | 员工企业微信昵称 | true |
list | userName | string | 员工昵称 | true |
list | addNum | int64 | 好友添加数 | true |
list | relationCusNum | int64 | 企业微信好友关联客户数,历史数据会没有此字段 | false |
{
"code": 1,
"msg": "ok",
"data": {
"count": 2,
"list": [
{
"id": "a92d849b-9329-11e9-b272-0242ac110006",
"agentId": "a92d849b-9329-11e9-b272-0242ac110006",
"uid": "fbadfee6-930d-11e9-b272-0242ac110006",
"agentNick": "xx",
"userName": "张三",
"addNum": 21,
"relationCusNum": 8
},
{
"id": "af9fefc9-a93f-11e9-b34b-0242ac110009",
"agentId": "af9fefc9-a93f-11e9-b34b-0242ac110009",
"uid": "fbadfee6-930d-11e9-b272-0242ac110006",
"agentNick": "xx",
"userName": "张三",
"addNum": 14
}
]
}
}
失败响应:
{
"code": 0,
"msg": "",
"data": null
}
智能终端能力调用
支持第三方调用接口使用智能终端的能力:拨打电话(调用后智能终端直接进行呼叫)、发送短信(调用后智能终端对目标号码发送短信)、第三方自动加企业微信(调用后智能终端直接在企业微信中添加目标企业微信)
拨打电话V1版
接入前请确认已完成接入openapi准备(接口鉴权)
应用场景:在第三方系统调用接口让智能终端自动外呼,支持传输第三方唯一值绑定通话记录或录音
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/callPhone
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求body:
{
"callPhone": "13899999999",
"userPhone": "13877777777",
"isEncrypt": true,
"callId": "uuid",
"callType": "xxx"
}
字段说明:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
callPhone | string | 被叫手机号码 | true |
userPhone | string | 员工手机号码 | true |
isEncrypt | bool | 该通外呼是否加密被叫手机号码 | false |
callId | string | 第三方自定义该值(请确保唯一性),方便快速匹配通话记录或录音 | false |
callType | string | 外呼方式Id,由第三方对接获取 | false |
请求示例:
curl -X POST https://wpapi.7moor.com/api/crm/callPhone?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD -H "Content-Type:application/json" -d '{"callPhone":"13899999999","userPhone":"13788888888"}'
成功响应:
{
"code": 1,
"msg": "",
"data": {}
}
拨打电话v2版
接入前请确认已完成接入openapi准备(接口鉴权)
应用场景:在第三方系统调用接口让智能终端自动外呼,支持传输第三方唯一值绑定通话记录或录音和传输第三方系统手机号对应的客户姓名自动创建客户(若此手机号客户已存在,则更新客户姓名)
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/callPhoneAndAddCus
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求body:
{
"callPhone": "13899999999",
"userPhone": "13877777777",
"isEncrypt": true,
"callId": "uuid",
"name": "zhangsan"
}
字段说明:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
callPhone | string | 被叫手机号码 | true |
userPhone | string | 员工手机号码 | true |
isEncrypt | bool | 该通外呼是否加密被叫手机号码 | false |
callId | string | 第三方自定义该值(请确保唯一性),方便快速匹配通话记录或录音 | false |
name | string | 客户姓名 | true |
请求示例:
curl -X POST https://wpapi.7moor.com/api/crm/callPhoneAndAddCus?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD -H "Content-Type:application/json"
成功响应:
{
"code": 1,
"msg": "",
"data": {}
}
第三方外呼接入
- 目前只支持小号外呼对接
第一步:提供外呼接口,保证可以外网访问,并且符合如下条件
请求方式:POST
参数:
字段 | 类型 | 备注 |
---|---|---|
cid | string | 客户唯一id |
userPhone | string | 员工注册手机号 |
callPhone | string | 外呼号码,一般指被叫客户号码 |
callType | string | 外呼方式Id,调用拨打电话 接口使用 |
参数类型:JSON,即 curl -X POST http://xxx.xxx.xxx -H "Content-Type:application/json" -d {}
返回值:成功:{"code": 1, msg: "xxx"}, 失败code != 1 即可
第二步:联系运维人员配置外呼接口
发送短信
接入前请确认已完成接入openapi准备(接口鉴权)
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/smsPhone
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求body:
{
"toPhone": ["13899999999", "13866666666"],
"userPhone": "13877777777",
"content": "hello world"
}
字段说明:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
toPhone | string | 接收短信的目标号码(不能超过100个目标号码) | true |
userPhone | string | 员工手机号码 | true |
content | string | 短信内容(不能超过140个字符) | true |
请求示例:
curl -X POST https://wpapi.7moor.com/api/crm/callPhone?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD -H "Content-Type:application/json" -d '{"callPhone":["13899999999", "13866666666"],"userPhone":"13788888888", "content": "hello world"}'
成功响应:
{
"code": 1,
"msg": "",
"data": {}
}
第三方自动加企业微信
接入前请确认已完成接入openapi准备(接口鉴权)
此处实现逻辑为调用智能终端后,手机自动进入企业微信,在添加好友页面检索“phone”字段传输内容搜索企业微信好友
请求方式: POST
请求地址: https://wpapi.7moor.com/api/crm/autoAddWx
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
请求body:
{
"phone": "138xxxx9999",
"userPhone": "138xxxx7777",
"word": "hello",
"remark": "好友备注"
}
字段说明:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
phone | string | 被加企业微信的手机号码或企业微信号 | true |
userPhone | string | 员工手机号码 | true |
word | string | 打招呼文字(最多30个文字) | false |
remark | string | 微信好友备注(最多29个文字) | false |
请求示例:
curl -X POST https://wpapi.7moor.com/api/crm/autoAddWx?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD -H "Content-Type:application/json" -d '{"phone":"138xxxx9999","userPhone":"137xxxx8888", "remark": "haha"}'
成功响应:
{
"code": 1,
"msg": "",
"data": {}
}
登陆单点登录系统
支持第三方通过授权认证实现免密登陆
ticket认证登陆
请求方式: POST
请求地址: https://wpapi.7moor.com/external/lzdc/sso
Params:
字段 | 类型 | 描述 | 是否必须 |
---|---|---|---|
timestamp | string | 1970年1月1日至今的毫秒数 | true |
accessToken | string | 获取数据的令牌 | true |
ticket | string | ticket信息 | true |
请求示例:
curl -X GET https://wpapi.7moor.com/external/lzdc/sso?timestamp=1562734640000&accessToken=70C5F5F19942DF9378422B649D3E14BD&ticket=xxx -H "Content-Type:application/json"'
成功响应:
{
"code": 1,
"msg": "",
"data": {
"url": "https://http://wp.dustess.com/#/login?from=lzdc&ticket=xxx"
}
}