feat: full clinera platform — auth, appointments, WhatsApp, chatbot canvas, reminders, leads, campaigns, inbox

This commit is contained in:
Obaid alah Saleh
2026-03-13 12:45:14 +02:00
parent fe044c91b4
commit 66a3568d01
195 changed files with 41621 additions and 4568 deletions
+208
View File
@@ -0,0 +1,208 @@
// Debug actual message delivery issues
async function debugDelivery() {
console.log('🔍 DEBUGGING WHY MESSAGES NOT REACHING OBAID');
console.log('='.repeat(60));
try {
// 1. Check WAHA session details
console.log('1️⃣ Checking WAHA session status...');
const sessionResponse = await fetch('http://localhost:3005/api/sessions', {
headers: { 'X-Api-Key': '992659f827564646ba3ab95ead50adc9' }
});
if (sessionResponse.ok) {
const sessions = await sessionResponse.json();
const defaultSession = sessions.find(s => s.name === 'default');
if (defaultSession) {
console.log('📱 WAHA Session Details:');
console.log(` Status: ${defaultSession.status}`);
console.log(` Connected as: ${defaultSession.me?.pushName || 'Unknown'}`);
console.log(` Phone: ${defaultSession.me?.id || 'Unknown'}`);
console.log(` LID: ${defaultSession.me?.lid || 'N/A'}`);
if (defaultSession.status !== 'WORKING') {
console.log('❌ PROBLEM: WAHA session not in WORKING status!');
return;
}
} else {
console.log('❌ PROBLEM: No default session found!');
return;
}
} else {
console.log('❌ PROBLEM: Cannot connect to WAHA API!');
return;
}
// 2. Test different phone number formats
console.log('\n2️⃣ Testing different phone number formats...');
const phoneFormats = [
'+201066544750@c.us',
'201066544750@c.us',
'+201066544750@s.whatsapp.net',
'201066544750@s.whatsapp.net'
];
console.log('📱 Testing formats for obaid:');
for (const format of phoneFormats) {
console.log(`\n Testing: ${format}`);
try {
const testMessage = {
session: 'default',
chatId: format,
text: `Format test: ${format} - ${new Date().toLocaleTimeString()}`
};
const response = await fetch('http://localhost:3005/api/sendText', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Api-Key': '992659f827564646ba3ab95ead50adc9'
},
body: JSON.stringify(testMessage)
});
if (response.ok) {
const result = await response.json();
console.log(` ✅ API Success: ID ${result.key?.id}, Status: ${result.status}`);
// Wait 2 seconds and check delivery status if available
await new Promise(resolve => setTimeout(resolve, 2000));
} else {
const error = await response.text();
console.log(` ❌ API Failed: ${response.status} - ${error}`);
}
} catch (error) {
console.log(` ❌ Error: ${error.message}`);
}
}
// 3. Try sending to the connected WhatsApp number instead
console.log('\n3️⃣ Testing send to connected WhatsApp number...');
const sessionResponse2 = await fetch('http://localhost:3005/api/sessions', {
headers: { 'X-Api-Key': '992659f827564646ba3ab95ead50adc9' }
});
if (sessionResponse2.ok) {
const sessions = await sessionResponse2.json();
const defaultSession = sessions.find(s => s.name === 'default');
if (defaultSession?.me?.id) {
console.log(`📱 Sending test to connected number: ${defaultSession.me.id}`);
try {
const selfTestMessage = {
session: 'default',
chatId: defaultSession.me.id,
text: `🧪 SELF TEST MESSAGE
This is a test message sent to the connected WhatsApp account to verify message delivery is working.
Time: ${new Date().toLocaleString()}
From: Clinera Reminder System`
};
const response = await fetch('http://localhost:3005/api/sendText', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Api-Key': '992659f827564646ba3ab95ead50adc9'
},
body: JSON.stringify(selfTestMessage)
});
if (response.ok) {
const result = await response.json();
console.log(` ✅ Self-test sent successfully!`);
console.log(` 📱 Check the WhatsApp account connected to WAHA`);
console.log(` 📞 Number: ${defaultSession.me.id}`);
} else {
console.log(` ❌ Self-test failed: ${response.status}`);
}
} catch (error) {
console.log(` ❌ Self-test error: ${error.message}`);
}
}
}
// 4. Check recent message logs in detail
console.log('\n4️⃣ Checking recent message logs...');
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();
try {
const recentMessages = await prisma.messageLog.findMany({
where: {
direction: 'outgoing',
createdAt: { gte: new Date(Date.now() - 30 * 60 * 1000) } // last 30 minutes
},
orderBy: { createdAt: 'desc' },
take: 10,
include: {
appointment: {
include: { lead: true }
}
}
});
console.log(`📊 Recent messages (last 30 min): ${recentMessages.length}`);
recentMessages.forEach((msg, i) => {
console.log(`\n ${i + 1}. To: ${msg.phone}`);
console.log(` Patient: ${msg.appointment?.lead?.name || 'Unknown'}`);
console.log(` Status: ${msg.status}`);
console.log(` WAHA ID: ${msg.wahaMessageId || 'None'}`);
console.log(` Sent: ${msg.sentAt}`);
console.log(` Delivered: ${msg.deliveredAt || 'No'}`);
console.log(` Read: ${msg.readAt || 'No'}`);
});
await prisma.$disconnect();
} catch (error) {
console.log(`❌ Database check failed: ${error.message}`);
}
// 5. Check WhatsApp Web status
console.log('\n5️⃣ Checking if WhatsApp Web is properly connected...');
try {
const statusResponse = await fetch('http://localhost:3005/api/default/status', {
headers: { 'X-Api-Key': '992659f827564646ba3ab95ead50adc9' }
});
if (statusResponse.ok) {
const status = await statusResponse.json();
console.log('📱 WhatsApp Status:', status);
} else {
console.log('⚠️ Could not get WhatsApp status');
}
} catch (error) {
console.log('⚠️ Status check failed:', error.message);
}
// 6. Recommendations
console.log('\n🔧 TROUBLESHOOTING RECOMMENDATIONS:');
console.log('1. Check if WhatsApp Web is still connected in your browser');
console.log('2. Verify the phone number +201066544750 is correct');
console.log('3. Check if WhatsApp is blocking messages from this number');
console.log('4. Try restarting WAHA container if needed');
console.log('5. Check spam/blocked messages in WhatsApp');
console.log('\n📱 NEXT STEPS:');
console.log('1. Check the connected WhatsApp account for any test messages');
console.log('2. Verify obaid\'s WhatsApp number is active and correct');
console.log('3. Try sending from WhatsApp Web manually first');
} catch (error) {
console.error('❌ Debug failed:', error);
}
}
debugDelivery().catch(console.error);