Files
crm-ai-demo/docs/twenty-crm-guide.md
AI Bridge Dev 4a29860b51 Initial commit: CRM AI Demo bridge + KB knowledge base + infrastructure
- Bridge server with LLM agent tool-use (search_kb, search_products, search_orders, search_inventory, escalate_human)
- pgvector RAG knowledge base (95 FAQ chunks)
- Auto opportunity creation in Twenty CRM
- Auto follow-up task workflow
- Chatwoot AgentBot integration (HMAC, webhook)
- Docker compose infrastructure (PG18, Redis 8.8, node24-alpine)
- Configuration templates (example files) - real secrets excluded via .gitignore
2026-07-27 15:23:52 +08:00

9.1 KiB
Raw Permalink Blame History

Twenty CRM 功能指南

本文档说明 Twenty CRM 在本系统中的集成方式、当前已用功能,以及 Twenty 本身的完整能力。 适用于:系统运维、功能扩展、二次开发参考。


一、当前系统的集成现状

Bridge 实际用到的 Twenty 功能5 个 GraphQL 操作)

功能 GraphQL 调用 代码位置 (bridge/server.js) 作用
创建公司 createCompany :221 从对话提取公司名,自动建公司记录
查公司(去重) companies(filter:{name}) :227 避免重复创建同名公司
创建联系人 createPerson :254 建联系人(姓名/邮箱/电话),关联到公司
查联系人(去重) people(filter:{emails}) :234 按邮箱去重
创建商机 createOpportunity :276 建商机(名称/金额/阶段/公司/联系人)
创建笔记 createNote + createNoteTarget :333 把聊天记录挂到商机上
创建跟进任务 createTask + createTaskTarget :329 自动化:商机创建后自动生成 3 天到期的跟进任务

Bridge 把 Twenty 当成「线索落地库 + 自动化起点」——不仅结构化存储销售线索,还自动触发跟进流程。

商机创建的触发条件

Bridge 用 EXTRACT_SYSTEMserver.js:516)对每轮对话做信息提取,判断 ready=true 需要三要素齐全

  1. 公司名 — Company name任意语言
  2. 联系方式 — Email 或 Phone或联系人姓名
  3. 产品/需求 — 客户感兴趣的产品或采购意向

三者缺任何一个,ready=false,继续对话收集,不创建商机。


二、Twenty CRM 完整数据对象

当前 workspaceworkspace_6o1rsmnm23f20gpxxzby7wab2)包含 28 个数据表:

当前已用Bridge 自动写入)              未使用(可手动操作或扩展自动化)
┌──────────────────────────┐        ┌────────────────────────────────────┐
│ ✅ company    公司         │        │ 📅 calendarEvent      日历/会议     │
│ ✅ person     联系人       │        │ 📧 message            邮件消息      │
│ ✅ opportunity 商机        │        │ 📞 callRecording      通话录音      │
│ ✅ note       笔记         │        │ 🔄 workflow           自动化工作流  │
│ ✅ noteTarget 笔记关联     │        │ 📊 dashboard          仪表盘/报表   │
│ ✅ task       跟进任务     │        │ 👥 workspaceMember    团队成员      │
│ ✅ taskTarget 任务关联     │        │ 🚫 blocklist          屏蔽名单      │
└──────────────────────────┘        │ 📎 attachment         附件          │
                                     │ 📝 messageCampaign    邮件营销      │
                                     │ 🕐 timelineActivity   活动时间线    │
                                     └────────────────────────────────────┘

三、未使用功能详解

1. 任务管理Task— 跟进客户

给商机/联系人创建跟进任务,是商机转化为真实订单的关键环节。

典型用法

  • "明天回电 Sophie 确认戒指款式"
  • "本周五前寄出报价单"
  • 设置截止日期、负责人、优先级

位置Twenty 网页 → 左侧导航 Tasks


2. 日历Calendar— 安排会议

  • 关联到联系人/商机
  • 记录客户会议、产品演示时间
  • 支持 Google/Microsoft 日历集成(需额外配置 OAuth

位置Twenty 网页 → 左侧导航 Calendar


3. 消息/邮件Message— 统一收件箱

  • 集成 Gmail/Outlook直接在 CRM 里收发邮件
  • 所有客户沟通集中管理,不再散落各处
  • 邮件营销MessageCampaign支持群发

位置Twenty 网页 → 左侧导航 Messages


4. 自动化工作流Workflow— 最强大的未用功能

自动触发规则,目前完全没用上,潜力巨大。

典型场景

  • "新商机创建 → 自动通知负责人 + 创建 3 天后跟进任务"
  • "商机阶段变为 PROPOSAL → 自动发邮件给客户"
  • "商机金额 > €5000 → 自动提升优先级 + 通知销售经理"

位置Twenty 网页 → Settings → Workflows


5. 仪表盘Dashboard— 数据可视化

  • 销售漏斗(各阶段商机数量/金额)
  • 自定义视图、过滤器、图表
  • 月度/季度业绩统计

位置Twenty 网页 → 左侧导航 Dashboards


6. 自定义字段 — Twenty 的杀手锏

可以给任何对象Company/Person/Opportunity添加自定义字段

  • 客户行业、Jewelry 偏好材质、年采购量、首次接触渠道
  • 当前 Bridge 提取的字段是固定的,可通过扩展 EXTRACT_SYSTEM 来填充自定义字段

位置Twenty 网页 → Settings → Object 某个对象 → Fields


四、网页界面导航

http://localhost:3000  → 登录后左侧导航栏:

  📊 Dashboards     仪表盘
  🏢 Companies      公司列表
  👤 People         联系人
  💼 Opportunities  商机       ← Bridge 自动创建的数据在这里
  ✅ Tasks          任务
  📅 Calendar       日历
  📧 Messages       消息
  ⚙️ Settings       设置       ← 工作流 / 自定义字段 / 团队成员

点开任意商机(如 Nordic Retail AB可见多个标签页

  • Notes — 笔记Bridge 自动写入的聊天记录)
  • Tasks — 关联任务
  • Timeline — 活动时间线
  • People — 关联联系人

五、API Key 与认证配置

Bridge 通过 GraphQL API 访问 Twenty认证链路

twenty.config.json
  ├── baseURL:       http://localhost:3000
  ├── graphqlPath:   /graphql
  ├── workspaceId:   70a1901c-45ab-4b95-a7f0-de74be819b2e
  └── apiKey:        <ES256 JWTkid=2b878cf8...>

JWT 结构bridge/twenty.config.json 里的 apiKey

{
  "alg": "ES256", "typ": "JWT", "kid": "2b878cf8-7d35-4906-899f-a0439b1c2116"
}
// payload:
{
  "sub": "70a1901c-45ab-4b95-a7f0-de74be819b2e",   // = workspaceId
  "type": "API_KEY",
  "workspaceId": "70a1901c-45ab-4b95-a7f0-de74be819b2e",
  "iat": 1784878461,
  "exp": 4922899200,
  "jti": "556d9fc0-7f32-4a5b-b041-78b30242cefb"     // = apiKey 表的 id
}

API Key 的两个必要绑定(缺一不可):

  1. core."apiKey" 表:记录 apiKey id → workspaceId
  2. core."roleTarget" 表:记录 apiKeyId → roleId绑定权限角色否则报 INVALID_AUTH_CONTEXT

如需重新生成 API Key参考项目根目录的 gen_apikey.js 脚本(用 HKDF 解密签名密钥后签发 JWT


六、扩展建议

已实现(

扩展 做法 代码位置 价值
商机自动创建跟进任务 Bridge 在 createLeadInCRM 里商机创建后自动建 Task server.js:329 商机不遗漏跟进

自动跟进任务的工作方式

商机创建成功后Bridge 自动执行(server.js createLeadInCRM 函数内):

  1. 创建一条 Task标题 跟进商机: <商机名>
  2. 任务内容包含客户公司、联系人、需求摘要、行动指引3 个工作日内联系)
  3. 设置到期日为 3 天后
  4. 通过 createTaskTarget 把 Task 关联到刚创建的 Opportunity

触发日志示例bridge 日志中可见):

[workflow] conv=3 opp=b3ab3af2... -> 自动创建跟进任务 fcd6f300... (3天后到期)
[CRM✓] conv=3 建线索: {新公司 + 新联系人 + 新商机} (新公司) (新联系人)

注意:本自动化在 Bridge 层实现,而非 Twenty 内置 Workflow 引擎。原因是 Twenty 的 API key 权限不支持通过 GraphQL 创建 workflowVersion(报 FORBIDDEN。Bridge 层实现更可控、日志透明。如需更复杂的可视化编排,可在 Twenty 网页 Settings → Workflows 通过 UI 创建。

短期(低成本,高收益)

扩展 做法 价值
商机金额自动填充 扩展 EXTRACT_SYSTEM,让 LLM 估算 unit price × quantity 漏斗金额更准确
自定义字段:客户行业 Twenty 加字段 + Bridge EXTRACT_SYSTEM 提取 销售分群分析
商机阶段自动推进 Bridge 根据"是否提供报价/是否确认订单"调用 updateOpportunity 改 stage 漏斗自动化

中期(需开发)

扩展 做法 价值
销售漏斗仪表盘 Twenty Dashboard 配置 可视化业绩
双向同步 Bridge 读 Twenty如查客户历史商机 AI 回复更智能
邮件集成 Twenty Settings 配置 Gmail/Outlook OAuth 统一沟通

最后更新2026-07-24新增自动化跟进任务功能 相关文件:bridge/server.jsGraphQL 调用 + 自动化工作流)、bridge/twenty.config.json(连接配置)、gen_apikey.jsAPI Key 生成)、create_workflow.js(工作流创建脚本)