El manual completo

Instálalo y configúralo para cursar llamadas

Una guía en lenguaje claro para instalar KatoCall en un servidor y ponerlo a facturar llamadas reales. Sigue las partes en orden — no necesitas experiencia en telecomunicaciones.

Versión 1.0.0Para servidores Debian 12~30–45 min hasta la primera llamada

Empieza aquí

Cómo funciona KatoCall, en dos minutos

KatoCall es una centralita con un motor de facturación incorporado. Tus clientes hacen llamadas a través de ella; comprueba su saldo, elige la ruta de salida más barata, cronometra la llamada y la factura — automáticamente.

Tu cliente hace una llamada KatoCall comprueba el saldo, elige la ruta más barata, cronometra y factura Tu operador (troncal SIP) Cualquiera marca enruta Las llamadas entrantes funcionan igual a la inversa: un número (un DID) suena y se reenvía a un cliente.
Toda llamada — entrante o saliente — pasa por KatoCall, donde ocurre la facturación.

De dónde viene tu ganancia

Compras minutos a un operador a un precio y se los vendes a los clientes a uno mayor. KatoCall guarda ambos y conserva la diferencia en cada llamada.

Pagas al operador
$0.0090
tarifa de proveedor, por minuto
Cobras al cliente
$0.0150
tarifa de cliente, por minuto
Te quedas con
$0.0060
tu margen, automáticamente

Bueno saber: KatoCall no convierte divisas. Elige una moneda en Ajustes (el dólar estadounidense es la predeterminada) y úsala para comprar y vender, así cada margen es una simple resta.

Parte 1

Instálalo en un servidor

Esto se hace una sola vez, en un servidor nuevo. Si alguien técnico prepara el servidor por ti, entrégale esta parte.

Qué necesitas primero

Un servidorDebian 12 (Bookworm), 64 bits — recién instalado. Sirve cualquier VPS decente (OVH, Hetzner, DigitalOcean, Vultr).
Tamaño2 núcleos de CPU, 4 GB de RAM, 20 GB de disco. 2 GB de RAM es el mínimo.
Una IP públicaEl servidor necesita su propia dirección en internet — te la da tu proveedor.
Acceso al servidorLa contraseña de root, o un usuario con sudo.
De tu operadorUna troncal SIP (su host, y una IP autorizada o un usuario/contraseña), más los números (DID) que tengas.
Un nombre de dominio (opcional)Solo si quieres el candado https. Puedes empezar sin uno y añadirlo después.

Haz la instalación

Copia katocall-1.0.0.tar.gz en el servidor y ejecuta estos comandos de uno en uno. Cada uno muestra lo que hace y se detiene con un mensaje claro si falta algo.

  1. Descomprime y revisa el servidor

    El primer comando no cambia nada — confirma que el servidor está listo y te avisa si falta algo.

    root@your-server
    # unpack the package
    tar -xzf katocall-1.0.0.tar.gz
    cd katocall-1.0.0
    
    # revisa el servidor (seguro — no cambia nada)
    sudo bash install/00-preflight.sh
  2. Ejecuta los scripts de instalación en orden

    Ejecútalos uno a uno. El número 01 compila el motor telefónico y tarda 10–20 minutos; el resto son rápidos.

    root@your-server
    sudo bash install/01-install-asterisk.sh   # el motor telefónico (10–20 min)
    sudo bash install/02-install-base-stack.sh
    sudo bash install/03-setup-admin-panel.sh
    sudo bash install/04-configure-ami.sh
    sudo bash install/05-production-hardening.sh
    sudo bash install/06-configure-did-forwarding.sh
    sudo bash install/07-configure-fail2ban.sh
    sudo bash install/08-configure-nat.sh
    sudo bash install/09-configure-outbound.sh
    sudo bash install/11-configure-backups.sh
    sudo bash install/12-configure-dialer.sh   # solo si quieres el marcador

    Del 01 al 09 son obligatorios. El paso 12 es solo para el marcador — omítelo y todo lo demás funciona igual.

  3. Confirma que todo está sano

    Ejecuta unas 65 comprobaciones — cada servicio, el firewall, los respaldos, la seguridad — y nombra qué corregir en lo que falle.

    root@your-server
    sudo bash install/verify.sh
    
    PASS 66   WARN 1   FAIL 0
  4. Inicia sesión por primera vez

    Abre la dirección del servidor en un navegador e inicia sesión. Te obliga a cambiar la contraseña de inmediato — nada funciona hasta que la cambias.

    • Dirección: http://your-server-address/
    • Usuario: admin
    • Contraseña (debes cambiarla de inmediato): Katocall

Antes de llamadas reales: activa HTTPS. Hasta que lo hagas, el panel usa http sin cifrar y tu inicio de sesión viaja por internet sin protección. Cuando un dominio apunte al servidor, ejecuta:

sudo bash install/10-configure-tls.sh panel.yourcompany.com you@yourcompany.com

Parte 2

Configúralo para cursar llamadas

Ya estás en el panel. Crea estas seis cosas en este orden — cada una usa la anterior. Todo está en el menú de la izquierda.

1SuppliersA quién le compras minutos
2Rate CardsTus precios de compra y venta
3TrunksLa línea con tu operador
4Routing GroupsQué línea para cada llamada
5AccountsTus clientes
6DIDsNúmeros entrantes
  1. Suppliers — a quién le compras minutos

    Un proveedor (Supplier) es un operador al que le compras minutos. Empieza aquí porque todo lo demás apunta a él. Abre Suppliers → New Supplier y ponle un nombre.

    Suppliers+ New Supplier
    e.g. IDT Gold
    USD — $ US Dollar
    Account manager, contract terms…
    Suppliers → New Supplier
  2. Rate Cards — tus precios de compra y venta

    Una tarifa (Rate Card) es una lista de precios, una línea por destino (un prefijo como 1 para EE. UU. o 44 para el Reino Unido). Crea dos tipos:

    • Provider Rates — lo que tu proveedor te cobra a ti.
    • Customer Rates — lo que cobras a los clientes (más alto — esa diferencia es tu ganancia).

    No teclees cientos de prefijos: abre la tarjeta y pulsa Import CSV para cargar el fichero de precios de tu operador de una vez.

    USA Wholesale — ProviderImport CSV
    DestinationPrefixPer min
    United States1$0.0090
    United Kingdom44$0.0110
    Mexico Mobile521$0.0180
    Rates → Import CSV

    Bueno saber: Las tarifas se guardan con 4 decimales; un fichero con 5 decimales se redondea al importar.

  3. Trunks — la línea real con tu operador

    Una troncal (Trunk) es la conexión en vivo con un proveedor. Abre Trunks → New Trunk. Importan dos cosas:

    • Direction — Outbound (saliente), Inbound (entrante) o Both (ambas).
    • Authentication — IP-based (confían en la dirección de tu servidor) o Username/Password (te dieron datos de acceso SIP).

    Tras guardar, usa Test Call para comprobar que marca antes de dirigir clientes hacia ella.

    New TrunkSave
    IDT-GOLD
    Outbound
    IP-based
    sip.idtgold.com
    30
    Trunks → New Trunk

    El nombre de una troncal no puede llevar espacios — usa IDT-GOLD, no IDT GOLD.

  4. Routing Groups — qué línea para cada llamada

    Un grupo de enrutamiento dice: para este tipo de número, prueba estas troncales, en este orden. Dos ajustes:

    • Priority — el más bajo se prueba primero. Pon tu operador más barato en prioridad 1.
    • Weight — reparte el tráfico entre troncales con la misma prioridad.

    Si la primera troncal está ocupada o falla, KatoCall pasa a la siguiente. Usa Preview para escribir un número y ver qué troncal usaría.

    Standard LCR+ Add Route
    TrunkPriorityWeight
    IDT-GOLD1 first100
    Backup-Carrier2100
    Routing Groups → Add Route
  5. Accounts — tus clientes

    Una cuenta (Account) es un cliente. Abre Accounts → New Account. Las decisiones importantes:

    • Billing Type — Prepaid (cargan saldo; las llamadas paran en cero) o Postpaid (se factura después).
    • Rate Card — la lista de precios de cliente del paso 2.
    • Routing Group — cómo salen sus llamadas, del paso 4.
    • Cómo se conectan — una IP autorizada, o un usuario y contraseña para su teléfono/PBX.
    New AccountSave
    Acme Telecom
    Prepaid
    $250.00
    USA Retail
    Standard LCR
    Accounts → New Account

    Bueno saber: Toda cuenta que hace llamadas salientes necesita una Rate Card de cliente que cubra los prefijos que vendes — de lo contrario esas llamadas se rechazan (nunca se facturan a cero).

  6. DIDs — números que suenan hacia dentro

    Un DID es un número al que la gente llama para contactar a uno de tus clientes. Abre la cuenta, ve a DIDs → Add DID, escribe el número y a dónde se reenvía. (Guarda la cuenta primero.)

    Acme Telecom · DIDs+ Add DID
    DID NumberForwards To
    +1 305 555 0100Acme main lineactive
    Accounts → DIDs → Add DID

Cada campo del panel tiene un pequeño ? al lado que explica para qué sirve, en los diez idiomas. Settings → Network envía tu configuración al motor telefónico tras cambios importantes.

Parte 3

Ejecuta una campaña del marcador

El marcador llama a una lista de números, reproduce un mensaje grabado y deja que las personas pulsen una tecla para conectarse, pedir una devolución de llamada o darse de baja. Antes hay que hacer el paso 12 de la instalación.

Ten claro qué es: es un marcador de potencia (power dialer), no predictivo. Sin detección de contestador (un buzón de voz cuenta como contestado) y sin ritmo automático — tú fijas un número fijo de llamadas simultáneas. Funciona en un servidor a la vez.

  1. Crea la campaña

    Abre Dialer Campaigns → New Campaign. Elige la cuenta a la que factura, ponle nombre y ajusta el ritmo: Max Concurrent Calls, Max Attempts y el Retry gap.

    New CampaignSave
    Acme Telecom
    10
    3
    Upload a .wav / .mp3…
    Dialer Campaigns → New Campaign
  2. Añade tu mensaje y el menú

    Sube el Prerecorded Message que suena al contestar. Luego arma el IVR Menu — qué hace cada tecla:

    • Pulsar 1 → transferir a un agente
    • Pulsar 2 → pedir una devolución de llamada
    • Pulsar 9 → añadir a Do-Not-Call (no se vuelve a marcar)
  3. Sube tus contactos

    En la sección Contacts de la campaña, pulsa Upload CSV — un fichero sencillo de números de teléfono.

  4. Pulsa Start — y lee los resultados

    Pulsa Start y empieza a marcar en segundos; Pause lo detiene igual de rápido. Al terminar, Download Results da un fichero con lo que pasó con cada número.

    Spring PromoStart
    Phone NumberAttemptsResult
    +1 305 555 00001answered
    +1 305 555 00012no answer
    +1 305 555 00021transferred
    La campaña rellena un resultado para cada número.

Parte 4

Operación diaria

Cuatro comandos cubren casi todo lo que harás en el servidor.

root@your-server
sudo bash install/verify.sh            # ¿está todo sano?
sudo /usr/local/sbin/katocall-backup    # haz un respaldo ahora
sudo bash install/upgrade.sh           # aplica una versión más nueva
sudo bash install/uninstall.sh         # quítalo (conserva tus datos)

Tus respaldos están en el mismo disco que protegen. Cópialos a otro sitio de forma periódica, o un fallo de disco se lleva los datos y su único respaldo juntos.

Antes de fiarte de un informe de ingresos, puedes probar que las cuentas cuadran al céntimo:

sudo -u softswitch admin/backend/venv/bin/python admin/backend/manage.py verify_ledger

Parte 5

Cuando algo falla

«No se pudo conectar con el servidor» al iniciar sesión.
Puede que un servicio se esté reiniciando. Espera y recarga. Si persiste, ejecuta install/verify.sh — señala el servicio exacto que está caído.
Una llamada no conecta.
Revisa tres cosas en orden: que la Account tenga saldo y Rate Card; que el Routing Group tenga una troncal para ese destino (usa Preview); que el Test Call de la troncal funcione.
Me bloquearon tras escribir mal la contraseña.
KatoCall bloquea una dirección tras varios fallos, a propósito. Espera a que expire el bloqueo, o quítalo desde la página IP Bans desde otro dispositivo.
Mi marcador dice «Running» pero no marca nada.
Probablemente se omitió el paso 12 de la instalación. Ejecuta install/12-configure-dialer.sh y luego install/verify.sh.
La columna de margen está vacía.
La moneda del cliente y la de la troncal difieren. KatoCall no convierte divisas — compra y vende en una sola moneda y el margen aparece.

Sea cual sea el problema, sudo bash install/verify.sh es lo primero que hay que ejecutar. Comprueba ~65 cosas y nombra el script a re-ejecutar.