企业微信 CRM 客户管理
通过 wecom-cli 操作企业微信智能表格,完成客户数据管理。
首次配置(必须)
执行任何 CRM 操作前,先检查 memory 中是否已有 CRM 配置。 如果没有,按以下流程引导用户:
步骤 1:获取 CRM 表 URL
向用户询问:
"请提供您的 CRM 客户管理智能表格的链接(在企业微信中打开表格 → 右上角分享 → 复制链接)"
步骤 2:发现表结构
用用户提供的 URL 自动发现子表和字段:
# 获取子表列表
wecom-cli doc smartsheet_get_sheet '{"url": "<用户提供的URL>"}'
# 获取第一个子表的字段定义
wecom-cli doc smartsheet_get_fields '{"url": "<用户提供的URL>", "sheet_id": "<从上一步获取>"}'
步骤 3:保存配置到 memory
将以下信息保存到 memory 文件 crm-config.md:
---
name: crm-config
description: CRM 智能表格配置信息,包含 URL、sheet_id 和字段 schema
type: project
---
## CRM 表配置
- URL: <用户提供的URL>
- sheet_id: <从 API 获取>
- 子表名称: <从 API 获取>
## 字段 Schema
<从 smartsheet_get_fields 返回结果中记录每个字段的 field_title、field_type、选项列表>
步骤 4:后续操作
配置保存后,所有 CRM 操作直接从 memory 读取 URL 和 sheet_id,无需再次询问。
操作流程
以下命令中
<URL>和<SHEET_ID>从 memory 的 crm-config 中读取。
1. 查询客户
wecom-cli doc smartsheet_get_records '{"url": "<URL>", "sheet_id": "<SHEET_ID>"}'
返回所有记录及 record_id。更新和删除前必须先查询获取 record_id。
2. 新增客户
wecom-cli doc smartsheet_add_records '{"url": "<URL>", "sheet_id": "<SHEET_ID>", "records": [{"values": {<字段值>}}]}'
字段值格式取决于字段类型,详见下方"字段类型写入格式"。
支持批量,records 数组一次最多 500 条。
3. 更新客户
必须传 key_type,否则字段标题无法识别:
wecom-cli doc smartsheet_update_records '{"url": "<URL>", "sheet_id": "<SHEET_ID>", "key_type": "CELL_VALUE_KEY_TYPE_FIELD_TITLE", "records": [{"record_id": "RECORD_ID", "values": {<需更新的字段>}}]}'
key_type固定为"CELL_VALUE_KEY_TYPE_FIELD_TITLE"values中只传需要修改的字段- 创建时间、编辑时间、创建人、编辑人字段不可更新
4. 删除客户
wecom-cli doc smartsheet_delete_records '{"url": "<URL>", "sheet_id": "<SHEET_ID>", "record_ids": ["RECORD_ID"]}'
删除不可逆,确认 record_id 后再调用。支持批量,record_ids 数组一次最多 500 条。
字段类型写入格式(通用规则)
无论用户表格的具体字段名是什么,写入格式由字段类型决定:
| 字段类型 | 写入格式 | 示例 |
|---|---|---|
| TEXT | [{"type":"text","text":"值"}] |
公司名称、备注等文本字段 |
| SINGLE_SELECT | [{"text":"选项文本"}] |
状态、行业等单选字段 |
| PHONE_NUMBER | 直接传字符串 | "13800138000" |
| USER | [{"userid":"用户ID"}] |
销售、交付等人员字段 |
详细说明和 webhook 格式见 crm-schema.md。
实操注意事项
常见踩坑
- 更新时不传 key_type — 字段标题无法识别,必须带
"key_type": "CELL_VALUE_KEY_TYPE_FIELD_TITLE" - PHONE_NUMBER 用了 TEXT 格式 — 联系电话不是文本字段,直接传字符串,不要用
[{"type":"text","text":"..."}] - 删除/更新前未查询 — record_id 只能从查询结果获取,新增时也会返回 record_id
- USER 字段 key 名 — CLI 中是
userid,webhook 中是user_id,两者不同 - 选项文本必须精确匹配 — SINGLE_SELECT 传的 text 必须与表中已有的选项文本完全一致
辅助命令
# 重新查表结构(字段变更时用)
wecom-cli doc smartsheet_get_fields '{"url": "<URL>", "sheet_id": "<SHEET_ID>"}'
# 查通讯录(获取 userid 用于 USER 字段)
wecom-cli contact get_userlist '{}'