通过 Zoho CRM、项目和会议 API 进行交互。适用于管理商机、联系人、线索、任务、项目、里程碑、会议录制或任何 Zoho 相关工作。
Zoho 集成(CMM + Project + meeting).
功能概述
Zoho 集成(CMM + Project + meeting).是一项面向实际任务的技能,主要用于Made by Zone 99 → GitHub → 贡献 → 快速启动 – 使用 zoho CLI 包装器 — 它处理 OAuth 符号刷新和自动缓存。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
核心要点
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
- 实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
使用与执行
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
结果检查与注意事项
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
Zoho 集成(CRM + Projects + Meeting)
由 Zone 99 开发 · GitHub · 贡献代码
快速开始
使用 zoho CLI 封装工具 — 它会自动处理 OAuth Token 刷新与缓存。
zoho help # 显示所有命令 zoho token # 打印当前访问令牌(自动刷新)
认证配置
步骤 1:注册您的应用
- 访问 Zoho API 控制台
- 点击 Add Client → 选择 Server-based Applications
- 填写以下信息:
- Client Name:您的应用名称(例如 “Clawdbot Zoho Integration”)
- Homepage URL:您的域名或
https://localhost - Redirect URI:
https://localhost/callback(或您可控的任意 URL — 您仅需该地址一次,用于获取授权码)
- 点击 Create
- 记录下 Client ID 和 Client Secret
步骤 2:生成授权码(Grant Token)
构造以下 URL 并在浏览器中打开(请替换占位符):
https://accounts.zoho.com/oauth/v2/auth ?response_type=code &client_id=YOUR_CLIENT_ID &scope=ZohoCRM.modules.ALL,ZohoCRM.settings.ALL,ZohoProjects.projects.ALL,ZohoProjects.tasks.ALL,ZohoMeeting.recording.READ,ZohoMeeting.meeting.READ,ZohoMeeting.meetinguds.READ,ZohoFiles.files.READ &redirect_uri=https://localhost/callback &access_type=offline &prompt=consent
重要提示:请根据您的数据中心区域,使用对应的 accounts URL:
区域 Accounts URL US https://accounts.zoho.comEU https://accounts.zoho.euIN https://accounts.zoho.inAU https://accounts.zoho.com.auJP https://accounts.zoho.jpUK https://accounts.zoho.ukCA https://accounts.zohocloud.caSA https://accounts.zoho.sa
授权完成后,您将被重定向至类似如下地址:
https://localhost/callback?code=1000.abc123...&location=us&accounts-server=https://accounts.zoho.com
复制 code 参数的值。该授权码有效期为 2 分钟 — 请立即进入步骤 3。
步骤 3:使用授权码换取 Refresh Token
运行以下 curl 命令(请替换占位符):
curl -X POST "https://accounts.zoho.com/oauth/v2/token" -d "client_id=YOUR_CLIENT_ID" -d "client_secret=YOUR_CLIENT_SECRET" -d "grant_type=authorization_code" -d "redirect_uri=https://localhost/callback" -d "code=PASTE_CODE_FROM_STEP_2"
响应示例:
{
"access_token": "1000.xxxx.yyyy",
"refresh_token": "1000.xxxx.zzzz",
"api_domain": "https://www.zohoapis.com",
"token_type": "Bearer",
"expires_in": 3600
}
请妥善保存 refresh_token — 这是您的长期有效凭证。access_token 有效期为 1 小时,但 CLI 会通过 refresh_token 自动刷新它。
步骤 4:查找您的 Org ID
CRM/Projects Org ID:
# 在 .env 中配置 client_id、client_secret、refresh_token 后执行: zoho raw GET /crm/v7/org | jq '.org[0].id'
Meeting Org ID:
登录 Zoho Meeting → Admin Settings → 在 URL 或设置页面中查找 Organization ID。该 ID 与 CRM 的 org ID 不同。
步骤 5:配置 .env
在 skill 目录下创建 .env 文件:
ZOHO_CLIENT_ID=1000.XXXXXXXXXXXXXXXXXXXXXXXXX ZOHO_CLIENT_SECRET=your_client_secret_here ZOHO_REFRESH_TOKEN=1000.your_refresh_token_here ZOHO_ORG_ID=123456789 # CRM/Projects org ID ZOHO_MEETING_ORG_ID=987654321 # Meeting org ID(不同于 CRM) ZOHO_CRM_DOMAIN=https://www.zohoapis.com ZOHO_PROJECTS_DOMAIN=https://projectsapi.zoho.com/restapi ZOHO_MEETING_DOMAIN=https://meeting.zoho.com ZOHO_ACCOUNTS_URL=https://accounts.zoho.com
若您使用非 US 数据中心(例如
.eu、.in、.com.au),请相应调整各 domain URL。
OAuth 权限范围(Scopes)参考
| Scope | 用途 |
|---|---|
ZohoCRM.modules.ALL |
读写 CRM 记录(Deals、Contacts、Leads 等) |
ZohoCRM.settings.ALL |
读取 CRM 字段定义与组织设置 |
ZohoProjects.projects.ALL |
读写项目 |
ZohoProjects.tasks.ALL |
读写任务、里程碑、缺陷、工时日志 |
ZohoMeeting.recording.READ |
列出并访问会议录制文件 |
ZohoMeeting.meeting.READ |
列出会议及会话详情 |
ZohoMeeting.meetinguds.READ |
下载录制文件 |
ZohoFiles.files.READ |
下载文件(如录制文件、转录文本) |
若仅需 CRM 功能或仅需 Meeting 功能,可申请更少的 scopes。授权 URL 中的 scope 参数以英文逗号分隔。
认证问题排查
- "invalid_code" → 授权码已过期(有效期 2 分钟)。请重新执行步骤 2。
- "invalid_client" → Client ID 错误,或 accounts-server URL 与您的数据中心不匹配。
- "invalid_redirect_uri" → curl 请求中的 redirect_uri 必须与 API Console 中注册的完全一致。
- Token 刷新失败 → Refresh Token 可能已被撤销。请重新执行步骤 2–3 获取新的 Token。
- "Given URL is wrong" → 您正在调用错误的数据中心对应 API domain。
CRM 命令
# 列出任意模块的记录
zoho crm list Deals
zoho crm list Deals "page=1&per_page=5&sort_by=Created_Time&sort_order=desc"
zoho crm list Contacts
zoho crm list Leads
# 获取指定记录
zoho crm get Deals 1234567890
# 按条件搜索
zoho crm search Deals "(Stage:equals:Closed Won)"
zoho crm search Contacts "(Email:contains:@acme.com)"
zoho crm search Leads "(Lead_Source:equals:Web)"
# 创建记录
zoho crm create Contacts '{"data":[{"Last_Name":"Smith","First_Name":"John","Email":"j@co.com"}]}'
zoho crm create Deals '{"data":[{"Deal_Name":"New Project","Stage":"Qualification","Amount":50000}]}'
# 更新记录
zoho crm update Deals 1234567890 '{"data":[{"Stage":"Closed Won"}]}'
# 删除记录
zoho crm delete Deals 1234567890
CRM 模块
Leads、Contacts、Accounts、Deals、Tasks、Events、Calls、Notes、Products、Quotes、Sales_Orders、Purchase_Orders、Invoices
搜索操作符
equals、not_equal、starts_with、contains、not_contains、in、not_in、between、greater_than、less_than
Projects 命令
# 列出全部项目 zoho proj list # 获取项目详情 zoho proj get 12345678 # 任务相关 zoho proj tasks 12345678 zoho proj create-task 12345678 "name=Fix+login+bug&priority=High&start_date=01-27-2026" zoho proj update-task 12345678 98765432 "percent_complete=50" # 其他 zoho proj milestones 12345678 zoho proj tasklists 12345678 zoho proj bugs 12345678 zoho proj timelogs 12345678
Task 字段说明
name、start_date(MM-DD-YYYY 格式)、end_date、priority(None/Low/Medium/High)、owner、description、tasklist_id、percent_complete
Meeting 命令
# 列出全部录制文件
zoho meeting recordings
zoho meeting recordings | jq '[.recordings[] | {topic, sDate, sTime, durationInMins, erecordingId}]'
# 下载录制文件(使用 recordings 列表返回的 downloadUrl)
zoho meeting download "https://files-accl.zohopublic.com/public?event-id=..." output.mp4
# 列出会议/会话
zoho meeting list
zoho meeting list "fromDate=2026-01-01T00:00:00Z&toDate=2026-01-31T23:59:59Z"
# 获取会议详情
zoho meeting get 1066944216
录制响应字段说明
zoho meeting recordings 返回的关键字段:
erecordingId— 加密后的录制 ID(可用于去重/追踪)topic— 会议标题sDate、sTime— 开始日期/时间(人类可读格式)startTimeinMs— 开始时间(毫秒级时间戳,可用于日期过滤)durationInMins— 录制时长(分钟)downloadUrl/publicDownloadUrl— MP4 下载地址transcriptionDownloadUrl— Zoho 生成的转录文本(如可用)summaryDownloadUrl— Zoho 生成的摘要(如可用)fileSize/fileSizeInMB— 录制文件大小status— 例如UPLOADEDmeetingKey— 会议标识符creatorName— 启动录制的用户
会议录制处理流水线(Recording Pipeline)
适用于自动化站会/会议摘要场景:
# 1. 列出录制文件,并按今日时间范围(毫秒时间戳)过滤 zoho meeting recordings | jq --argjson start "$START_MS" --argjson end "$END_MS" '[.recordings[] | select(.startTimeinMs >= $start and .startTimeinMs <= $end)]' # 2. 下载录制文件 zoho meeting download "$DOWNLOAD_URL" /tmp/recording.mp4 # 3. 提取音频 ffmpeg -i /tmp/recording.mp4 -vn -acodec pcm_s16le -ar 16000 -ac 1 /tmp/audio.wav -y # 4. 使用 Gemini Flash API 进行语音转文字(对阿拉伯语+英语混合场景效果优异) # 完整实现见 scripts/standup-summarizer.sh # 5. 使用 Claude/GPT 对转录文本进行摘要 # 6. 清理临时文件
完整的站会摘要脚本位于 scripts/standup-summarizer.sh。
原始 API 调用(Raw API Calls)
适用于未被子命令覆盖的场景:
# CRM 接口
zoho raw GET /crm/v7/settings/fields?module=Deals
zoho raw GET /crm/v7/org
# Meeting 接口
zoho raw GET "https://meeting.zoho.com/meeting/api/v2/{zsoid}/recordings.json"
# 自定义模块
zoho raw GET /crm/v7/Custom_Module
常用使用模式
检查成交/销售漏斗(Deals/Pipeline)时
zoho crm list Deals "sort_by=Created_Time&sort_order=desc&per_page=10" | jq '.data[] | {Deal_Name, Stage, Amount, Closing_Date}'
检查项目进度时
zoho proj list | jq '.projects[] | {name, status, id: .id_string}'
zoho proj tasks | jq '.tasks[] | {name, status: .status.name, percent_complete, priority}'
从对话中创建任务时
zoho proj create-task"name=Task+description&priority=High&start_date=MM-DD-YYYY&end_date=MM-DD-YYYY"
对会议录制进行摘要时
# 快速列出最近的录制文件
zoho meeting recordings | jq '[.recordings[:5] | .[] | {topic, sDate, sTime, durationInMins, fileSize}]'
# 下载最新录制文件
URL=$(zoho meeting recordings | jq -r '.recordings[0].downloadUrl')
zoho meeting download "$URL" /tmp/latest.mp4
速率限制(Rate Limits)
- CRM:100 次请求/分钟
- Projects:依所选套餐而定
- Meeting:遵循标准 API 限制
- Token 刷新:避免不必要的调用(CLI 已自动缓存)
参考资料
- CRM API 字段文档
- Projects API 接口列表
- Meeting API 参考文档
热门AI工具
相关专题
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题梳理XORM框架的入门路径,从框架定位、依赖安装、连接数据库到跑通第一个增删改查示例,讲清Engine初始化、日志开启与项目目录规划,并对比GORM等同类ORM的差异,帮助Go开发者建立整体认知。
0
2026.11.04
本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。
0
2026.11.03
想使用Docker Desktop将本地项目构建成Docker镜像?本专题围绕镜像构建的实际操作展开,介绍Dockerfile编写、构建命令使用、镜像标签设置和构建日志查看等内容,同时整理镜像无法生成、依赖安装失败及构建缓存异常等问题的排查思路。
0
2026.11.03
本专题聚焦Docker Desktop容器创建与运行配置,介绍通过本地镜像或远程镜像创建容器的方法,以及容器启动、终端访问、日志查看和基础管理等操作。针对端口冲突、参数配置不当、容器无法启动等情况,也整理了相应的排查方向。
0
2026.11.03
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.7万人学习
共6课时 | 54.7万人学习