feat: bot WhatsApp Business API — Palmas360 inicial
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
require_once dirname(__DIR__) . '/config/env.php';
|
||||
require_once dirname(__DIR__) . '/config/db.php';
|
||||
|
||||
$db = db();
|
||||
|
||||
// ─── Tablas ───────────────────────────────────────────────────────────────────
|
||||
|
||||
$db->exec("
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
email VARCHAR(150) NOT NULL UNIQUE,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
");
|
||||
|
||||
$db->exec("
|
||||
CREATE TABLE IF NOT EXISTS webhook_logs (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
event_field VARCHAR(50) NOT NULL DEFAULT 'messages',
|
||||
from_number VARCHAR(30),
|
||||
contact_name VARCHAR(150),
|
||||
message_type VARCHAR(30),
|
||||
message_preview TEXT,
|
||||
raw_payload LONGTEXT,
|
||||
received_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_received_at (received_at),
|
||||
INDEX idx_from_number (from_number),
|
||||
INDEX idx_event_field (event_field)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
");
|
||||
|
||||
$db->exec("
|
||||
CREATE TABLE IF NOT EXISTS conversations (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
message_id VARCHAR(100) NOT NULL UNIQUE,
|
||||
phone_number VARCHAR(30) NOT NULL,
|
||||
contact_name VARCHAR(150),
|
||||
direction ENUM('inbound','outbound') DEFAULT 'inbound',
|
||||
message_type VARCHAR(30),
|
||||
content TEXT,
|
||||
media_id VARCHAR(150),
|
||||
timestamp INT UNSIGNED,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_conv_phone (phone_number),
|
||||
INDEX idx_conv_created (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
");
|
||||
|
||||
$db->exec("
|
||||
CREATE TABLE IF NOT EXISTS notifications (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
type VARCHAR(50) NOT NULL DEFAULT 'new_message',
|
||||
reference_id BIGINT,
|
||||
phone_number VARCHAR(30),
|
||||
message TEXT,
|
||||
is_read TINYINT(1) DEFAULT 0,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_notif_read (is_read),
|
||||
INDEX idx_notif_created (created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
");
|
||||
|
||||
$db->exec("
|
||||
CREATE TABLE IF NOT EXISTS media_queue (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
message_id VARCHAR(100) NOT NULL,
|
||||
media_id VARCHAR(150) NOT NULL,
|
||||
media_type VARCHAR(30),
|
||||
attempts TINYINT DEFAULT 0,
|
||||
processed TINYINT(1) DEFAULT 0,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_mq_processed (processed),
|
||||
INDEX idx_mq_message_id (message_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
");
|
||||
|
||||
// ─── Usuario admin por defecto ────────────────────────────────────────────────
|
||||
|
||||
$email = 'admin@palmas360.com';
|
||||
$password = 'Palmas360@Admin26';
|
||||
$hash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 12]);
|
||||
|
||||
$stmt = $db->prepare("INSERT IGNORE INTO users (name, email, password) VALUES (?, ?, ?)");
|
||||
$stmt->execute(['Lizandro', $email, $hash]);
|
||||
|
||||
echo "\n✅ Tablas creadas correctamente.\n";
|
||||
echo "👤 Usuario: {$email}\n";
|
||||
echo "🔑 Contraseña: {$password}\n";
|
||||
echo "⚠️ Cambia la contraseña después del primer login.\n\n";
|
||||
Reference in New Issue
Block a user