fischer-site/FEISHU_BITABLE_SETUP.md

297 lines
7.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 飞书多维表格配置指南
## 一、创建飞书多维表格
### 1.1 创建多维表格
1. 登录飞书
2. 进入「工作台」→ 搜索「多维表格」
3. 点击「新建多维表格」→ 选择「空白数据表」
4. 将多维表格命名为「官网客户咨询」
### 1.2 设置字段
在数据表中创建以下字段:
| 序号 | 字段名称 | 字段类型 | 说明 |
|------|---------|---------|------|
| 1 | 编号 | 自动编号 | 系统自动生成 |
| 2 | 姓名 | 文本 | 客户姓名 |
| 3 | 手机 | 电话号码 | 客户手机 |
| 4 | 邮箱 | 邮箱 | 客户邮箱 |
| 5 | 当前使用系统 | 多选 | 物业系统/资管系统/CRM/其他 |
| 6 | 系统名称 | 文本 | 其他系统名称 |
| 7 | 咨询内容 | 长文本 | 客户留言 |
| 8 | 咨询时间 | 创建时间 | 自动记录 |
| 9 | 处理状态 | 单选 | 待联系/已联系/已转化/无效线索 |
| 10 | 处理备注 | 文本 | 客服跟进记录 |
| 11 | 处理人 | 成员 | 负责客服 |
| 12 | 跟进时间 | 修改时间 | 最后更新时间 |
### 1.3 获取多维表格信息
1. 在浏览器中打开创建的多维表格
2. URL 格式:`https://xxx.feishu.cn/bitable/appbXXXXXXXXXXXXXX/baselXXXXXXXXXXXXXX`
3. `appbXXXXXXXXXXXXXX` 就是 **BITABLE_APP_TOKEN**
4. 点击数据表右上角「...」→「关于此数据表」→「数据表 ID」
5. 或者进入数据表后URL 中的 `tbl` 后面的字符串就是 **BITABLE_TABLE_ID**
## 二、创建飞书应用
### 2.1 创建应用
1. 进入 [飞书开放平台](https://open.feishu.cn/)
2. 点击「创建企业自建应用」
3. 填写应用名称和描述
4. 创建后,进入应用详情页
### 2.2 获取凭证
1. 进入「凭证与基础信息」
2. 获取 **App ID****App Secret**
### 2.3 配置权限
1. 进入「权限管理」
2. 搜索并添加以下权限:
- `bitable:app` - 多维表格权限
- `contact:user.id:readonly` - 通讯录只读权限
- `bitable:table:readonly` - 数据表只读
- `bitable:record:create` - 创建记录
- `bitable:record:update` - 更新记录
### 2.4 发布应用
1. 进入「版本管理与发布」
2. 创建新版本
3. 填写版本信息
4. 提交审核(如果是企业自建应用,通常无需审核直接发布)
### 2.5 添加应用到多维表格
1. 打开创建的多维表格
2. 点击右上角「...」→「添加应用」
3. 搜索并添加刚创建的应用
4. 确保应用有「查看和编辑」权限
## 三、获取 Webhook可选
### 3.1 创建群机器人
1. 在飞书中创建一个专用群组(如「官网咨询处理群」)
2. 点击群设置 → 群机器人 → 添加机器人
3. 选择「自定义机器人」
4. 设置机器人名称,点击添加
5. 复制 Webhook 地址
### 3.2 Webhook 地址格式
```
https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
```
## 四、环境变量配置
复制 `.env.example``.env`,填写配置:
```bash
# 飞书应用凭证
FEISHU_APP_ID=cli_xxxxxxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 多维表格信息
FEISHU_BITABLE_APP_TOKEN=appbXXXXXXXXXXXXXX
FEISHU_BITABLE_TABLE_ID=tblXXXXXXXXXXXXXX
# Webhook可选
FEISHU_WEBHOOK_URL=https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
```
## 五、启动服务
### 5.1 安装依赖
```bash
# 仅需要 Python 3.7+(标准库,无需额外安装)
python3 --version
```
### 5.2 启动服务
```bash
# 方法一:直接运行
python3 consult-service.py
# 方法二:使用环境变量
FEISHU_APP_ID=xxx FEISHU_APP_SECRET=xxx python3 consult-service.py
# 方法三:使用 .env 文件
# 安装 python-dotenv可选
pip3 install python-dotenv
# 启动服务
python3 consult-service.py
```
### 5.3 验证服务
```bash
# 健康检查
curl http://localhost:4001/api/consult/health
# 测试提交
curl -X POST http://localhost:4001/api/consult \
-H "Content-Type: application/json" \
-d '{
"name": "测试用户",
"phone": "13812345678",
"email": "test@example.com",
"current_system": ["物业系统", "CRM"],
"message": "测试咨询内容"
}'
```
## 六、配置 Nginx 反向代理(生产环境)
```nginx
server {
listen 443 ssl;
server_name your-domain.com;
location /ai/api/consult {
proxy_pass http://127.0.0.1:4001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 限制请求体大小
client_max_body_size 50k;
}
}
```
## 七、数据流程
```
┌─────────────┐
│ 用户提交 │
│ 表单数据 │
└──────┬──────┘
┌─────────────┐
│ 前端验证 │
│ (HTML5 + │
│ JavaScript)│
└──────┬──────┘
┌─────────────┐
│ 后端 API │
│ /api/consult│
└──────┬──────┘
├─────────────────┐
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ 本地存储 │ │ 飞书多维 │
│ JSON 文件 │ │ 表格 │
└─────────────┘ └──────┬──────┘
┌─────────────┐
│ 飞书通知 │
│ (Webhook) │
└─────────────┘
```
## 八、故障排查
### 8.1 常见问题
**Q: 飞书多维表格写入失败**
- 检查 APP_ID 和 APP_SECRET 是否正确
- 确认应用已发布并添加到多维表格
- 检查权限是否包含 `bitable:record:create`
**Q: Webhook 通知发送失败**
- 确认 Webhook 地址正确
- 检查网络是否可访问外网
**Q: CORS 跨域问题**
- 确认后端服务正常运行
- 检查 Nginx 配置是否正确转发
### 8.2 日志查看
服务运行时会输出详细日志:
```
[2026-05-19 10:00:00] ✓ 飞书 access_token 获取成功
[2026-05-19 10:00:01] ✓ 本地保存成功: /opt/ai-landing/data/2026-05.json
[2026-05-19 10:00:02] ✓ 飞书多维表格记录创建成功: recXXXXXXXXXXXXXX
[2026-05-19 10:00:03] ✓ 飞书通知发送成功
```
## 九、后续扩展
### 9.1 自动分配处理人
`consult-service.py` 中添加逻辑,根据不同条件自动分配处理人:
```python
def _auto_assign_handler(self, record):
# 根据系统类型分配
system = record.get("current_system", "")
if "物业" in system:
return "张三"
elif "资管" in system:
return "李四"
else:
return "王五"
```
### 9.2 自动发送邮件通知
添加邮件通知功能:
```python
import smtplib
from email.mime.text import MIMEText
def send_email_notification(self, record):
# 配置邮件服务器
smtp_server = os.getenv("SMTP_SERVER")
smtp_port = int(os.getenv("SMTP_PORT", 587))
smtp_user = os.getenv("SMTP_USER")
smtp_password = os.getenv("SMTP_PASSWORD")
msg = MIMEText(f"新咨询:{record['name']} - {record['phone']}", 'plain')
msg['Subject'] = '官网新咨询通知'
msg['From'] = smtp_user
msg['To'] = 'sales@example.com'
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(smtp_user, smtp_password)
server.send_message(msg)
```
### 9.3 数据统计
定期统计咨询数据:
```python
def get_statistics(self):
"""获取统计数据"""
# 按月统计
# 按处理状态统计
# 按来源统计
pass
```
## 十、联系支持
如有问题,请联系技术支持。