通过 Zoho CRM、项目和会议 API 进行交互。适用于管理商机、联系人、线索、任务、项目、里程碑、会议录制或任何 Zoho 相关工作。
Zoho 集成(CMM + Project + meeting).是一项面向实际任务的技能,主要用于Made by Zone 99 → GitHub → 贡献 → 快速启动 – 使用 zoho CLI 包装器 — 它处理 OAuth 符号刷新和自动缓存。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
由 Zone 99 开发 · GitHub · 贡献代码
使用 zoho CLI 封装工具 — 它会自动处理 OAuth Token 刷新与缓存。
zoho help # 显示所有命令 zoho token # 打印当前访问令牌(自动刷新)
https://localhosthttps://localhost/callback(或您可控的任意 URL — 您仅需该地址一次,用于获取授权码)构造以下 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。
运行以下 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 自动刷新它。
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 不同。
在 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。
| 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 参数以英文逗号分隔。
# 列出任意模块的记录
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
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
# 列出全部项目 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
name、start_date(MM-DD-YYYY 格式)、end_date、priority(None/Low/Medium/High)、owner、description、tasklist_id、percent_complete
# 列出全部录制文件
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 — 启动录制的用户适用于自动化站会/会议摘要场景:
# 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。
适用于未被子命令覆盖的场景:
# 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
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
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章