Zoho

Polar Sponsor
爱发电 赞助
.NET 9.0

通过 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:注册您的应用

  1. 访问 Zoho API 控制台
  2. 点击 Add Client → 选择 Server-based Applications
  3. 填写以下信息:
    • Client Name:您的应用名称(例如 “Clawdbot Zoho Integration”)
    • Homepage URL:您的域名或 https://localhost
    • Redirect URI: https://localhost/callback(或您可控的任意 URL — 您仅需该地址一次,用于获取授权码)
  4. 点击 Create
  5. 记录下 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.com
EU https://accounts.zoho.eu
IN https://accounts.zoho.in
AU https://accounts.zoho.com.au
JP https://accounts.zoho.jp
UK https://accounts.zoho.uk
CA https://accounts.zohocloud.ca
SA 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 — 例如 UPLOADED
  • meetingKey — 会议标识符
  • 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 参考文档

相关专题

更多
Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

2026.11.03

0

18

Docker Desktop镜像构建教程
Docker Desktop镜像构建教程

想使用Docker Desktop将本地项目构建成Docker镜像?本专题围绕镜像构建的实际操作展开,介绍Dockerfile编写、构建命令使用、镜像标签设置和构建日志查看等内容,同时整理镜像无法生成、依赖安装失败及构建缓存异常等问题的排查思路。

2026.11.03

0

11

Docker Desktop容器创建指南
Docker Desktop容器创建指南

本专题聚焦Docker Desktop容器创建与运行配置,介绍通过本地镜像或远程镜像创建容器的方法,以及容器启动、终端访问、日志查看和基础管理等操作。针对端口冲突、参数配置不当、容器无法启动等情况,也整理了相应的排查方向。

2026.11.03

0

11

Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

2026.11.03

0

17

Tailwind CSS 响应式布局怎么写
Tailwind CSS 响应式布局怎么写

Tailwind CSS 响应式布局通常从移动端样式写起,再用 sm、md、lg 等前缀调整不同屏幕宽度下的网格、间距和导航。本专题整理断点配置、Grid 与 Flex 自适应布局及常见溢出问题,帮助你逐步完成多设备适配。

2026.11.03

0

19

Tailwind CSS 常用类名怎么记
Tailwind CSS 常用类名怎么记

Tailwind CSS 类名很多,先按布局、间距、文字、颜色和状态分组记忆,再通过官方文档检索具体写法。本专题结合类名排序、动态拼接失效、自定义实用类等问题,帮助你建立常用类名的速查方法。

2026.11.03

0

12

码上飞入口地址合集
码上飞入口地址合集

本专题汇总了码上飞(CodeFlying)的官方入口地址合集,涵盖官网主站及网页版在线使用入口,支持注册登录后直接在线体验零代码AI应用生成。同时整理了APP端下载渠道与小程序入口,助你快速访问平台,通过自然语言描述需求即可生成应用、小程序或网站。

2026.11.03

0

10

Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

2026.11.02

0

14

Uvicorn使用教程
Uvicorn使用教程

本专题汇总了Uvicorn使用教程与启动运行指南,涵盖其作为Python ASGI服务器的定位与特点,以及命令行启动(uvicorn main:app --reload)、参数配置(host/port/workers)、程序内嵌运行与Gunicorn结合部署等核心用法。同时整理了热重载调试、日志配置与生产环境部署优化等技巧,助你快速掌握Uvicorn的运行与配置。

2026.11.02

0

17

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习