OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  zoho:集成 Zoho CRM 与 Zoho Projects 的企业管理工具

zoho:集成 Zoho CRM 与 Zoho Projects 的企业管理工具

 
  model ·  2026-02-22 11:14:27 · 3 次点击  · 0 条评论  

名称: zoho
描述: 与 Zoho CRM、Projects 和 Meeting API 交互。用于管理交易、联系人、潜在客户、任务、项目、里程碑、会议录音或任何 Zoho 工作区数据。触发词包括 Zoho、CRM、交易、管道、项目、任务、里程碑、会议、录音、站会。
作者: Zone 99 团队
主页: https://99.zone
仓库: https://github.com/shreefentsar/clawdbot-zoho


Zoho 集成 (CRM + 项目 + 会议)

Zone 99 制作 · GitHub · 贡献

快速开始

使用 zoho CLI 封装器——它会自动处理 OAuth 令牌刷新和缓存。

zoho help          # 显示所有命令
zoho token         # 打印当前访问令牌(自动刷新)

身份验证设置

步骤 1:注册您的应用程序

  1. 前往 Zoho API 控制台
  2. 点击 添加客户端 → 选择 基于服务器的应用程序
  3. 填写:
    • 客户端名称:您的应用名称(例如 "Clawdbot Zoho Integration")
    • 主页 URL:您的域名或 https://localhost
    • 重定向 URIhttps://localhost/callback(或任何您控制的 URL——您只需用它获取一次授权码)
  4. 点击 创建
  5. 记下 客户端 ID客户端密钥

步骤 2:生成授权码(授权令牌)

在浏览器中打开此 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

重要: 使用与您数据中心匹配的账户 URL:
| 地区 | 账户 URL |
|--------|-------------|
| 美国 | https://accounts.zoho.com |
| 欧盟 | https://accounts.zoho.eu |
| 印度 | https://accounts.zoho.in |
| 澳大利亚 | https://accounts.zoho.com.au |
| 日本 | https://accounts.zoho.jp |
| 英国 | https://accounts.zoho.uk |
| 加拿大 | https://accounts.zohocloud.ca |
| 沙特阿拉伯 | https://accounts.zoho.sa |

授权后,您将被重定向到类似如下的地址:

https://localhost/callback?code=1000.abc123...&location=us&accounts-server=https://accounts.zoho.com

复制 code 参数值。此代码在 2 分钟后过期——请立即进行步骤 3。

步骤 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 —— 这是您的长期凭证。访问令牌在 1 小时后过期,但 CLI 会使用刷新令牌自动刷新它。

步骤 4:查找您的组织 ID

CRM/项目 组织 ID:

# 在 .env 中设置 client_id, client_secret, refresh_token 后:
zoho raw GET /crm/v7/org | jq '.org[0].id'

会议 组织 ID:
登录 Zoho Meeting → 管理员设置 → 在 URL 或设置页面中查找组织 ID。它与 CRM 的组织 ID 不同。

步骤 5:配置 .env 文件

在技能目录中创建 .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/项目 组织 ID
ZOHO_MEETING_ORG_ID=987654321      # 会议 组织 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

如果您在非美国数据中心(例如 .eu.in.com.au),请调整域名 URL。

OAuth 权限范围参考

权限范围 用途
ZohoCRM.modules.ALL 读写 CRM 记录(交易、联系人、潜在客户等)
ZohoCRM.settings.ALL 读取 CRM 字段定义和组织设置
ZohoProjects.projects.ALL 读写项目
ZohoProjects.tasks.ALL 读写任务、里程碑、缺陷、时间日志
ZohoMeeting.recording.READ 列出和访问会议录音
ZohoMeeting.meeting.READ 列出会议和会话详情
ZohoMeeting.meetinguds.READ 下载录音文件
ZohoFiles.files.READ 下载文件(录音、转录稿)

如果只需要 CRM 或只需要会议功能,可以请求更少的权限范围。授权 URL 中的 scope 参数以逗号分隔。

身份验证故障排除

  • "invalid_code" → 授权码已过期(有效期 2 分钟)。重新执行步骤 2。
  • "invalid_client" → 客户端 ID 错误,或数据中心对应的账户服务器 URL 错误。
  • "invalid_redirect_uri" → curl 命令中的 redirect_uri 必须与您在 API 控制台中注册的完全一致。
  • 令牌刷新失败 → 刷新令牌可能已被撤销。重新执行步骤 2–3 以获取新的令牌。
  • "Given URL is wrong" → 您访问了错误数据中心对应的 API 域名。

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 模块

潜在客户、联系人、客户、交易、任务、事件、通话、备注、产品、报价、销售订单、采购订单、发票

搜索运算符

等于、不等于、开头为、包含、不包含、在...中、不在...中、介于、大于、小于

项目命令

# 列出所有项目
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

任务字段

名称、开始日期 (MM-DD-YYYY)、结束日期、优先级 (无/低/中/高)、负责人、描述、任务列表 ID、完成百分比

会议命令

# 列出所有录音
zoho meeting recordings
zoho meeting recordings | jq '[.recordings[] | {topic, sDate, sTime, durationInMins, erecordingId}]'

# 下载录音(使用录音列表中的 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 下载 URL
- transcriptionDownloadUrl — Zoho 生成的转录稿(如果可用)
- summaryDownloadUrl — Zoho 生成的摘要(如果可用)
- fileSize / fileSizeInMB — 录音文件大小
- status — 例如 UPLOADED
- meetingKey — 会议标识符
- 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 中。

原始 API 调用

对于子命令未涵盖的操作:

# CRM 端点
zoho raw GET /crm/v7/settings/fields?module=Deals
zoho raw GET /crm/v7/org

# 会议端点
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 <project_id> | jq '.tasks[] | {name, status: .status.name, percent_complete, priority}'

从对话创建任务时

zoho proj create-task <project_id> "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

速率限制

  • CRM: 100 次请求/分钟
  • 项目: 因套餐而异
  • 会议: 标准 API 限制
  • 令牌刷新: 不要频繁调用(会自动缓存)

参考

3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor