Asistente Camilo






Asistente de Camilo: Tu Guía Personal
body { font-family: ‘Inter’, sans-serif; background-color: #F8F9FA; } .gradient-text { background: linear-gradient(90deg, #FF4E50, #FC913A); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }


Mi compromiso contigo: Te presento a mi asistente

He puesto a tu disposición a mi asistente personal. Él está aquí para orientarte, aclarar todas tus dudas y ayudarte a entender por qué esta oportunidad podría cambiar tu vida.

Empecemos nuestra conversación

Para que mi asistente te pueda ayudar de verdad, necesito tu sinceridad. **Cuéntale tu situación actual y tus metas**, y te guiará para encontrar una solución real a tus circunstancias.

Foto de un hombre de negocios que es el asistente.

«El interés compuesto es la octava maravilla del mundo.»

– Albert Einstein (adaptado a la era de la IA)

Evolución vs. Extinción

const generateSloganBtn = document.getElementById(‘generateSloganBtn’); const playSloganBtn = document.getElementById(‘playSloganBtn’); const promptInput = document.getElementById(‘promptInput’); const sloganOutput = document.getElementById(‘sloganOutput’); const sloganOutputContainer = document.getElementById(‘sloganOutputContainer’); const loadingIndicator = document.getElementById(‘loadingIndicator’); let currentSlogan = »;

generateSloganBtn.addEventListener(‘click’, async () => { const userPrompt = promptInput.value || ‘Hola, vi tu anuncio en redes sociales y me gustaría saber más.’; sloganOutputContainer.classList.add(‘hidden’); sloganOutput.textContent = »; loadingIndicator.classList.remove(‘hidden’); playSloganBtn.disabled = true;

const prompt = ` Hola, soy el asistente de Camilo. Eres un asistente conversacional diseñado para un distribuidor de multinivel. Tu rol es guiar a un prospecto a través de las fases de reclutamiento: Bienvenida, Identificación de la relación, Canal, Nivel de conocimiento, Motivación, Urgencia, Encaje de valor, Presentación, Objeciones y Cierre. Tu objetivo es obtener la información necesaria para avanzar en cada fase, de acuerdo con los principios de libros de Network Marketing como «Go Pro» de Eric Worre, «El Negocio del Siglo XXI» de Robert Kiyosaki y «Habilidades para Networkers» de Eric Worre. Aplica los siguientes conocimientos: – **Calificación del prospecto (Go Pro):** Tu objetivo no es «vender», sino calificar al prospecto. Haz preguntas para determinar su interés, si están listos para tomar acción y si encajan con el equipo. – **Enfoque en la educación (El Negocio del Siglo XXI):** Presenta el negocio como una forma de educación financiera y crecimiento personal, no solo como una oportunidad de venta. – **Creación de relaciones (Habilidades para Networkers):** Inicia la conversación de forma amigable y natural para construir confianza antes de entrar en detalles del negocio. – **Redirección educada:** Si el prospecto se desvía de la conversación, redirígelo de manera educada y profesional hacia el objetivo principal, que es completar el proceso de reclutamiento. El prospecto te ha enviado el siguiente mensaje: «${userPrompt}». Actúa como el asistente y responde de acuerdo a la fase en la que te encuentres, manteniendo un tono amigable y profesional. `;

try { let chatHistory = []; chatHistory.push({ role: «user», parts: [{ text: prompt }] }); const payload = { contents: chatHistory }; const apiKey = «TU_API_KEY_AQUÍ»; // ¡REEMPLAZA ESTA CLAVE CON TU CLAVE REAL! const apiUrl = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key=${apiKey}`;

let response; let result; let success = false; let retries = 0; const maxRetries = 5; const baseDelay = 1000;

while (!success && retries setTimeout(res, delay)); } }

if (result && result.candidates && result.candidates.length > 0 && result.candidates[0].content && result.candidates[0].content.parts && result.candidates[0].content.parts.length > 0) { currentSlogan = result.candidates[0].content.parts[0].text; sloganOutput.textContent = currentSlogan; sloganOutputContainer.classList.remove(‘hidden’); playSloganBtn.disabled = false; } else { sloganOutput.textContent = ‘Error: No se pudo generar la sugerencia. Intenta de nuevo.’; sloganOutputContainer.classList.remove(‘hidden’); } } catch (error) { sloganOutput.textContent = ‘Error en la conexión. Intenta de nuevo.’; sloganOutputContainer.classList.remove(‘hidden’); } finally { loadingIndicator.classList.add(‘hidden’); } });

playSloganBtn.addEventListener(‘click’, async () => { if (!currentSlogan) return; playSloganBtn.disabled = true; playSloganBtn.textContent = ‘Cargando audio…’;

const payload = { contents: [{ parts: [{ text: `Di con un tono amigable y profesional: ${currentSlogan}` }] }], generationConfig: { responseModalities: [«AUDIO»], speechConfig: { voiceConfig: { prebuiltVoiceConfig: { voiceName: «Algenib» } } } }, model: «gemini-1.5-flash-preview-tts» }; const apiKey = «TU_API_KEY_AQUÍ»; // ¡REEMPLAZA ESTA CLAVE CON TU CLAVE REAL! const apiUrl = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-preview-tts:generateContent?key=${apiKey}`;

try { let response; let result; let success = false; let retries = 0; const maxRetries = 5; const baseDelay = 1000;

while (!success && retries setTimeout(res, delay)); } }

const part = result?.candidates?.[0]?.content?.parts?.[0]; const audioData = part?.inlineData?.data; const mimeType = part?.inlineData?.mimeType;

if (audioData && mimeType && mimeType.startsWith(«audio/»)) { const sampleRate = parseInt(mimeType.match(/rate=(\d+)/)[1], 10); const pcmData = base64ToArrayBuffer(audioData); const pcm16 = new Int16Array(pcmData); const wavBlob = pcmToWav(pcm16, sampleRate); const audioUrl = URL.createObjectURL(wavBlob); const audio = new Audio(audioUrl); audio.play(); } else { console.error(‘Error: No se recibió audio válido.’); } } catch (error) { console.error(‘Error en la conexión con la API de TTS:’, error); } finally { playSloganBtn.disabled = false; playSloganBtn.textContent = ‘🔊 Reproducir’; } });

function base64ToArrayBuffer(base64) { const binaryString = window.atob(base64); const len = binaryString.length; const bytes = new Uint8Array(len); for (let i = 0; i < len; i++) { bytes[i] = binaryString.charCodeAt(i); } return bytes.buffer; } function pcmToWav(pcmData, sampleRate) { const pcm16 = pcmData; const buffer = new ArrayBuffer(44 + pcm16.length * 2); const view = new DataView(buffer); writeString(view, 0, 'RIFF'); view.setUint32(4, 36 + pcm16.length * 2, true); writeString(view, 8, 'WAVE'); writeString(view, 12, 'fmt '); view.setUint32(16, 16, true); view.setUint16(20, 1, true); view.setUint16(22, 1, true); view.setUint32(24, sampleRate, true); view.setUint32(28, sampleRate * 2, true); view.setUint16(32, 2, true); view.setUint16(34, 16, true); writeString(view, 36, 'data'); view.setUint32(40, pcm16.length * 2, true); let offset = 44; for (let i = 0; i < pcm16.length; i++, offset += 2) { view.setInt16(offset, pcm16[i], true); } return new Blob([view], { type: 'audio/wav' }); } function writeString(view, offset, string) { for (let i = 0; i < string.length; i++) { view.setUint8(offset + i, string.charCodeAt(i)); } }

Teléfono

Asistente Camilo

Email