Introduzca datos de búsqueda en vivo en un agente de voz n8n agregando un nodo de solicitud HTTP que llame a la API de Scavio cada vez que el agente necesite información actual para responder la pregunta de una persona que llama. Los agentes de voz sin acceso a datos en vivo están limitados a su límite de capacitación y no pueden responder preguntas sobre precios, disponibilidad o eventos actuales. Este tutorial crea un flujo de trabajo n8n que intercepta las solicitudes de llamada de herramientas del agente, ejecuta una búsqueda y devuelve los resultados como contexto para la respuesta de voz.
Requisitos previos
- Instancia n8n en ejecución (autohospedada o en la nube)
- Una clave API de Scavio de scavio.dev
- Un flujo de trabajo de agente de voz n8n (Twilio, VAPI o similar)
- Familiaridad básica con el generador de flujo de trabajo n8n
Guia paso a paso
Paso 1: Agregue el nodo Solicitud HTTP para búsqueda
Cree un nodo de solicitud HTTP en su flujo de trabajo n8n que llame a la API de Scavio con la pregunta de la persona que llama.
// n8n HTTP Request node configuration:
// Method: POST
// URL: https://api.scavio.dev/api/v1/search
// Authentication: Header Auth
// Header Name: x-api-key
// Header Value: {{ $env.SCAVIO_API_KEY }}
// Body (JSON):
{
"platform": "google",
"query": "{{ $json.caller_query }}"
}Paso 2: Analizar los resultados de búsqueda para el contexto de voz
Agregue un nodo Código que extraiga los 3 fragmentos principales y los formatee como texto conciso apto para voz.
// n8n Code node (JavaScript):
const results = $input.first().json.organic_results || [];
const topResults = results.slice(0, 3).map(r => ({
title: r.title,
snippet: r.snippet || '',
url: r.link
}));
const voiceContext = topResults
.map(r => `${r.title}: ${r.snippet}`)
.join('. ');
return [{ json: { voiceContext, resultCount: topResults.length, results: topResults } }];Paso 3: Inyecte contexto en el mensaje del agente de voz
Pase el contexto de búsqueda al nodo del agente de IA como contexto adicional del sistema para generar la respuesta de voz.
// n8n AI Agent node system prompt:
// You are a helpful voice assistant. Use the following live web context
// to answer the caller's question accurately.
//
// Live context: {{ $json.voiceContext }}
//
// Rules:
// - Keep responses under 30 seconds of speech
// - Cite the source if quoting specific data
// - If the context does not answer the question, say so honestly
// Python equivalent for testing the search step:
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': 'current weather Austin TX'}).json()
snippets = [r.get('snippet', '') for r in data.get('organic_results', [])[:3]]
print(' '.join(snippets))Paso 4: Probar el flujo de un extremo a otro
Active una llamada de prueba y verifique que el agente de voz utilice datos de búsqueda en vivo en su respuesta.
# Test via n8n manual execution or webhook:
# 1. Set caller_query to a time-sensitive question
# 2. Run the workflow
# 3. Verify the search node returns results
# 4. Verify the voice context is injected
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def test_voice_search(query: str) -> str:
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': query}, timeout=10).json()
results = data.get('organic_results', [])[:3]
voice_text = '. '.join(r.get('snippet', '') for r in results if r.get('snippet'))
return voice_text[:500]
print(test_voice_search('current weather Austin TX'))Ejemplo en Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def voice_context(query):
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': query}).json()
snippets = [r.get('snippet', '') for r in data.get('organic_results', [])[:3]]
return '. '.join(s for s in snippets if s)
print(voice_context('current weather Austin TX'))Ejemplo en JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function voiceContext(query) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H, body: JSON.stringify({platform: 'google', query})
});
const results = (await r.json()).organic_results || [];
return results.slice(0, 3).map(r => r.snippet || '').filter(Boolean).join('. ');
}
voiceContext('current weather Austin TX').then(console.log);Salida esperada
An n8n workflow where the voice agent receives live search context from Scavio before generating each response, enabling real-time answers to caller questions.