Centro de ayuda

Guías paso a paso sobre servidores, redes y tu cuenta.

Casos de uso y soluciones

Crea un bot de atención al cliente con IA para LINE o KakaoTalk en un VPS en Tokio o Seúl

La forma más práctica de crear un bot de atención al cliente con IA para LINE o KakaoTalk es alojar tú mismo el webhook en un VPS en Tokio (Tokyo, Japan) para LINE o en Seúl (Seoul, South Korea) para KakaoTalk, y que llame a una API de LLM como OpenAI, Claude o Gemini para redactar las respuestas. JUSTG ofrece VPS en la nube en Tokio y Seúl con IP nativas locales desde 19,99 USD/mes, con 1 IPv4 + IPv6 gratuita y despliegue automático tras el pago: en un solo servidor caben el endpoint HTTPS, la herramienta de automatización y la base de datos de conversaciones. Esta guía muestra dos montajes, n8n autoalojado (low-code) y un webhook pequeño en Python, además de HTTPS, latencia, límites de uso, registros locales según la APPI japonesa y la PIPA coreana, y traspaso a un agente humano.

Datos clave
  • Ubicaciones: Tokio, Japón (cerca de los usuarios de LINE) y Seúl, Corea del Sur, sobre la red de KT (cerca de los usuarios de KakaoTalk).
  • Tipo de IP: IPv4 nativa japonesa o coreana + IPv6 gratuita; útil como IP de origen fija para listas blancas.
  • API de IA: OpenAI, Claude y Gemini están disponibles oficialmente en Japón y Corea del Sur; JUSTG probó sus IP de Tokio y Seúl con las tres en octubre de 2026.
  • Precio: JUSTG Tokyo Cloud VPS y JUSTG Seoul Cloud VPS desde 19,99 USD/mes; planes de hasta 7 núcleos / 24 GB por 169,99 USD/mes.
  • Moscú (Moscow, Russia) no es adecuado para bots que llamen a estas API de IA (no disponibles en Rusia).

Cómo funciona un bot con IA para LINE o KakaoTalk

La plataforma de mensajería envía cada mensaje del usuario a tu webhook HTTPS, tu servidor pide la respuesta al LLM y la devuelve mediante la API de la plataforma.

  1. Un cliente escribe a tu LINE Official Account o a tu Kakao Talk Channel.
  2. LINE (Messaging API) o Kakao (skill de Kakao i Open Builder) envía un POST con JSON a tu URL, por ejemplo https://api.example.com/line.
  3. Tu servidor verifica la petición, guarda el mensaje, añade contexto de tus FAQ o productos y llama a la API del LLM.
  4. La respuesta vuelve: LINE usa una API de respuesta con un reply token de vida corta; Kakao espera la respuesta en la propia respuesta HTTP.
  5. Palabras clave o baja confianza activan el traspaso a un agente humano.
AspectoLINE (Japón)KakaoTalk (Corea)
Plataforma del botLINE Messaging API, LINE Official AccountServidor de skills de Kakao i Open Builder, Kakao Talk Channel
Cómo respondesDevuelves HTTP 200 al instante y luego llamas a la API de respuesta con el reply tokenDevuelves la respuesta en la respuesta del webhook (JSON de skill, versión 2.0)
Presión de tiempoEl reply token caduca pronto; responde en cuanto termine el LLMUnos 5 segundos por petición; las respuestas largas requieren la opción de callback de Kakao cuando esté disponible
VerificaciónFirma HMAC-SHA256 en X-Line-SignatureRestringir la ruta, cabecera o token secreto, comprobar el ID del bot
Ubicación JUSTG recomendadaJUSTG Tokyo Cloud VPSJUSTG Seoul Cloud VPS

Por qué alojar el bot en Tokio o Seúl

Alojarlo junto a la plataforma y a sus usuarios acorta los viajes de ida y vuelta, y ambos países son regiones admitidas por las principales API de LLM.

  • Presupuesto de latencia. La llamada al LLM suele tardar 1-4 segundos. Ahorrar 100-200 ms en cada salto hacia los servidores de LINE o Kakao importa, sobre todo con el límite de unos 5 segundos de Kakao.
  • Disponibilidad de las API de IA. OpenAI, Anthropic y Google admiten Japón y Corea del Sur. Moscú no es adecuado para este bot porque estas API no están disponibles en Rusia. Los proveedores pueden cambiar sus políticas y las verificaciones de cuenta y pago siguen aplicando.
  • IP nativa fija. Tu VPS tiene una IP japonesa o coreana estable que puedes añadir a listas blancas de tu CRM, sistema de pedidos o cortafuegos de base de datos.
  • Residencia de datos. Los registros quedan en un servidor del mismo país que tus clientes, lo que simplifica los avisos de privacidad.

Opción A: n8n autoalojado con Docker Compose

n8n es buena opción cuando personas no desarrolladoras deben editar el flujo, los prompts y las integraciones en un editor visual.

En un JUSTG Tokyo o Seoul Cloud VPS con Docker instalado, apunta bot.example.com a la IP del servidor (por ejemplo 203.0.113.20) y ejecuta:

mkdir -p /opt/n8n && cd /opt/n8n
echo "N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)" > .env && chmod 600 .env
cat > docker-compose.yml <<'YML'
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n:latest
    env_file: .env
    environment:
      - N8N_HOST=bot.example.com
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://bot.example.com/
      - GENERIC_TIMEZONE=Asia/Tokyo
      - TZ=Asia/Tokyo
    ports: ["127.0.0.1:5678:5678"]
    volumes: ["n8n_data:/home/node/.n8n"]
    restart: unless-stopped
volumes:
  n8n_data:
YML
docker compose up -d

Después publica n8n y la app de Python (opción B) detrás de Caddy, que emite certificados de Let's Encrypt automáticamente:

apt install -y caddy
cat > /etc/caddy/Caddyfile <<'CFG'
bot.example.com {
    reverse_proxy 127.0.0.1:5678
}
api.example.com {
    reverse_proxy 127.0.0.1:8000
}
CFG
systemctl reload caddy
ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp && ufw enable

En el editor de n8n crea este flujo: nodo Webhook (POST, ruta line) → nodo Code para verificar la firma de LINE → nodo IF para palabras de traspaso → nodo de chat OpenAI o Anthropic con tu prompt de sistema → nodo HTTP Request a https://api.line.me/v2/bot/message/reply. Configura el webhook para responder de inmediato y que LINE reciba HTTP 200 al instante. Para Kakao, usa "Respond to Webhook" con el JSON de skill al final del flujo. Guarda las claves solo en las Credentials de n8n, cifradas con N8N_ENCRYPTION_KEY.

Opción B: esqueleto de webhook en Python

Una app FastAPI de unas 70 líneas es más fácil de versionar y probar, y atiende tanto LINE como Kakao.

# app.py - pip install fastapi uvicorn httpx openai
import base64, hashlib, hmac, os, sqlite3, time
import httpx
from fastapi import FastAPI, Request, BackgroundTasks, HTTPException
from openai import OpenAI

LINE_SECRET = os.environ["LINE_CHANNEL_SECRET"].encode()
LINE_TOKEN = os.environ["LINE_CHANNEL_TOKEN"]
llm = OpenAI()  # reads OPENAI_API_KEY
db = sqlite3.connect("/data/chat.db", check_same_thread=False)
db.execute("CREATE TABLE IF NOT EXISTS log(ts, channel, user_id, role, text)")
SYSTEM = "You are the support assistant of Example Shop. Answer briefly in the user's language. If unsure, say a staff member will follow up."
HANDOFF = ("担当者", "オペレーター", "상담원", "human", "staff")
app = FastAPI()

def log(ch, uid, role, text):
    db.execute("INSERT INTO log VALUES (?,?,?,?,?)", (time.time(), ch, uid, role, text)); db.commit()

def answer(text):
    r = llm.chat.completions.create(model="gpt-4o-mini", max_tokens=400,
        messages=[{"role": "system", "content": SYSTEM}, {"role": "user", "content": text}])
    return r.choices[0].message.content

def handle_line(event):
    uid, text = event["source"]["userId"], event["message"]["text"]
    log("line", uid, "user", text)
    if any(k in text for k in HANDOFF):
        reply = "スタッフにおつなぎします。少々お待ちください。"
    else:
        reply = answer(text)
    log("line", uid, "bot", reply)
    httpx.post("https://api.line.me/v2/bot/message/reply", timeout=10,
        headers={"Authorization": f"Bearer {LINE_TOKEN}"},
        json={"replyToken": event["replyToken"], "messages": [{"type": "text", "text": reply[:4900]}]})

@app.post("/line")
async def line_webhook(req: Request, bg: BackgroundTasks):
    body = await req.body()
    sig = base64.b64encode(hmac.new(LINE_SECRET, body, hashlib.sha256).digest()).decode()
    if not hmac.compare_digest(sig, req.headers.get("x-line-signature", "")):
        raise HTTPException(403)
    for ev in (await req.json()).get("events", []):
        if ev.get("type") == "message" and ev["message"].get("type") == "text":
            bg.add_task(handle_line, ev)   # return 200 at once, work in background
    return "OK"

@app.post("/kakao")
async def kakao_skill(req: Request):
    data = await req.json()
    uid = data["userRequest"]["user"]["id"]; text = data["userRequest"]["utterance"]
    log("kakao", uid, "user", text)
    reply = answer(text)          # must finish within Kakao's ~5 s skill timeout
    log("kakao", uid, "bot", reply)
    return {"version": "2.0", "template": {"outputs": [{"simpleText": {"text": reply[:1000]}}]}}

Ejecútala como servicio systemd escuchando solo en localhost:

mkdir -p /data && chmod 700 /data
python3 -m venv /opt/bot/venv && /opt/bot/venv/bin/pip install fastapi uvicorn httpx openai
# put LINE_CHANNEL_SECRET, LINE_CHANNEL_TOKEN, OPENAI_API_KEY in /opt/bot/.env (chmod 600)
cat > /etc/systemd/system/bot.service <<'UNIT'
[Unit]
Description=LINE/Kakao AI bot
After=network-online.target
[Service]
WorkingDirectory=/opt/bot
EnvironmentFile=/opt/bot/.env
ExecStart=/opt/bot/venv/bin/uvicorn app:app --host 127.0.0.1 --port 8000
Restart=always
[Install]
WantedBy=multi-user.target
UNIT
systemctl daemon-reload && systemctl enable --now bot

En la consola de LINE Developers fija la URL del webhook en https://api.example.com/line y pulsa Verify; en Kakao i Open Builder registra https://api.example.com/kakao como skill y vincúlalo a tu bloque de respaldo. Comprueba que las firmas inválidas se rechazan rápido:

curl -s -o /dev/null -w "%{http_code} %{time_total}s\n" -X POST https://api.example.com/line \
  -H "x-line-signature: invalid" -d '{"events":[]}'
# expected: 403 and a time well under 1 s
journalctl -u bot -f

HTTPS, latencia y límites de uso

Ambas plataformas exigen un endpoint HTTPS público con certificado válido y penalizan las respuestas lentas.

  • Certificados: usa un dominio real y un certificado de confianza (Let's Encrypt con Caddy). No se aceptan certificados autofirmados ni IP desnudas como URL de webhook.
  • Responde rápido: confirma los webhooks de LINE al instante y haz el trabajo del LLM en segundo plano. Para Kakao, usa un modelo rápido, limita max_tokens y acorta los prompts.
  • Límites de la mensajería: LINE Messaging API tiene límites de frecuencia por endpoint, y los mensajes push cuentan para la cuota mensual del plan, mientras que las respuestas a mensajes de usuarios no. Prioriza reply frente a push.
  • Límites del LLM: ante un HTTP 429, envía un texto de respaldo amable y reintenta con espera exponencial; fija presupuestos y alertas en el proveedor.
  • Antiabuso: limita los mensajes por usuario y minuto y la longitud de la entrada antes de llamar al LLM.

Registros de conversación en local: bases de APPI y PIPA

Los registros de chat contienen datos personales: guárdalos en tu propio servidor, solo el tiempo necesario, e informa a los clientes de cómo usas la IA.

  • Japón, APPI (Ley de Protección de la Información Personal): indica la finalidad de uso, protege los datos y ten en cuenta que enviar datos personales a un proveedor de otro país (por ejemplo, una API de LLM en EE. UU.) conlleva requisitos adicionales de información o consentimiento.
  • Corea, PIPA (Ley de Protección de la Información Personal): recoge solo lo necesario con aviso o consentimiento claro, informa de transferencias internacionales y encargados del tratamiento, y borra los datos al vencer el plazo de conservación.
  • Enmascara teléfonos, correos y números de pedido antes de enviar texto al LLM cuando sea posible.
  • Cifra las copias de seguridad, restringe SSH y no expongas SQLite o Postgres a internet.
  • Esto es información general, no asesoramiento legal; consulta a un abogado local para tu caso.

Un traspaso a humano que los clientes agradecen

Un buen bot sabe cuándo parar: a petición del cliente, ante quejas y en todo lo que implique dinero o cuentas debe intervenir una persona.

  • Disparadores: palabras como "担当者", "オペレーター", "상담원" o "agente", varias respuestas fallidas seguidas, o temas de reembolso y pago.
  • Marca al usuario como "modo humano" en tu base de datos para que el bot deje de responder y avisa al equipo por correo, Slack o LINE WORKS.
  • El equipo responde desde el chat de LINE Official Account Manager o el chat de consulta del canal de Kakao, y después devuelve al usuario al modo bot.
  • Indica en el mensaje de traspaso el horario de atención y el tiempo de espera estimado.

Qué plan de JUSTG encaja

Un bot de soporte apenas usa CPU; la RAM depende de si ejecutas n8n y una base de datos junto a él.

MontajeRAM sugeridaUbicación
Webhook Python + SQLite, un canal1-2 GBTokio para LINE, Seúl para Kakao
n8n + webhook + Postgres2-4 GBEl país de la mayoría de clientes
LINE y Kakao a la vez, RAG sobre documentación de productos4-8 GBUn VPS por país, o Tokio para ambos

Empieza con un JUSTG Tokyo Cloud VPS para LINE en Japón o un JUSTG Seoul Cloud VPS para KakaoTalk en Corea; ambos usan rutas optimizadas para Asia y puedes añadir IP adicionales más tarde desde las opciones de Upgrade de la página del servicio. Hay configuraciones personalizadas bajo pedido (más CPU, RAM, disco, ancho de banda o IP): contacta con ventas mediante un ticket para un presupuesto. Más escenarios en nuestra página de VPS para IA.

Preguntas frecuentes

¿Cuál es la mejor ubicación de servidor para un chatbot de LINE?

Tokio, porque la base principal de usuarios de LINE está en Japón y las principales API de LLM están disponibles allí oficialmente. JUSTG Tokyo Cloud VPS ofrece una IP nativa japonesa desde 19,99 USD/mes, suficiente para un webhook más n8n.

¿Puede un chatbot de KakaoTalk usar ChatGPT o Claude?

Sí. Un servidor de skills de Kakao i Open Builder puede llamar a la API de OpenAI, Claude o Gemini y devolver la respuesta dentro del límite de unos 5 segundos de Kakao. Alojarlo en un JUSTG Seoul Cloud VPS acorta el trayecto hasta Kakao.

¿Un webhook de LINE necesita HTTPS?

Sí. LINE solo acepta URL de webhook HTTPS con un certificado válido. Usa un dominio y un certificado gratuito de Let's Encrypt con Caddy o Nginx en tu VPS.

¿Puedo alojar el bot en un VPS en Moscú?

No si llama a OpenAI, Claude o Gemini, porque estas API no están disponibles en Rusia. Usa JUSTG Tokio o Seúl para el bot; JUSTG Moscow Cloud VPS encaja mejor en cargas orientadas al mercado ruso que no dependen de estas API.

Lanza tu bot

Con un VPS pequeño puedes atender a clientes de LINE y KakaoTalk a todas horas y mantener los registros bajo tu control. Contrata un JUSTG Tokyo Cloud VPS o un JUSTG Seoul Cloud VPS, sigue los pasos anteriores y nuestro soporte 24/7 te ayuda por ticket.

¿Le ha resultado útil esta respuesta?
Centro de ayuda
AlipayUnionPayVISAMastercardPayPalUSDTstripe