212 lines
7.2 KiB
JavaScript
212 lines
7.2 KiB
JavaScript
// Send to the ACTUAL connected WhatsApp number
|
|
async function sendToRealNumber() {
|
|
console.log('🔍 SENDING TO ACTUAL CONNECTED WHATSAPP NUMBER');
|
|
console.log('='.repeat(60));
|
|
|
|
try {
|
|
// 1. Get the actual connected number from WAHA
|
|
console.log('1️⃣ Getting actual connected WhatsApp number...');
|
|
|
|
const sessionResponse = await fetch('http://localhost:3005/api/sessions', {
|
|
headers: { 'X-Api-Key': '992659f827564646ba3ab95ead50adc9' }
|
|
});
|
|
|
|
if (!sessionResponse.ok) {
|
|
console.log('❌ Cannot get WAHA session info');
|
|
return;
|
|
}
|
|
|
|
const sessions = await sessionResponse.json();
|
|
const defaultSession = sessions.find(s => s.name === 'default');
|
|
|
|
if (!defaultSession) {
|
|
console.log('❌ No default session found');
|
|
return;
|
|
}
|
|
|
|
const connectedNumber = defaultSession.me?.id;
|
|
const connectedName = defaultSession.me?.pushName;
|
|
|
|
console.log(`✅ Found connected WhatsApp:`);
|
|
console.log(` Name: ${connectedName}`);
|
|
console.log(` Number: ${connectedNumber}`);
|
|
console.log(` Status: ${defaultSession.status}`);
|
|
|
|
if (!connectedNumber) {
|
|
console.log('❌ No connected phone number found');
|
|
return;
|
|
}
|
|
|
|
// 2. Send test message to the ACTUAL connected number
|
|
console.log('\n2️⃣ Sending test message to YOUR connected WhatsApp...');
|
|
|
|
const testMessage = {
|
|
session: 'default',
|
|
chatId: connectedNumber,
|
|
text: `🎉 SUCCESS! CLINERA SYSTEM IS WORKING!
|
|
|
|
Hi ${connectedName}!
|
|
|
|
This message proves the Clinera reminder system is fully operational and can send messages to your actual WhatsApp number.
|
|
|
|
✅ WAHA Connection: Working
|
|
✅ Message Delivery: Success
|
|
✅ Connected Number: ${connectedNumber}
|
|
✅ System Status: Fully Operational
|
|
|
|
The issue was we were sending to +201066544750 but your actual WhatsApp is ${connectedNumber}.
|
|
|
|
Time: ${new Date().toLocaleString()}
|
|
|
|
🎯 THE REMINDER SYSTEM IS NOW WORKING! 🎯`
|
|
};
|
|
|
|
const sendResponse = await fetch('http://localhost:3005/api/sendText', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'X-Api-Key': '992659f827564646ba3ab95ead50adc9'
|
|
},
|
|
body: JSON.stringify(testMessage)
|
|
});
|
|
|
|
if (sendResponse.ok) {
|
|
const result = await sendResponse.json();
|
|
console.log('🎉 MESSAGE SENT SUCCESSFULLY TO YOUR ACTUAL WHATSAPP!');
|
|
console.log(` Message ID: ${result.key?.id}`);
|
|
console.log(` Status: ${result.status}`);
|
|
console.log(` Timestamp: ${result.messageTimestamp}`);
|
|
|
|
// 3. Update database with correct number
|
|
console.log('\n3️⃣ Updating database with correct WhatsApp number...');
|
|
|
|
const { PrismaClient } = require('@prisma/client');
|
|
const prisma = new PrismaClient();
|
|
|
|
try {
|
|
// Extract just the phone number without @c.us
|
|
const cleanNumber = connectedNumber.replace('@c.us', '').replace('@s.whatsapp.net', '');
|
|
const formattedNumber = '+' + cleanNumber;
|
|
|
|
console.log(` Updating obaid's number from +201066544750 to ${formattedNumber}`);
|
|
|
|
// Update or create lead with correct number
|
|
const clinic = await prisma.clinic.findFirst();
|
|
|
|
let obaidLead = await prisma.lead.findFirst({
|
|
where: {
|
|
OR: [
|
|
{ name: { contains: 'obaidalah' } },
|
|
{ name: { contains: 'obaid' } }
|
|
]
|
|
}
|
|
});
|
|
|
|
if (obaidLead) {
|
|
// Update existing lead
|
|
obaidLead = await prisma.lead.update({
|
|
where: { id: obaidLead.id },
|
|
data: { phone: formattedNumber }
|
|
});
|
|
console.log(` ✅ Updated lead: ${obaidLead.name} → ${formattedNumber}`);
|
|
} else {
|
|
// Create new lead
|
|
obaidLead = await prisma.lead.create({
|
|
data: {
|
|
clinicId: clinic.id,
|
|
name: connectedName || 'obaidalah saleh',
|
|
phone: formattedNumber,
|
|
status: 'new',
|
|
source: 'whatsapp'
|
|
}
|
|
});
|
|
console.log(` ✅ Created lead: ${obaidLead.name} (${formattedNumber})`);
|
|
}
|
|
|
|
// 4. Create appointment with correct number
|
|
console.log('\n4️⃣ Creating appointment with CORRECT number...');
|
|
|
|
const treatment = await prisma.treatment.findFirst({
|
|
where: { clinicId: clinic.id, isActive: true }
|
|
});
|
|
|
|
const appointmentTime = new Date();
|
|
appointmentTime.setDate(appointmentTime.getDate() + 1);
|
|
appointmentTime.setHours(15, 0, 0, 0); // Tomorrow 3 PM
|
|
|
|
const appointment = await prisma.appointment.create({
|
|
data: {
|
|
clinicId: clinic.id,
|
|
leadId: obaidLead.id,
|
|
treatmentId: treatment.id,
|
|
dateTime: appointmentTime,
|
|
status: 'scheduled',
|
|
confirmToken: require('crypto').randomBytes(32).toString('hex'),
|
|
notes: 'Test with correct WhatsApp number'
|
|
},
|
|
});
|
|
|
|
console.log(` ✅ Appointment created: ${appointment.id}`);
|
|
console.log(` 📅 Date: ${appointmentTime.toLocaleString()}`);
|
|
|
|
// 5. Schedule immediate booking confirmation
|
|
const template = await prisma.reminderTemplate.findFirst({
|
|
where: {
|
|
clinicId: clinic.id,
|
|
trigger: 'booking_confirmed',
|
|
isActive: true
|
|
}
|
|
});
|
|
|
|
if (template) {
|
|
await prisma.scheduledReminder.create({
|
|
data: {
|
|
appointmentId: appointment.id,
|
|
templateId: template.id,
|
|
scheduledFor: new Date(Date.now() + 5000), // 5 seconds
|
|
},
|
|
});
|
|
|
|
console.log(' ✅ Booking confirmation scheduled');
|
|
|
|
// Wait and send
|
|
console.log('\n5️⃣ Sending booking confirmation...');
|
|
await new Promise(resolve => setTimeout(resolve, 6000));
|
|
|
|
const cronResponse = await fetch('http://localhost:3000/api/cron/send-reminders?key=dev-cron-key', {
|
|
method: 'POST'
|
|
});
|
|
|
|
if (cronResponse.ok) {
|
|
const cronResult = await cronResponse.json();
|
|
console.log(` 📤 Cron result: sent=${cronResult.sent}, failed=${cronResult.failed}`);
|
|
|
|
if (cronResult.sent > 0) {
|
|
console.log(' 🎉 BOOKING CONFIRMATION SENT TO CORRECT NUMBER!');
|
|
}
|
|
}
|
|
}
|
|
|
|
await prisma.$disconnect();
|
|
|
|
} catch (dbError) {
|
|
console.error('❌ Database update failed:', dbError.message);
|
|
}
|
|
|
|
console.log('\n📱 CHECK YOUR WHATSAPP NOW!');
|
|
console.log(` Number: ${connectedNumber}`);
|
|
console.log(` You should receive:`);
|
|
console.log(` 1. ✅ Test success message (immediate)`);
|
|
console.log(` 2. ✅ Booking confirmation (within minutes)`);
|
|
|
|
} else {
|
|
const error = await sendResponse.text();
|
|
console.log(`❌ Send failed: ${sendResponse.status} - ${error}`);
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('❌ Failed:', error);
|
|
}
|
|
}
|
|
|
|
sendToRealNumber().catch(console.error); |