File size: 3,070 Bytes
2c8245e
52f5b49
 
 
 
 
 
e80e6b3
52f5b49
2c8245e
dbb6988
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c1fee4c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
---
title: FBChatBot
emoji: 😻
colorFrom: purple
colorTo: red
sdk: docker
pinned: false
app_file: main.py
short_description: 'FaceBook ChatBot'
---
# WeBot - Facebook Messenger Chatbot

WeBot là một chatbot Facebook Messenger được xây dựng với FastAPI, tích hợp với Google Sheets để lưu trữ lịch sử hội thoại và Supabase để quản lý token cũng như tìm kiếm vector.

## Tính năng

- Webhook Facebook Messenger để nhận và xử lý tin nhắn
- Phân tích nội dung tin nhắn và từ khóa
- Tích hợp với Google Sheets để lưu trữ lịch sử hội thoại
- Sử dụng Supabase để:
  - Quản lý access token cho từng Facebook Page
  - Vector similarity search với embedding
- Xử lý bất đồng bộ với async/await
- Logging chi tiết với loguru

## Yêu cầu

- Python 3.8+
- Facebook Page và App
- Tài khoản Google Cloud với Sheets API được kích hoạt
- Tài khoản Supabase

## Cài đặt

1. Clone repository:
```bash
git clone https://github.com/yourusername/webot.git
cd webot
```

2. Tạo và kích hoạt môi trường ảo:
```bash
python -m venv venv
source venv/bin/activate  # Linux/Mac
# hoặc
.\venv\Scripts\activate  # Windows
```

3. Cài đặt dependencies:
```bash
pip install -r requirements.txt
```

4. Cấu hình môi trường:
- Copy file `.env.example` thành `.env`
- Điền các thông tin cấu hình cần thiết

## Cấu hình

1. Facebook:
- Tạo Facebook App và Page
- Cấu hình webhook với URL của ứng dụng
- Lưu Page Access Token vào Supabase

2. Google Sheets:
- Tạo project trong Google Cloud Console
- Kích hoạt Sheets API
- Tải credentials.json và cấu hình trong .env

3. Supabase:
- Tạo bảng `page_tokens` để lưu trữ access token
- Cấu hình vector similarity search
- Tạo RPC function `match_documents`

## Chạy ứng dụng

### Phát triển

```bash
uvicorn app.main:app --reload
```

### Production với Docker

```bash
docker build -t webot .
docker run -p 8000:8000 webot
```

## Deploy

### Fly.io

1. Cài đặt Fly CLI
2. Đăng nhập và khởi tạo ứng dụng:
```bash
flyctl auth login
flyctl launch
```

3. Deploy:
```bash
flyctl deploy
```

### Render

1. Kết nối repository với Render
2. Tạo Web Service mới
3. Cấu hình các biến môi trường
4. Deploy

## Cấu trúc dự án

```
webot/
├── app/
│   ├── __init__.py
│   ├── main.py           # FastAPI application
│   ├── config.py         # Configuration management
│   ├── facebook.py       # Facebook Messenger integration
│   ├── sheets.py         # Google Sheets integration
│   ├── supabase_db.py    # Supabase integration
│   ├── embedding.py      # Text embedding
│   └── utils.py          # Utility functions
├── requirements.txt
├── Dockerfile
├── .env.example
└── README.md
```

## Đóng góp

Mọi đóng góp đều được hoan nghênh! Vui lòng tạo issue hoặc pull request.