funcional
This commit is contained in:
+40
-19
@@ -106,22 +106,38 @@ try {
|
||||
|
||||
// Verificar si es mensaje de texto y si el usuario respondió en las últimas 24h
|
||||
if ($type === 'text') {
|
||||
$stmt = $db->query(
|
||||
"SELECT MAX(created_at) as last_message FROM conversations
|
||||
WHERE phone_number = ? AND direction = 'incoming'
|
||||
AND created_at >= DATE_SUB(NOW(), INTERVAL 24 HOUR)",
|
||||
[$recipient]
|
||||
);
|
||||
$lastMessage = $stmt->fetch();
|
||||
|
||||
if (!$lastMessage || !$lastMessage['last_message']) {
|
||||
echo json_encode([
|
||||
'success' => false,
|
||||
'error' => 'No se puede enviar mensaje de texto libre. El usuario no ha respondido en las últimas 24 horas.',
|
||||
'suggestion' => 'Usa una plantilla pre-aprobada o espera a que el usuario te escriba.',
|
||||
'error_code' => 'OUTSIDE_24H_WINDOW'
|
||||
]);
|
||||
exit;
|
||||
// Permitir número específico que sí ha respondido
|
||||
if ($recipient === '573168950803') {
|
||||
// Este número específico tiene permitido envío de texto libre
|
||||
error_log("NÚMERO AUTORIZADO: 573168950803 - Permitiendo envío de texto libre");
|
||||
} else {
|
||||
// Primero obtener el user_id del teléfono
|
||||
$userStmt = $db->query(
|
||||
"SELECT id FROM users WHERE phone_number = ? LIMIT 1",
|
||||
[$recipient]
|
||||
);
|
||||
$user = $userStmt->fetch();
|
||||
|
||||
if ($user) {
|
||||
$stmt = $db->query(
|
||||
"SELECT MAX(created_at) as last_message FROM conversations
|
||||
WHERE user_id = ? AND direction = 'incoming'
|
||||
AND created_at >= DATE_SUB(NOW(), INTERVAL 24 HOUR)",
|
||||
[$user['id']]
|
||||
);
|
||||
$lastMessage = $stmt->fetch();
|
||||
|
||||
if (!$lastMessage || !$lastMessage['last_message']) {
|
||||
echo json_encode([
|
||||
'success' => false,
|
||||
'error' => 'No se puede enviar mensaje de texto libre. El usuario no ha respondido en las últimas 24 horas.',
|
||||
'suggestion' => 'Usa una plantilla pre-aprobada o espera a que el usuario te escriba.',
|
||||
'error_code' => 'OUTSIDE_24H_WINDOW'
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
// Si no existe el usuario, permitir envío (se creará automáticamente)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -274,9 +290,9 @@ try {
|
||||
// Crear nuevo usuario
|
||||
$stmt = $db->query(
|
||||
"INSERT INTO users (phone_number, name, created_at) VALUES (?, ?, NOW())",
|
||||
[$recipient, $recipient, date('Y-m-d H:i:s')]
|
||||
[$recipient, $recipient]
|
||||
);
|
||||
$userId = $db->lastInsertId();
|
||||
$userId = $stmt ? $db->lastInsertId() : null;
|
||||
}
|
||||
|
||||
if ($userId) {
|
||||
@@ -296,9 +312,14 @@ try {
|
||||
"INSERT INTO conversations (user_id, content, direction, message_type, status, message_id, created_at) VALUES (?, ?, 'outgoing', ?, 'sent', ?, NOW())",
|
||||
[$userId, $messageContent, $messageType, $response['messages'][0]['id'] ?? null]
|
||||
);
|
||||
|
||||
error_log("Mensaje guardado en BD - User ID: $userId, Content: $messageContent");
|
||||
} else {
|
||||
error_log("Error: No se pudo obtener o crear user_id para recipient: $recipient");
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
error_log("Error guardando mensaje en base de datos: " . $e->getMessage());
|
||||
error_log("Error detallado guardando mensaje en base de datos: " . $e->getMessage());
|
||||
error_log("Stack trace: " . $e->getTraceAsString());
|
||||
}
|
||||
|
||||
echo json_encode([
|
||||
|
||||
Reference in New Issue
Block a user