Центр помощи

Пошаговые руководства по серверам, сетям и аккаунту.

Сценарии использования и решения

AI-бот поддержки для LINE или KakaoTalk на VPS в Токио или Сеуле

Самый практичный способ сделать AI-бота поддержки для LINE или KakaoTalk — разместить вебхук на собственном VPS в Токио (Tokyo, Japan) для LINE или в Сеуле (Seoul, South Korea) для KakaoTalk и вызывать из него LLM API — OpenAI, Claude или Gemini — для подготовки ответов. JUSTG предлагает облачные VPS в Токио и Сеуле с родными местными IP от $19.99/мес: 1 IPv4 + бесплатный IPv6, автоматическое развёртывание после оплаты. На одном сервере помещаются HTTPS-эндпоинт, инструмент автоматизации и база диалогов. В статье два варианта — self-hosted n8n (low-code) и компактный Python-вебхук, а также HTTPS, задержки, лимиты, хранение логов по японскому APPI и корейскому PIPA и передача диалога живому оператору.

Ключевые факты
  • Площадки: Токио, Япония (рядом с пользователями LINE) и Сеул, Южная Корея, сеть KT (рядом с пользователями KakaoTalk).
  • Тип IP: родной японский или корейский IPv4 + бесплатный IPv6; удобен как фиксированный адрес для белых списков.
  • AI API: OpenAI, Claude и Gemini официально доступны в Японии и Корее; JUSTG проверила свои IP в Токио и Сеуле со всеми тремя в октябре 2026 года.
  • Цена: JUSTG Tokyo Cloud VPS и JUSTG Seoul Cloud VPS от $19.99/мес, до 7 ядер / 24 ГБ за $169.99/мес.
  • Москва (Moscow, Russia) не подходит для ботов, вызывающих эти AI API: в России они недоступны.

Как устроен AI-бот для LINE или KakaoTalk

Мессенджер отправляет каждое сообщение пользователя на ваш HTTPS-вебхук, сервер запрашивает ответ у LLM и возвращает его через API платформы.

  1. Клиент пишет в ваш LINE Official Account или канал Kakao Talk Channel.
  2. LINE (Messaging API) или Kakao (скилл Kakao i Open Builder) отправляет POST с JSON на ваш адрес, например https://api.example.com/line.
  3. Сервер проверяет запрос, сохраняет сообщение, добавляет контекст из FAQ или каталога и вызывает LLM API.
  4. Ответ уходит обратно: в LINE — через reply API с краткоживущим reply token, в Kakao — прямо в HTTP-ответе.
  5. Ключевые слова или неуверенный ответ запускают передачу оператору.
ПараметрLINE (Япония)KakaoTalk (Корея)
Платформа ботаLINE Messaging API, LINE Official AccountСкилл-сервер Kakao i Open Builder, Kakao Talk Channel
Как отвечатьСразу вернуть HTTP 200, затем вызвать reply API с reply tokenВернуть ответ в теле ответа вебхука (skill JSON, версия 2.0)
Ограничение по времениReply token быстро истекает — отвечайте сразу после LLMОколо 5 секунд на запрос скилла; для длинных ответов — callback Kakao, если он подключён
Проверка запросаПодпись HMAC-SHA256 в X-Line-SignatureОграничить путь, секретный заголовок или токен, проверка ID бота
Рекомендуемая площадка JUSTGJUSTG Tokyo Cloud VPSJUSTG Seoul Cloud VPS

Почему бота стоит размещать в Токио или Сеуле

Размещение рядом с мессенджером и пользователями сокращает задержки, а обе страны входят в регионы, где работают крупные LLM API.

  • Бюджет задержки. Вызов LLM обычно занимает 1-4 секунды; экономия 100-200 мс на каждом обмене с серверами LINE или Kakao важна, особенно при лимите Kakao около 5 секунд.
  • Доступность AI API. OpenAI, Anthropic и Google поддерживают Японию и Корею. Москва для такого бота не подходит: эти API в России недоступны. Политика провайдеров может меняться, проверки аккаунта и оплаты сохраняются.
  • Фиксированный родной IP. Стабильный японский или корейский IP легко добавить в белые списки вашей CRM, системы заказов или файрвола базы данных.
  • Хранение данных в стране клиентов. Логи диалогов лежат на сервере в той же стране, что и клиенты, — проще оформить уведомление о конфиденциальности.

Вариант A: self-hosted n8n в Docker Compose

n8n удобен, когда схему бота, промпты и интеграции должны править не только разработчики, а в визуальном редакторе.

На JUSTG Tokyo или Seoul Cloud VPS с установленным Docker направьте bot.example.com на IP сервера (например, 203.0.113.20) и выполните:

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

Затем опубликуйте n8n и Python-приложение (вариант B) через Caddy — он сам получит сертификаты Let's Encrypt:

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

В редакторе n8n соберите цепочку: узел Webhook (POST, путь line) → узел Code для проверки подписи LINE → узел IF для ключевых слов передачи оператору → узел чата OpenAI или Anthropic с системным промптом → узел HTTP Request к https://api.line.me/v2/bot/message/reply. Настройте Webhook на немедленный ответ, чтобы LINE сразу получал HTTP 200. Для Kakao в конце цепочки используйте «Respond to Webhook» со skill JSON. Ключи API храните только в Credentials n8n — они шифруются ключом N8N_ENCRYPTION_KEY.

Вариант B: каркас Python-вебхука

Приложение на FastAPI примерно из 70 строк проще хранить в Git и тестировать; оно обслуживает и LINE, и 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]}}]}}

Запустите его как сервис systemd, слушающий только 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

В консоли LINE Developers укажите вебхук https://api.example.com/line и нажмите Verify; в Kakao i Open Builder зарегистрируйте скилл https://api.example.com/kakao и привяжите его к fallback-блоку. Убедитесь, что неверные подписи отклоняются быстро:

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, задержки и лимиты

Обе платформы требуют публичный HTTPS-адрес с валидным сертификатом и плохо переносят медленные ответы.

  • Сертификаты: нужен реальный домен и доверенный сертификат (Let's Encrypt через Caddy). Самоподписанные сертификаты и голые IP в качестве вебхука не принимаются.
  • Быстрый ответ: вебхуки LINE подтверждайте сразу, а работу с LLM выполняйте в фоне. Для Kakao берите быструю модель, ограничивайте max_tokens и сокращайте промпты.
  • Лимиты мессенджера: у LINE Messaging API есть ограничения частоты по эндпоинтам, а push-сообщения расходуют месячную квоту тарифа, тогда как ответы на сообщения пользователей — нет. Предпочитайте reply, а не push.
  • Лимиты LLM: на HTTP 429 отвечайте вежливым запасным текстом и повторяйте запрос с экспоненциальной паузой; задайте бюджеты и оповещения у провайдера.
  • Защита от злоупотреблений: ограничьте число сообщений от одного пользователя в минуту и длину входного текста перед вызовом LLM.

Локальное хранение логов: основы APPI и PIPA

Логи чатов содержат персональные данные, поэтому храните их на своём сервере, только необходимый срок, и сообщайте клиентам об использовании AI.

  • Япония, APPI (Закон о защите персональной информации): укажите цель использования, обеспечьте защиту данных; передача персональных данных провайдеру в другой стране (например, LLM API в США) требует дополнительного раскрытия или согласия.
  • Корея, PIPA (Закон о защите персональной информации): собирайте только необходимое с понятным уведомлением или согласием, раскрывайте зарубежную передачу и обработчиков, удаляйте данные по истечении срока хранения.
  • По возможности маскируйте телефоны, e-mail и номера заказов перед отправкой текста в LLM.
  • Шифруйте резервные копии, ограничьте SSH и не открывайте SQLite или Postgres в интернет.
  • Это общая информация, а не юридическая консультация; уточните детали у местного юриста.

Передача оператору, которая нравится клиентам

Хороший бот знает, когда остановиться: по просьбе клиента, при жалобах и во всём, что касается денег и аккаунтов, нужен человек.

  • Триггеры: слова «担当者», «オペレーター», «상담원», «оператор», несколько неудачных ответов подряд, темы возврата и оплаты.
  • Пометьте пользователя в базе как «режим оператора», чтобы бот замолчал, и уведомите сотрудников по e-mail, в Slack или LINE WORKS.
  • Сотрудники отвечают из чата LINE Official Account Manager или консультационного чата канала Kakao, затем возвращают пользователя в режим бота.
  • В сообщении о передаче укажите часы работы и ожидаемое время ответа.

Какой тариф JUSTG выбрать

Бот поддержки почти не нагружает CPU; объём RAM зависит от того, запускаете ли вы рядом n8n и базу данных.

КонфигурацияРекомендуемая RAMПлощадка
Python-вебхук + SQLite, один канал1-2 ГБТокио для LINE, Сеул для Kakao
n8n + вебхук + Postgres2-4 ГБСтрана большинства клиентов
LINE и Kakao вместе, RAG по документации товаров4-8 ГБПо VPS на страну или Токио для обоих

Для LINE в Японии начните с JUSTG Tokyo Cloud VPS, для KakaoTalk в Корее — с JUSTG Seoul Cloud VPS; обе площадки с маршрутами, оптимизированными для Азии, а дополнительные IP можно добавить позже через Upgrade на странице услуги. Индивидуальные конфигурации (больше CPU, RAM, диска, трафика или IP) доступны по запросу — напишите в отдел продаж через тикет. Другие AI-сценарии — на странице AI VPS.

Частые вопросы

Где лучше разместить сервер для чат-бота LINE?

В Токио: основная аудитория LINE — в Японии, и крупные LLM API там официально доступны. JUSTG Tokyo Cloud VPS даёт родной японский IP от $19.99/мес — этого хватает для вебхука и n8n.

Может ли чат-бот KakaoTalk использовать ChatGPT или Claude?

Да. Скилл-сервер Kakao i Open Builder может вызывать API OpenAI, Claude или Gemini и возвращать ответ в пределах примерно 5 секунд. Размещение на JUSTG Seoul Cloud VPS сокращает путь до Kakao.

Нужен ли HTTPS для вебхука LINE?

Да. LINE принимает только HTTPS-адреса с валидным сертификатом. Привяжите домен к VPS и получите бесплатный сертификат Let's Encrypt через Caddy или Nginx.

Можно ли разместить бота на VPS в Москве?

Нет, если он вызывает OpenAI, Claude или Gemini — эти API в России недоступны. Бота размещайте в Токио или Сеуле, а JUSTG Moscow Cloud VPS лучше подходит для задач российского рынка, не зависящих от этих API.

Запустите своего бота

Один небольшой VPS позволяет круглосуточно отвечать клиентам в LINE и KakaoTalk и держать логи под своим контролем. Закажите JUSTG Tokyo Cloud VPS или JUSTG Seoul Cloud VPS, повторите шаги из статьи, а поддержка 24/7 поможет через тикет.

Помог ли вам данный ответ?
Центр помощи
Сценарии использования и решения Японский сайт или веб-приложение на VPS в Токио: настройка с японским нативным IP Чтобы запустить японоязычный сайт на VPS в Токио, разместите его на сервере в Токио (Япония) с японским нативным IP, отдавайте по HTTPS… Сценарии использования и решения VPS в Токио с японским нативным IP для стриминга: TVer, ABEMA, U-NEXT — тесты и ограничения VPS в Токио с японским нативным IP для японских стриминговых сервисов — это сервер, который TVer, ABEMA, U-NEXT, Niconico, DMM TV и radiko… Сценарии использования и решения Корейский нативный IP на VPS в Сеуле: Wavve, TVING, Naver, Melon — тесты, 본인인증 и ограничения VPS в Сеуле с корейским нативным IP позволяет корейским сервисам — Wavve, TVING, Coupang Play, Naver и Chzzk, SOOP, Melon — видеть ваш… Сценарии использования и решения Собственный AI-чат для команды на VPS в Токио или Сеуле (Open WebUI, LibreChat, Dify) Чтобы запустить закрытый собственный AI-чат для команды, разверните Open WebUI, LibreChat или Dify на небольшом VPS в Токио (Tokyo, Japan)… Сценарии использования и решения AI-автоматизация 24/7 на VPS: дайджесты, перевод карточек и мониторинг для Японии, Кореи и России Проще всего запустить AI-автоматизацию 24/7 — ежедневные дайджесты, перевод карточек товаров, уведомления о ценах — на небольшом постоянно…
AlipayUnionPayVISAMastercardPayPalUSDTstripe