# ddbot **Repository Path**: jack6/ddbot ## Basic Information - **Project Name**: ddbot - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-24 - **Last Updated**: 2025-12-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 钉钉舆情上报机器人 这是一个基于钉钉Stream模式的舆情上报机器人,可以接收群聊中的舆情消息并自动存储到MySQL数据库。 ## 功能特性 - ✅ 接收并解析钉钉群聊中的舆情上报消息 - ✅ 自动提取客户名称、问题描述、渠道来源等信息 - ✅ 将舆情数据存储到MySQL数据库 - ✅ 智能消息回复,提供友好的交互体验 - ✅ 支持Docker容器化部署 - ✅ 完善的日志记录和错误处理 ## 系统要求 - Python 3.9+ - MySQL 5.7+ - Docker & Docker Compose (可选) ## 快速开始 ### 方式一:Docker部署(推荐) 1. **克隆项目** ```bash git clone cd ddbot ``` 2. **配置环境变量** 创建 `.env` 文件(参考 `env.example.txt`): ```bash # 钉钉配置 DINGTALK_CLIENT_ID=your_client_id_here DINGTALK_CLIENT_SECRET=your_client_secret_here DINGTALK_ROBOT_CODE=your_robot_code_here # 数据库配置 DB_HOST=47.100.230.8 DB_PORT=4406 DB_USER=root DB_PASSWORD=your_password_here DB_DATABASE=public_sentiment DB_CHARSET=utf8mb4 # 日志配置 LOG_LEVEL=INFO ``` 3. **启动服务** ```bash docker-compose up -d ``` 4. **查看日志** ```bash docker-compose logs -f ``` 5. **停止服务** ```bash docker-compose down ``` ### 方式二:本地运行 1. **安装依赖** ```bash pip install -r requirements.txt ``` 2. **配置环境变量** 将环境变量导出到shell: ```bash export DINGTALK_CLIENT_ID=your_client_id_here export DINGTALK_CLIENT_SECRET=your_client_secret_here export DINGTALK_ROBOT_CODE=your_robot_code_here export DB_PASSWORD=your_password_here ``` 3. **运行机器人** ```bash cd app python main.py ``` ## 钉钉机器人配置 ### 1. 创建钉钉机器人应用 1. 访问 [钉钉开放平台](https://open-dev.dingtalk.com/) 2. 创建应用 → 选择"企业内部开发" → "机器人" 3. 填写应用信息并创建 ### 2. 配置机器人权限 进入应用管理页面,配置以下权限: - ✅ 接收消息 - ✅ 发送消息 - ✅ 群会话管理 ### 3. 开启Stream模式 1. 进入"开发配置" 2. 找到"消息推送" 3. 开启"Stream模式" ### 4. 获取配置信息 在应用管理页面获取: - **Client ID (AppKey)**: 应用的AppKey - **Client Secret (AppSecret)**: 应用的AppSecret - **Robot Code**: 机器人代码 ### 5. 将机器人添加到群聊 1. 在钉钉中创建一个群聊 2. 群设置 → 群机器人 → 添加机器人 3. 选择刚创建的机器人应用 详细配置步骤请参考:[钉钉机器人配置指南](./docs/dingtalk-config.md) ## 使用说明 ### 舆情上报格式 在钉钉群聊中发送以下格式的消息: **必填字段:** ``` 客户名称:XXX公司 问题描述:具体问题描述 ``` **可选字段:** ``` 渠道来源:微信/电话/邮件等 舆情详情:详细说明 预估影响:高/中/低 ``` ### 完整示例 ``` 客户名称:阿里巴巴 问题描述:系统登录失败,影响业务运营 渠道来源:微信 舆情详情:客户反馈无法登录后台系统,已持续2小时 预估影响:高 ``` 机器人会自动解析并回复上报结果。 ## 数据库表结构 ```sql CREATE TABLE sentiment_reports ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', customer_name VARCHAR(255) NOT NULL COMMENT '客户名称', problem_description TEXT NOT NULL COMMENT '问题描述', channel_source VARCHAR(100) DEFAULT NULL COMMENT '渠道来源', sentiment_details TEXT DEFAULT NULL COMMENT '舆情详情', estimated_impact VARCHAR(255) DEFAULT NULL COMMENT '预估影响', reporter_name VARCHAR(100) DEFAULT NULL COMMENT '上报人姓名', reporter_id VARCHAR(100) DEFAULT NULL COMMENT '上报人钉钉ID', conversation_id VARCHAR(100) DEFAULT NULL COMMENT '会话ID', conversation_title VARCHAR(255) DEFAULT NULL COMMENT '会话标题', message_id VARCHAR(100) DEFAULT NULL COMMENT '消息ID', raw_message TEXT DEFAULT NULL COMMENT '原始消息内容', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', INDEX idx_customer_name (customer_name), INDEX idx_reporter_id (reporter_id), INDEX idx_created_at (created_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='舆情上报表'; ``` 数据库表会在首次运行时自动创建。 ## 项目结构 ``` ddbot/ ├── app/ # 应用代码 │ ├── main.py # 主入口 │ ├── config.py # 配置管理 │ ├── bot.py # 机器人处理器 │ ├── message_parser.py # 消息解析器 │ └── database.py # 数据库管理 ├── 271demo/ # 钉钉官方SDK │ └── dingtalk-stream-sdk-python/ ├── docs/ # 文档 │ └── dingtalk-config.md # 钉钉配置指南 ├── Dockerfile # Docker镜像构建文件 ├── docker-compose.yml # Docker Compose配置 ├── requirements.txt # Python依赖 ├── .dockerignore # Docker忽略文件 └── README.md # 项目说明 ``` ## 常见问题 ### 1. 机器人无法接收消息? - 确认Stream模式已开启 - 检查Client ID和Client Secret是否正确 - 确认机器人已添加到群聊中 - 查看日志中是否有错误信息 ### 2. 数据库连接失败? - 检查数据库地址、端口是否正确 - 确认数据库用户名和密码是否正确 - 确认数据库服务是否正常运行 - 检查网络连接是否正常 ### 3. 消息格式不识别? - 确保消息中包含"客户名称"和"问题描述"两个必填字段 - 字段名称后使用中文冒号(:)或英文冒号(:) - 可以在消息中添加换行符分隔不同字段 ### 4. Docker容器启动失败? - 检查 `.env` 文件是否配置正确 - 确认Docker服务是否正常运行 - 查看容器日志:`docker-compose logs -f` ## 技术栈 - **语言**: Python 3.9 - **钉钉SDK**: dingtalk-stream - **数据库**: MySQL + PyMySQL - **容器化**: Docker + Docker Compose - **异步框架**: asyncio ## 开发计划 - [ ] 支持更多消息格式(图片、语音等) - [ ] 添加舆情统计分析功能 - [ ] 支持多租户隔离 - [ ] 添加Web管理后台 - [ ] 支持自定义字段配置 ## 许可证 MIT License ## 联系方式 如有问题,请提交Issue或联系开发者。