Skip to content

[feat] Chat Apps 接入支持 (Telegram/WhatsApp/钉钉) #53

@hrygo

Description

@hrygo

功能描述

为 DivineSense 添加多平台 Chat Apps 接入能力,支持用户通过 Telegram、WhatsApp、钉钉机器人与 AI 代理交互,实现随时随地访问个人知识库和日程管理。

解决方案

功能范围

包含

  • Telegram Bot 接入(推荐 Phase 1 优先实现)
  • WhatsApp Business API 接入(通过 Baileys 桥接)
  • 钉钉机器人接入(企业场景)
  • 多媒体消息处理(图片/语音/视频/文件)
  • 语音转文字(Whisper 集成)
  • 图片 OCR 文字识别
  • 文件自动归档为附件
  • 流式 AI 响应(复用现有 SSE 架构)
  • 用户权限验证(个人绑定模式)

不包含(未来扩展):

  • 群聊 @触发模式
  • 跨平台消息同步
  • 自定义 Bot 命令菜单

技术方案

后端架构

Chat Apps Gateway
    ├── Telegram Channel    (python-telegram-bot / Go SDK)
    ├── WhatsApp Channel    (Baileys Node.js 桥接)
    └── DingTalk Channel    (回调模式 + 签名验证)
            ↓
    ChatChannel Router      (用户验证 + 消息分发)
            ↓
    MediaHandler            (图片OCR / 语音转文字)
            ↓
    ChatRouter              (现有 AI 代理路由)
            ↓
    Parrot Agents           (MemoParrot / ScheduleParrot / ...)

数据库设计

-- 新增表:chat_app_credential
CREATE TABLE chat_app_credential (
  id SERIAL PRIMARY KEY,
  user_id INTEGER NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
  platform TEXT NOT NULL,              -- 'telegram', 'whatsapp', 'dingtalk'
  platform_user_id TEXT NOT NULL,      -- 平台用户ID
  access_token TEXT,                   -- 加密存储
  webhook_url TEXT,                    -- 回调地址(钉钉用)
  enabled BOOLEAN DEFAULT true,
  created_ts BIGINT NOT NULL,
  updated_ts BIGINT NOT NULL,
  UNIQUE(user_id, platform)
);

-- 扩展 conversation_context 表
ALTER TABLE conversation_context 
ADD COLUMN channel_type TEXT;         -- 'web', 'telegram', 'whatsapp', 'dingtalk'

API 设计 (proto/api/v1/chat_app_service.proto)

RPC 方法 描述
ChatAppService RegisterCredential 用户绑定 Chat App 账号
ChatAppService ListCredentials 查询已绑定的账号
ChatAppService DeleteCredential 解绑账号
ChatAppService HandleWebhook 处理各平台 Webhook 回调
ChatAppService SendMedia 发送多媒体消息到 Chat App

组件划分

plugin/chat_apps/
├── channels/
│   ├── base.go              # ChatChannel 接口定义
│   ├── telegram/
│   │   ├── telegram.go      # Telegram Bot 实现
│   │   └── webhook.go       # Webhook 处理
│   ├── whatsapp/
│   │   └── bridge.go        # WhatsApp Baileys 桥接
│   └── dingtalk/
│       ├── dingtalk.go      # 钉钉机器人实现
│       └── crypto.go        # 签名验证
├── media/
│   ├── handler.go           # 多媒体处理器接口
│   ├── whisper.go           # 语音转文字
│   └── ocr.go              # 图片 OCR
├── router.go                # 通道路由器
└── store.go                 # 凭证存储

前端变更

  • 设置页面新增 Chat Apps 绑定面板
  • 支持生成/绑定 Bot Token
  • 显示已绑定账号列表

参考资源

复杂度

  • 工作量: 3-4 人周
    • Telegram: 1 人周
    • WhatsApp: 1 人周
    • 钉钉: 1-1.5 人周
    • 多媒体处理: 0.5 人周
  • 风险: 中
    • 平台协议变更风险
    • Token 安全存储
    • WhatsApp 桥接稳定性

验收标准

  • make check-all 通过
  • Telegram Bot 可正常收发消息
  • WhatsApp 可正常收发消息(Baileys 桥接)
  • 钉钉机器人可正常收发消息
  • 图片 OCR 功能正常
  • 语音转文字功能正常
  • 文件可自动归档为附件
  • 用户权限验证正确
  • 已更新 i18n 翻译
  • 已更新文档

依赖项

  • 无前置依赖(可独立开发)

调研时间: 2026-02-03 | 版本: v1.0

Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions