Ajit Panday commited on
Commit
2abc620
·
1 Parent(s): 3cb4e02

Add separate setup guides for central server and FreePBX

Browse files
Files changed (2) hide show
  1. FREEPBX_SETUP.md +276 -0
  2. SERVER_SETUP.md +246 -0
FREEPBX_SETUP.md ADDED
@@ -0,0 +1,276 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # vBot FreePBX Setup Guide
2
+
3
+ ## Overview
4
+
5
+ This guide provides detailed instructions for setting up FreePBX to work with vBot. FreePBX will handle call recording and webhook integration, while vBot processes the recordings and returns analysis results.
6
+
7
+ ## Prerequisites
8
+
9
+ - FreePBX 16 or higher
10
+ - MySQL 5.7 or higher (included with FreePBX)
11
+ - PHP 7.4 or higher (included with FreePBX)
12
+ - SSL certificate for secure webhooks
13
+ - vBot API key (provided by central server admin)
14
+
15
+ ## Step 1: FreePBX Installation
16
+
17
+ 1. Download FreePBX:
18
+ - Visit https://www.freepbx.org/downloads/
19
+ - Download FreePBX 16 or higher
20
+ - Follow the installation guide
21
+
22
+ 2. Complete FreePBX Setup:
23
+ - Run the setup wizard
24
+ - Configure basic settings
25
+ - Set up admin credentials
26
+ - Configure network settings
27
+
28
+ 3. Verify Installation:
29
+ ```bash
30
+ # Check FreePBX version
31
+ sudo asterisk -rx "core show version"
32
+
33
+ # Check MySQL version
34
+ mysql --version
35
+
36
+ # Check PHP version
37
+ php -v
38
+ ```
39
+
40
+ ## Step 2: FreePBX Configuration
41
+
42
+ 1. Configure Call Recording:
43
+ - Log in to FreePBX Admin
44
+ - Go to Admin → Call Recording
45
+ - Enable call recording
46
+ - Set recording path: `/var/spool/asterisk/monitor`
47
+ - Configure recording format: WAV
48
+ - Set recording options
49
+
50
+ 2. Set Up Recording Post-Processing:
51
+ - Go to Admin → Advanced Settings
52
+ - Configure post-recording script
53
+ - Set up webhook integration
54
+
55
+ 3. Configure SSL:
56
+ - Go to Admin → Certificates
57
+ - Generate or upload SSL certificate
58
+ - Configure HTTPS settings
59
+ - Verify SSL configuration
60
+
61
+ ## Step 3: Webhook Integration
62
+
63
+ 1. Install Webhook Package:
64
+ ```bash
65
+ cd /var/www/html
66
+ git clone https://huggingface.co/spaces/iajitpanday/vBot/customer_webhook
67
+ cd customer_webhook
68
+ composer install
69
+ ```
70
+
71
+ 2. Configure Webhook:
72
+ ```bash
73
+ cp config/config.example.php config/config.php
74
+ nano config/config.php
75
+ ```
76
+ ```php
77
+ <?php
78
+ return [
79
+ 'db' => [
80
+ 'host' => 'localhost',
81
+ 'name' => 'vbot_calls',
82
+ 'user' => 'vbot_user',
83
+ 'pass' => 'your_password'
84
+ ],
85
+ 'api_key' => 'your_api_key',
86
+ 'api_url' => 'https://your-vbot-space.huggingface.space',
87
+ 'webhook_secret' => 'your_webhook_secret'
88
+ ];
89
+ ```
90
+
91
+ 3. Set Permissions:
92
+ ```bash
93
+ chown -R asterisk:asterisk /var/www/html/customer_webhook
94
+ chmod -R 755 /var/www/html/customer_webhook
95
+ ```
96
+
97
+ ## Step 4: Database Setup
98
+
99
+ 1. Create Database:
100
+ ```sql
101
+ CREATE DATABASE vbot_calls;
102
+ USE vbot_calls;
103
+
104
+ CREATE TABLE call_records (
105
+ id VARCHAR(36) PRIMARY KEY,
106
+ customer_id INT NOT NULL,
107
+ caller_number VARCHAR(20) NOT NULL,
108
+ called_number VARCHAR(20) NOT NULL,
109
+ transcription TEXT,
110
+ summary TEXT,
111
+ sentiment VARCHAR(50),
112
+ keywords TEXT,
113
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
114
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
115
+ );
116
+ ```
117
+
118
+ 2. Create Database User:
119
+ ```sql
120
+ CREATE USER 'vbot_user'@'localhost' IDENTIFIED BY 'your_password';
121
+ GRANT ALL PRIVILEGES ON vbot_calls.* TO 'vbot_user'@'localhost';
122
+ FLUSH PRIVILEGES;
123
+ ```
124
+
125
+ ## Step 5: Call Processing Setup
126
+
127
+ 1. Configure Dialplan:
128
+ - Go to Admin → Dialplan
129
+ - Add custom dialplan for call recording
130
+ - Configure post-recording processing
131
+
132
+ 2. Set Up AGI Script:
133
+ ```bash
134
+ nano /var/lib/asterisk/agi-bin/process_call
135
+ ```
136
+ ```bash
137
+ #!/bin/bash
138
+ CALL_ID=$1
139
+ CALLER=$2
140
+ CALLED=$3
141
+
142
+ curl -X POST https://your-vbot-space.huggingface.space/api/process-call \
143
+ -H "X-API-Key: your_api_key" \
144
+ -H "Content-Type: multipart/form-data" \
145
+ -F "file=@/var/spool/asterisk/monitor/${CALL_ID}.wav" \
146
+ -H "caller_number=${CALLER}" \
147
+ -H "called_number=${CALLED}"
148
+ ```
149
+
150
+ 3. Set Script Permissions:
151
+ ```bash
152
+ chmod +x /var/lib/asterisk/agi-bin/process_call
153
+ chown asterisk:asterisk /var/lib/asterisk/agi-bin/process_call
154
+ ```
155
+
156
+ ## Step 6: Security Configuration
157
+
158
+ 1. Firewall Setup:
159
+ ```bash
160
+ sudo ufw allow 80/tcp
161
+ sudo ufw allow 443/tcp
162
+ sudo ufw allow 5060/udp # SIP
163
+ sudo ufw allow 10000:20000/udp # RTP
164
+ sudo ufw enable
165
+ ```
166
+
167
+ 2. SSL Configuration:
168
+ - Use Let's Encrypt for free SSL certificates
169
+ - Configure automatic renewal
170
+ - Use strong cipher suites
171
+
172
+ 3. File Permissions:
173
+ - Secure webhook handler files
174
+ - Restrict access to call recordings
175
+ - Use appropriate ownership
176
+
177
+ ## Step 7: Testing
178
+
179
+ 1. Test Call Recording:
180
+ ```bash
181
+ # Make a test call
182
+ # Check recording directory
183
+ ls -l /var/spool/asterisk/monitor/
184
+
185
+ # Check FreePBX logs
186
+ tail -f /var/log/asterisk/messages
187
+ ```
188
+
189
+ 2. Test Webhook:
190
+ ```bash
191
+ curl -X POST https://your-domain.com/customer_webhook/webhook.php \
192
+ -H "Content-Type: application/json" \
193
+ -d '{"test": true}'
194
+ ```
195
+
196
+ 3. Test Database:
197
+ ```sql
198
+ SELECT * FROM call_records ORDER BY created_at DESC LIMIT 1;
199
+ ```
200
+
201
+ ## Step 8: Monitoring
202
+
203
+ 1. Log Monitoring:
204
+ ```bash
205
+ # FreePBX logs
206
+ tail -f /var/log/asterisk/messages
207
+
208
+ # Webhook logs
209
+ tail -f /var/log/apache2/vbot-access.log
210
+
211
+ # Database logs
212
+ tail -f /var/log/mysql/error.log
213
+ ```
214
+
215
+ 2. System Monitoring:
216
+ ```bash
217
+ # Install monitoring tools
218
+ sudo apt install prometheus node-exporter
219
+
220
+ # Configure monitoring
221
+ sudo nano /etc/prometheus/prometheus.yml
222
+ ```
223
+
224
+ ## Step 9: Maintenance
225
+
226
+ 1. Regular Tasks:
227
+ - Update FreePBX
228
+ - Rotate logs
229
+ - Backup database
230
+ - Clean old recordings
231
+
232
+ 2. Backup Strategy:
233
+ ```bash
234
+ # Database backup
235
+ mysqldump -u vbot_user -p vbot_calls > backup.sql
236
+
237
+ # Configuration backup
238
+ tar -czf config_backup.tar.gz /etc/asterisk/
239
+ ```
240
+
241
+ 3. Update Process:
242
+ ```bash
243
+ # Update FreePBX
244
+ sudo apt update
245
+ sudo apt upgrade
246
+
247
+ # Update webhook package
248
+ cd /var/www/html/customer_webhook
249
+ git pull
250
+ ```
251
+
252
+ ## Troubleshooting
253
+
254
+ 1. Common Issues:
255
+ - Call recording failures
256
+ - Webhook delivery problems
257
+ - Database connection errors
258
+ - SSL certificate issues
259
+
260
+ 2. Debug Tools:
261
+ ```bash
262
+ # Check FreePBX CLI
263
+ sudo asterisk -rx "core show version"
264
+
265
+ # Check webhook logs
266
+ tail -f /var/log/apache2/vbot-error.log
267
+
268
+ # Test database connection
269
+ mysql -u vbot_user -p vbot_calls
270
+ ```
271
+
272
+ 3. Support:
273
+ - Check FreePBX documentation
274
+ - Review logs
275
+ - Contact support
276
+ - Submit issues
SERVER_SETUP.md ADDED
@@ -0,0 +1,246 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # vBot Central Server Setup Guide
2
+
3
+ ## Overview
4
+
5
+ This guide provides detailed instructions for setting up the central vBot server that handles call transcription and analysis. The central server is deployed on Hugging Face Space and manages customer accounts, API keys, and webhook delivery.
6
+
7
+ ## Prerequisites
8
+
9
+ - Hugging Face account
10
+ - MySQL database (version 5.7 or higher)
11
+ - Python 3.8 or higher
12
+ - Git
13
+
14
+ ## Step 1: Deploy to Hugging Face Space
15
+
16
+ 1. Create a new Space:
17
+ - Go to https://huggingface.co/spaces
18
+ - Click "New Space"
19
+ - Choose "Gradio" as the SDK
20
+ - Set the Space name (e.g., "vBot")
21
+ - Set visibility (public/private)
22
+
23
+ 2. Clone the repository:
24
+ ```bash
25
+ git clone https://huggingface.co/spaces/iajitpanday/vBot
26
+ cd vBot
27
+ ```
28
+
29
+ 3. Configure environment variables:
30
+ ```bash
31
+ cp .env.example .env
32
+ # Edit .env with your configuration
33
+ ```
34
+
35
+ 4. Required environment variables:
36
+ ```bash
37
+ DATABASE_URL=mysql://user:password@host:port/database
38
+ SECRET_KEY=your-secret-key
39
+ API_BASE_URL=https://your-space.huggingface.space
40
+ ```
41
+
42
+ 5. Push to Hugging Face:
43
+ ```bash
44
+ git add .
45
+ git commit -m "Initial deployment"
46
+ git push
47
+ ```
48
+
49
+ ## Step 2: Database Setup
50
+
51
+ 1. Create the database:
52
+ ```sql
53
+ CREATE DATABASE vbot_central;
54
+ USE vbot_central;
55
+ ```
56
+
57
+ 2. Create required tables:
58
+ ```sql
59
+ CREATE TABLE customers (
60
+ id INT AUTO_INCREMENT PRIMARY KEY,
61
+ name VARCHAR(255) NOT NULL,
62
+ company_name VARCHAR(255),
63
+ email VARCHAR(255) NOT NULL,
64
+ api_key VARCHAR(64) NOT NULL UNIQUE,
65
+ webhook_url VARCHAR(255),
66
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
67
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
68
+ );
69
+
70
+ CREATE TABLE call_records (
71
+ id VARCHAR(36) PRIMARY KEY,
72
+ customer_id INT NOT NULL,
73
+ caller_number VARCHAR(20) NOT NULL,
74
+ called_number VARCHAR(20) NOT NULL,
75
+ transcription TEXT,
76
+ summary TEXT,
77
+ sentiment VARCHAR(50),
78
+ keywords TEXT,
79
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
80
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
81
+ FOREIGN KEY (customer_id) REFERENCES customers(id)
82
+ );
83
+ ```
84
+
85
+ ## Step 3: Admin Setup
86
+
87
+ 1. Access the admin interface:
88
+ - URL: `https://your-space.huggingface.space/admin`
89
+ - Default credentials: admin/admin
90
+
91
+ 2. Change admin password:
92
+ - Click "Change Password"
93
+ - Enter new secure password
94
+ - Save changes
95
+
96
+ 3. Create first customer:
97
+ - Click "Add Customer"
98
+ - Fill in customer details
99
+ - System will generate API key
100
+ - Save customer information
101
+
102
+ ## Step 4: API Configuration
103
+
104
+ 1. Verify API endpoints:
105
+ ```bash
106
+ curl https://your-space.huggingface.space/health
107
+ ```
108
+
109
+ 2. Test customer API:
110
+ ```bash
111
+ curl -X POST https://your-space.huggingface.space/api/process-call \
112
+ -H "X-API-Key: customer-api-key" \
113
+ -H "Content-Type: multipart/form-data" \
114
+ -F "file=@test.wav" \
115
+ -H "caller_number=+1234567890" \
116
+ -H "called_number=+0987654321"
117
+ ```
118
+
119
+ ## Step 5: Security Setup
120
+
121
+ 1. Configure SSL:
122
+ - Hugging Face Spaces provides SSL by default
123
+ - Verify SSL certificate is valid
124
+
125
+ 2. API Security:
126
+ - All API endpoints require valid API key
127
+ - Implement rate limiting
128
+ - Validate input data
129
+ - Sanitize output data
130
+
131
+ 3. Webhook Security:
132
+ - Require HTTPS for webhook URLs
133
+ - Validate webhook signatures
134
+ - Implement retry mechanism
135
+ - Log webhook delivery attempts
136
+
137
+ ## Step 6: Monitoring Setup
138
+
139
+ 1. Log Configuration:
140
+ ```bash
141
+ # Application logs
142
+ tail -f logs/app.log
143
+
144
+ # Error logs
145
+ tail -f logs/error.log
146
+
147
+ # Access logs
148
+ tail -f logs/access.log
149
+ ```
150
+
151
+ 2. Health Monitoring:
152
+ - Set up health check endpoint
153
+ - Monitor API response times
154
+ - Track webhook delivery success
155
+ - Monitor database performance
156
+
157
+ ## Step 7: Maintenance
158
+
159
+ 1. Regular Tasks:
160
+ - Monitor system logs
161
+ - Check API performance
162
+ - Verify webhook delivery
163
+ - Review security logs
164
+
165
+ 2. Backup Strategy:
166
+ - Regular database backups
167
+ - Configuration backups
168
+ - Log rotation
169
+ - API key rotation
170
+
171
+ 3. Update Process:
172
+ ```bash
173
+ # Update code
174
+ git pull
175
+
176
+ # Update dependencies
177
+ pip install -r requirements.txt
178
+
179
+ # Restart application
180
+ ```
181
+
182
+ ## Troubleshooting
183
+
184
+ 1. Common Issues:
185
+ - API authentication failures
186
+ - Webhook delivery failures
187
+ - Database connection issues
188
+ - Performance problems
189
+
190
+ 2. Debug Tools:
191
+ ```bash
192
+ # Check application logs
193
+ tail -f logs/app.log
194
+
195
+ # Check error logs
196
+ tail -f logs/error.log
197
+
198
+ # Check database connection
199
+ mysql -u user -p vbot_central
200
+ ```
201
+
202
+ 3. Support:
203
+ - Check documentation
204
+ - Review logs
205
+ - Contact support
206
+ - Submit issues
207
+
208
+ ## Security Best Practices
209
+
210
+ 1. API Security:
211
+ - Use strong API keys
212
+ - Implement rate limiting
213
+ - Validate all inputs
214
+ - Sanitize all outputs
215
+
216
+ 2. Database Security:
217
+ - Use strong passwords
218
+ - Limit database access
219
+ - Regular backups
220
+ - Encryption at rest
221
+
222
+ 3. Webhook Security:
223
+ - Require HTTPS
224
+ - Validate signatures
225
+ - Implement retries
226
+ - Monitor delivery
227
+
228
+ ## Performance Optimization
229
+
230
+ 1. API Optimization:
231
+ - Implement caching
232
+ - Optimize database queries
233
+ - Use connection pooling
234
+ - Monitor response times
235
+
236
+ 2. Webhook Optimization:
237
+ - Implement queue system
238
+ - Use async processing
239
+ - Monitor delivery times
240
+ - Handle failures gracefully
241
+
242
+ 3. Database Optimization:
243
+ - Index frequently queried columns
244
+ - Optimize table structure
245
+ - Regular maintenance
246
+ - Monitor performance