Skip to main content

JavaScript / TypeScript

Instalación

npm install @horneross/sdk

Configuración

import { Horneross } from '@horneross/sdk';

const client = new Horneross({
  apiKey: process.env.HORNEROSS_API_KEY,
});

Chat básico

const response = await client.agents.chat({
  agentId: 'agent_abc123',
  query: '¿Cuáles son los horarios?',
  visitorId: 'user_123',
});

console.log(response.answer);

Streaming

const stream = await client.agents.chatStream({
  agentId: 'agent_abc123',
  query: 'Contame sobre tus productos',
});

for await (const event of stream) {
  if (event.type === 'token') {
    process.stdout.write(event.token);
  }
}

Conversaciones

// Listar
const conversations = await client.conversations.list({
  agentId: 'agent_abc123',
  status: 'open',
});

// Obtener mensajes
const messages = await client.conversations.getMessages('conv_abc123');

// Cambiar estado
await client.conversations.updateStatus('conv_abc123', 'resolved');

Manejo de errores

import { RateLimitError, AuthError } from '@horneross/sdk';

try {
  const response = await client.agents.chat({ ... });
} catch (error) {
  if (error instanceof RateLimitError) {
    await sleep(error.retryAfter * 1000);
  }
}

Python

Instalación

pip install horneross

Configuración

from horneross import Horneross

client = Horneross(api_key="TU_API_KEY")
O usando variable de entorno:
export HORNEROSS_API_KEY="tu_api_key"
client = Horneross()  # Usa HORNEROSS_API_KEY automáticamente

Chat básico

response = client.agents.chat(
    agent_id="agent_abc123",
    query="¿Cuáles son los horarios?",
    visitor_id="user_123"
)

print(response.answer)

Streaming

stream = client.agents.chat_stream(
    agent_id="agent_abc123",
    query="Contame sobre tus productos"
)

for event in stream:
    if event.type == "token":
        print(event.token, end="", flush=True)

Async

import asyncio
from horneross import AsyncHorneross

async def main():
    client = AsyncHorneross()
    response = await client.agents.chat(
        agent_id="agent_abc123",
        query="Hola"
    )
    print(response.answer)

asyncio.run(main())

Conversaciones

# Listar
conversations = client.conversations.list(
    agent_id="agent_abc123",
    status="open"
)

# Obtener mensajes
messages = client.conversations.get_messages("conv_abc123")

# Cambiar estado
client.conversations.update_status("conv_abc123", "resolved")

Manejo de errores

from horneross.exceptions import RateLimitError, AuthenticationError

try:
    response = client.agents.chat(...)
except RateLimitError as e:
    time.sleep(e.retry_after)
except AuthenticationError:
    print("API key inválida")

Configuración avanzada

Ambos SDKs soportan:
// JavaScript
const client = new Horneross({
  apiKey: 'API_KEY',
  timeout: 30000,      // Timeout en ms
  retries: 3,          // Reintentos automáticos
});
# Python
client = Horneross(
    api_key="API_KEY",
    timeout=30.0,      # Timeout en segundos
    max_retries=3,     # Reintentos automáticos
)