1 添加客户
接口说明:使用此接口可以进行客户资料的添加,请求参数可以参考下面的字段及示例。如需进行修改删除,请务必保留客户创建成功后提供的_id。如需有自定义字段,可先调用,查询客户字段配置列表接口,去获取自定义字段。
1.1 URL
POST /openapi/crm/add
1.2 请求参数
| 字段 | 名称 | 类型 | 是否必填 | 备注 |
| customerName | 客户名字 | String | Y | |
| assignTime | 归属时间 | String | N | |
| owner | 可传所属人id或公海id | String | N | |
| createMethod | 创建方式 | String | N | |
| mobile | 手机 | List<PhoneProperty> | N | |
| 邮箱 | List<EmailProperty> | N | ||
| List<QqProperty> | N | |||
| 微信 | List<WechatProperty> | N | ||
| visitorId | 访客进线id | String | N | 网页渠道访客进线时所传的visitorId,若能对应上,那么访客对话将会自动匹配上客户资料 |
| mobileDecrypt | 手机号解密方式 | String | N | 目前仅支持:Haier |
PhoneProperty、EmailProperty、QqProperty、WechatProperty
| 字段 | 名称 | 类型 |
| value | 值 | String |
| memo | 备注 | String |
1.3 返回参数
| 字段名称 | 字段类型 | 是否必填 | 字段描述 |
| success | bol | 是 | 成功标识 |
| message | String | 是 | 接口信息 |
| code | String | 是 | 状态码 “200”-成功 |
| traceId | String | 是 | 请求唯一标识 |
| data | Object | 是 | 返回结果 |
| -count | Int | 是 | 结果数量 |
| -list | array | 是 | 结果数组 |
| --_id | String | 是 | id |
| --accountId | String | 是 | 账号 |
| --customerName | String | 否 | 客户名称 |
| --owner | String | 否 | 归属人 |
| --assignTime | String | 否 | 归属时间 |
| --createMethod | String | 否 | 创建方式 |
| --mobile | array | 否 | 手机 |
| ---value | String | 否 | 手机号 |
| ---memo | String | 否 | 备注 |
| array | 否 | 邮箱 | |
| ---value | String | 否 | 邮箱 |
| ---memo | String | 否 | 备注 |
| array | 否 | ||
| ---value | String | 否 | qq号 |
| ---memo | String | 否 | 备注 |
| array | 否 | 微信 | |
| ---value | String | 否 | 微信号 |
| ---memo | String | 否 | 备注 |
| firstOwner | String | 否 | 首次归属人 |
| firstAssignTime | String | 否 | 首次归属时间 |
| importBatchNumber | String | 否 | 导入批次号 |
| lastCallTime | String | 否 | 最后一次呼叫时间 |
| lastCallUser | String | 否 | 最后一次呼叫用户 |
| firstCallTime | String | 否 | 第一次呼叫时间 |
| firstCallUser | String | 否 | 第一次呼叫用户 |
| lastChatTime | String | 否 | 最后一次聊天时间 |
| lastChatUser | String | 否 | 最后一次聊天用户 |
| createAgent | String | 否 | 创建人 |
| createTime | String | 否 | 创建时间 |
| updateAgent | String | 否 | 更新人 |
| updateTime | String | 否 | 更新时间 |
| openSeaIds | String[] | 否 | 公海**ids |
| callingNumber | int | 否 | 呼叫次数 |
| imNumber | int | 否 | 会话次数 |
| sumBridgeDuration | int | 否 | 通话总时长 |
| visitorId | String | 否 | 访客**id |
| wxAddState | String | 否 | 企微添加状态 1**已添加 |
| 自定义字段 | String | 否 | 自定义字段 |
1.4 请求示例
{
"customerName": "test",
"mobile": [
{
"value": "333222111",
"memo": "王哈"
}
],
"customerSource": [
"试用申请"
],
"owner": "8310",
"assignTime": "2024-11-14 09:46:17"
}1.5 请求成功响应示例
{
"success": true,
"message": "200 ok!",
"code": "200",
"data": {
"accountId": "1090",
"createTime": "2023-06-26 23:18:43",
"createMethod": "",
"updateAgent": "openApi",
"updateTime": "2023-06-26 23:18:43",
"_id": "685775343058800640",
"customerName": "testCustomer",
"createAgent": "openApi"
}
}1.6 客户资料重复响应示例
{
"success": false,
"message": "客户手机号码已存在",
"code": "03001004",
"data": {
"repeatId": [
"909996031015174144",
"912231910318624768",
"928033771912073216"
]
},
"traceId": "8d02d300b50c42a39dd4e29a183daf55"
}2 修改客户
接口说明:使用此接口可以进行客户资料的修改,需要用添加客户资料生成的_id进行修改,请求参数可以参考下面的字段及示例。
2.1 URL
POST /openapi/crm/update
2.2 请求参数
参考1.2的请求及下列示例。_id必传,修改客户资料需要用到
| 字段 | 名称 | 类型 | 是否必填 | 备注 |
| _id | id | String | Y | |
| customerName | 客户名字 | String | N | |
| assignTime | 归属时间 | String | N | |
| owner | 可传所属人id或公海id | String | N | |
| createMethod | 创建方式 | String | N | |
| mobile | 手机 | List<PhoneProperty> | N | |
| 邮箱 | List<EmailProperty> | N | ||
| List<QqProperty> | N | |||
| 微信 | List<WechatProperty> | N | ||
| visitorId | 访客进线id | String | N | 网页渠道访客进线时所传的visitorId,若能对应上,那么访客对话将会自动匹配上客户资料 |
2.3 请求示例
curl --location 'http://47.99.32.215:8081/openapi/crm/update' \
--header 'appid: 1090' \
--header 'nonce: 123456' \
--header 'timestamp: 1687792901' \
--header 'signature: osiJIMEZRFzQPJDH/3hsYe3BGhk/0aouXGyhX2Af2mc=' \
--header 'Content-Type: application/json' \
--data '{
"_id": "685775898716000256",
"customerName": "testCustomer"
}'
{
"success": true,
"message": "200 ok!",
"code": "200",
"data": {
"accountId": "1090",
"createTime": "2023-06-26 23:20:56",
"createMethod": "",
"updateAgent": "openApi",
"updateTime": "2023-06-26 23:21:56",
"_id": "685775898716000256",
"customerName": "testCustomer",
"createAgent": "openApi"
}
}2.4 返回值
返回和新增客户资料接口一致,code 多一个 “00000400” 参数错误,表示参数传递错误
| 字段名称 | 字段类型 | 是否必填 | 字段描述 |
| success | bol | 是 | 成功标识 |
| message | String | 是 | 接口信息 |
| code | String | 是 | 状态码 “200”-成功 |
| traceId | String | 是 | 请求唯一标识 |
| data | Object | 是 | 返回结果 |
| -count | Int | 是 | 结果数量 |
| -list | array | 是 | 结果数组 |
| --_id | String | 是 | id |
| --accountId | String | 是 | 账号 |
| --customerName | String | 否 | 客户名称 |
| --owner | String | 否 | 归属人 |
| --assignTime | String | 否 | 归属时间 |
| --createMethod | String | 否 | 创建方式 |
| --mobile | array | 否 | 手机 |
| ---value | String | 否 | 手机号 |
| ---memo | String | 否 | 备注 |
| array | 否 | 邮箱 | |
| ---value | String | 否 | 邮箱 |
| ---memo | String | 否 | 备注 |
| array | 否 | ||
| ---value | String | 否 | qq号 |
| ---memo | String | 否 | 备注 |
| array | 否 | 微信 | |
| ---value | String | 否 | 微信号 |
| ---memo | String | 否 | 备注 |
| firstOwner | String | 否 | 首次归属人 |
| firstAssignTime | String | 否 | 首次归属时间 |
| importBatchNumber | String | 否 | 导入批次号 |
| lastCallTime | String | 否 | 最后一次呼叫时间 |
| lastCallUser | String | 否 | 最后一次呼叫用户 |
| firstCallTime | String | 否 | 第一次呼叫时间 |
| firstCallUser | String | 否 | 第一次呼叫用户 |
| lastChatTime | String | 否 | 最后一次聊天时间 |
| lastChatUser | String | 否 | 最后一次聊天用户 |
| createAgent | String | 否 | 创建人 |
| createTime | String | 否 | 创建时间 |
| updateAgent | String | 否 | 更新人 |
| updateTime | String | 否 | 更新时间 |
| openSeaIds | String[] | 否 | 公海**ids |
| callingNumber | int | 否 | 呼叫次数 |
| imNumber | int | 否 | 会话次数 |
| sumBridgeDuration | int | 否 | 通话总时长 |
| visitorId | String | 否 | 访客**id |
| wxAddState | String | 否 | 企微添加状态 1**已添加 |
| 自定义字段 | String | 否 | 自定义字段 |
3 查询客户列表
接口说明:可以查询当前账号下所有客户列表。
3.1 URL
POST /openapi/crm/list
3.2 请求体
| 字段名称 | 字段类型 | 是否必填 | 字段描述 |
| search | array | 是 | 查询条件 |
| -field | String | 是 | 字段名 |
| -value | array | 是 | 字段值 |
| -operator | String | 是 | 操作符 eq:等于 neq:不等于 empty:为空 nempty:不为空 in:包含 nin:不包含 gt:大于 gte:大于等于 lt:小于 lte:小于等于 between:之间 |
| sortList | array | 是 | 排序条件 |
| -field | String | 是 | 排序字段名 |
| -orderBy | String | 是 | 排序方式 asc/desc |
| createTimeBegin | String | 否 | 客户创建时间开始 |
| createTimeEnd | String | 否 | 客户创建时间结束 |
| updateTimeBegin | String | 否 | 客户修改时间开始 |
| updateTimeEnd | String | 否 | 客户修改时间结束 |
3.3 请求参数示例
{
"search":[{"operator":"eq","value":["13231307283"],"field":"mobile"}]
}
curl --location 'http: //47.99.32.215:8081/openapi/crm/list' \
--header 'appid: 1090' \
--header 'nonce: 123456' \
--header 'timestamp: 1687792454' \
--header 'signature: 0gJctlWNzEIPu/A17MI //xV/5WwTcqp9c1cEkXwL/1Q=' \
--header 'Content-Type: application/json' \
--data '{
"limit": 1,
"page": 1,
"search": [
{
"field": "openSeaIds",
"value": [],
"operator": "empty"
}
]
}'
{
"success": true,
"message": "200 ok!",
"code": "200",
"data": {
"list": [
{
"owner": "662821403012902912",
"firstAssignTime": "2023-06-26 22:57:30",
"accountId": "1090",
"createTime": "2023-06-26 22:57:30",
"createMethod": "API",
"firstOwner": "662821403012902912",
"updateAgent": "openApi",
"updateTime": "2023-06-26 22:57:30",
"_id": "685770000643772416",
"assignTime": "2023-06-26 22:57:30",
"customerName": "testCustomer",
"createAgent": "openApi"
}
],
"count": 20
}
}3.4 返回参数
| 字段名称 | 字段类型 | 是否必填 | 字段描述 |
| success | bol | 是 | 成功标识 |
| message | String | 是 | 接口信息 |
| code | String | 是 | 状态码 “200”-成功 |
| traceId | String | 是 | 请求唯一标识 |
| data | Object | 是 | 返回结果 |
| -count | Int | 是 | 结果数量 |
| -list | array | 是 | 结果数组 |
| --_id | String | 是 | id |
| --accountId | String | 是 | 账号 |
| --customerName | String | 否 | 客户名称 |
| --owner | String | 否 | 归属人 |
| --assignTime | String | 否 | 归属时间 |
| --createMethod | String | 否 | 创建方式 |
| --mobile | array | 否 | 手机 |
| ---value | String | 否 | 手机号 |
| ---memo | String | 否 | 备注 |
| array | 否 | 邮箱 | |
| ---value | String | 否 | 邮箱 |
| ---memo | String | 否 | 备注 |
| array | 否 | ||
| ---value | String | 否 | qq号 |
| ---memo | String | 否 | 备注 |
| array | 否 | 微信 | |
| ---value | String | 否 | 微信号 |
| ---memo | String | 否 | 备注 |
| firstOwner | String | 否 | 首次归属人 |
| firstAssignTime | String | 否 | 首次归属时间 |
| importBatchNumber | String | 否 | 导入批次号 |
| lastCallTime | String | 否 | 最后一次呼叫时间 |
| lastCallUser | String | 否 | 最后一次呼叫用户 |
| firstCallTime | String | 否 | 第一次呼叫时间 |
| firstCallUser | String | 否 | 第一次呼叫用户 |
| lastChatTime | String | 否 | 最后一次聊天时间 |
| lastChatUser | String | 否 | 最后一次聊天用户 |
| createAgent | String | 否 | 创建人 |
| createTime | String | 否 | 创建时间 |
| updateAgent | String | 否 | 更新人 |
| updateTime | String | 否 | 更新时间 |
| openSeaIds | String[] | 否 | 公海**ids |
| callingNumber | int | 否 | 呼叫次数 |
| imNumber | int | 否 | 会话次数 |
| sumBridgeDuration | int | 否 | 通话总时长 |
| visitorId | String | 否 | 访客**id |
| wxAddState | String | 否 | 企微添加状态 1**已添加 |
| 自定义字段 | String | 否 | 自定义字段 |
4、根据id查询客户
接口说明:可用此接口查询单独某个客户在系统的详细信息。
4.1、URL
GET /openapi/crm/{id}
4.2、请求示例
curl --location 'http://47.99.32.215:8081/openapi/crm/findById/685736803322032128' \
--header 'appid: 1090' \
--header 'nonce: 123456' \
--header 'timestamp: 1687792454' \
--header 'signature: 0gJctlWNzEIPu/A17MI//xV/5WwTcqp9c1cEkXwL/1Q=' \
--header 'Content-Type: application/json' \
--data '{}'5、根据id删除客户
接口说明:删除客户资料接口,提供id即可进行删除。
5.1、URL
POST /openapi/crm/delete
5.2、请求示例
curl --location 'http://47.99.32.215:8081/openapi/crm/delete' \
--header 'appid: 1090' \
--header 'nonce: 123456' \
--header 'timestamp: 1687792102' \
--header 'signature: k/0nGQXTld3Te5wCIHtWFBYaZZdJOm/uesKTU4E1AjM=' \
--header 'Content-Type: application/json' \
--data '{
"id": "685736803368169472"
}'
{
"success": true,
"message": "200 ok!",
"code": "200",
"data": null
}6、查询客户字段配置列表
接口:查询账号下的字段信息,主要是自定义字段的类型。方便进行新增。
6.1、URL
POST /openapi/crm/config/field/list
6.2、请求参数
| 字段 | 名称 | 类型 |
| name | 字段名称 | String |
| category | 字段分类 | List<String> |
| type | 字段类型 | List<String> |
| enabled | 停用/启用状态 | Boolean |
| editable | 是否可编辑(自动生成的字段不可编辑) | Boolean |
6.3、请求示例
curl --location 'http: //47.99.32.215:8081/openapi/crm/config/field/list' \
--header 'appid: 1090' \
--header 'nonce: 123456' \
--header 'timestamp: 1687792102' \
--header 'signature: k/0nGQXTld3Te5wCIHtWFBYaZZdJOm/uesKTU4E1AjM=' \
--header 'Content-Type: application/json' \
--data '{}'
{
"success": true,
"message": "200 ok!",
"code": "200",
"data": [
{
"accountId": "1090",
"glFieldId": "text_6ts9_1687316347239",
"field": "text_6ts9_1687316347239",
"name": "详细地址",
"param": "text_6ts9_1687316347239",
"type": "text",
"status": 1,
"searchable": false,
"oplog": false,
"choices": null,
"options": null,
"createTime": "2023-06-21 11:02:18",
"updateTime": "2023-06-21 11:02:18",
"createAgent": "662772464553308160",
"updateAgent": "662772464553308160",
"scenes": null,
"sort": 42,
"isSystem": false,
"required": false
}
]
}6.4、返回参数
data为List<CustomerFieldVO>CustomerFieldVO:
| 字段 | 名称 | 类型 |
| accountId | 账户id | String |
| glFieldId | 全局字段id | String |
| field | 字段id | String |
| name | 字段名称 | String |
| param | 字段参数 | String |
| type | 字段类型 | String |
| status | 状态, 0: 停用; 1: 启用; -1: 删除 | int |
| searchable | 是否可查询 | Boolean |
| oplog | 是否记录操作日志 | Boolean |
| choices | 下拉选项 | List<ChoicesDubbo> |
| options | 级联选项 | CascadeOptionsDubbo |
| scenes | 应用场景 | List<String> |
| sort | 排序 | int |
| isSystem | 是否是预置字段 | Boolean |
| required | 是否必填 | Boolean |
ChoicesDubbo
| 字段 | 名称 | 类型 |
| key | 选项key | String |
| value | 选项value | String |
| isDefault | 是否为默认值 | Boolean |
CascadeOptionsDubbo
| 字段 | 名称 | 类型 |
| level | 层级 | int |
| fillLevel | 几级必填 | int |
| children | 次级选项列表 | List<ChildOptionDubbo> |
ChildOptionDubbo
| 字段 | 名称 | 类型 |
| key | 选项key | String |
| value | 选项value | String |
| children | 次级选项 | List<ChildOptionDubbo> |
6.5、返回示例
{
"success": true,
"message": "string",
"code": "string",
"data": [
{
"accountId": "string",
"glFieldId": "string",
"field": "string",
"name": "string",
"param": "string",
"type": "string",
"status": 0,
"searchable": true,
"oplog": true,
"choices": [
{
"key": "string",
"value": "string",
"isDefault": true
}
],
"options": {
"level": 0,
"fillLevel": 0,
"children": [
{
"key": "string",
"value": "string"
}
]
},
"createTime": "string",
"updateTime": "string",
"createAgent": "string",
"updateAgent": "string",
"scenes": [
"string"
],
"sort": 0,
"isSystem": true,
"required": true
}
]
}