api = $api; } /** * Cargar CSS y JS del widget en el frontend */ public function enqueue_assets() { if (is_admin()) return; $api_key = get_option('agentia_api_key', ''); $status = get_option('agentia_account_status', 'disconnected'); if (empty($api_key) || $status !== 'active') return; wp_enqueue_style('agentia-widget', AGENTIA_PLUGIN_URL . 'public/css/widget-style.css', [], AGENTIA_VERSION); wp_enqueue_script('agentia-widget', AGENTIA_PLUGIN_URL . 'public/js/widget-script.js', [], AGENTIA_VERSION, true); wp_localize_script('agentia-widget', 'agentiaWidget', [ 'ajaxUrl' => admin_url('admin-ajax.php'), 'apiKey' => $api_key, 'nonce' => wp_create_nonce('agentia_widget_nonce'), ]); } /** * Renderizar el HTML del widget en el footer */ public function render_widget() { $api_key = get_option('agentia_api_key', ''); $status = get_option('agentia_account_status', 'disconnected'); if (empty($api_key) || $status !== 'active') return; ?>
'No configurado']); } $data = $this->api->get_widget_config($api_key); wp_send_json_success($data); } /** * AJAX: Enviar mensaje desde el widget (proxy al backend/n8n) */ public function ajax_send_message() { check_ajax_referer('agentia_widget_nonce', 'nonce'); $message = isset($_POST['message']) ? sanitize_text_field(wp_unslash($_POST['message'])) : ''; $visitor_id = isset($_POST['visitorId']) ? sanitize_text_field(wp_unslash($_POST['visitorId'])) : ''; $visitor_name = isset($_POST['visitorName']) ? sanitize_text_field(wp_unslash($_POST['visitorName'])) : ''; $visitor_email = isset($_POST['visitorEmail']) ? sanitize_email(wp_unslash($_POST['visitorEmail'])) : ''; if (empty($message)) { wp_send_json_error(['message' => 'Mensaje vacío']); } $api_key = get_option('agentia_api_key', ''); if (empty($api_key)) { wp_send_json_error(['message' => 'Plugin no configurado']); } // Enviar al webhook de n8n $n8n_webhook_url = defined('AGENTIA_N8N_WEBHOOK_URL') ? AGENTIA_N8N_WEBHOOK_URL : 'https://n8ntest.soyagentia.com/webhook/wordpress-chat'; $payload = json_encode([ 'apiKey' => $api_key, 'idVisitor' => $visitor_id, 'visitorName' => $visitor_name, 'visitorEmail' => $visitor_email, 'message' => $message, ]); $response = wp_remote_post($n8n_webhook_url, [ 'timeout' => 60, 'headers' => ['Content-Type' => 'application/json'], 'body' => $payload, ]); if (is_wp_error($response)) { wp_send_json_error(['message' => 'Error de conexión']); } $code = wp_remote_retrieve_response_code($response); $data = json_decode(wp_remote_retrieve_body($response), true); if ($code !== 200 || !isset($data['reply'])) { wp_send_json_error(['message' => 'Error del servidor']); } wp_send_json_success(['reply' => $data['reply']]); } }