Полное руководство

Установите и настройте для приёма звонков

Понятное руководство по установке KatoCall на сервер и настройке тарификации реальных звонков. Выполняйте части по порядку — опыт в телекоме не нужен.

Версия 1.0.0Для серверов Debian 12~30–45 мин до первого звонка

Начните здесь

Как работает KatoCall, за две минуты

KatoCall — это телефонный коммутатор со встроенным биллингом. Ваши клиенты звонят через него; он проверяет их баланс, выбирает самый дешёвый маршрут, засекает время звонка и тарифицирует его — автоматически.

Ваш клиент совершает звонок KatoCall проверяет баланс, выбирает дешёвый маршрут, считает и тарифицирует Ваш оператор (SIP-транк) Кто угодно набирает маршрутизирует Входящие звонки работают так же в обратную сторону: номер (DID) звонит и переадресуется клиенту.
Каждый звонок — входящий или исходящий — проходит через KatoCall, где происходит тарификация.

Откуда берётся ваша прибыль

Вы покупаете минуты у оператора по одной цене и продаёте клиентам дороже. KatoCall хранит обе цены и удерживает разницу на каждом звонке.

Вы платите оператору
$0.0090
тариф поставщика, за минуту
Вы берёте с клиента
$0.0150
тариф клиента, за минуту
Вы оставляете себе
$0.0060
вашу маржу, автоматически

Полезно знать: KatoCall не конвертирует валюты. Выберите одну валюту в Настройках (доллар США по умолчанию) и используйте её для покупки и продажи, чтобы каждая маржа была простым вычитанием.

Часть 1

Установка на сервер

Это делается один раз, на новом сервере. Если сервер настраивает технический специалист, отдайте ему эту часть.

Что нужно сначала

СерверDebian 12 (Bookworm), 64-бит — чистый. Подойдёт любой приличный VPS (OVH, Hetzner, DigitalOcean, Vultr).
Размер2 ядра CPU, 4 ГБ ОЗУ, 20 ГБ диска. 2 ГБ ОЗУ — минимум.
Публичный IPСерверу нужен собственный адрес в интернете — его даёт ваш провайдер.
Доступ к серверуПароль root или пользователь с sudo.
От вашего оператораSIP-транк (его хост и разрешённый IP или логин/пароль), плюс номера (DID), если есть.
Доменное имя (необязательно)Только если нужен замок https. Можно начать без него и добавить позже.

Выполните установку

Скопируйте katocall-1.0.0.tar.gz на сервер и выполняйте эти команды по одной. Каждая показывает, что делает, и останавливается с понятным сообщением, если чего-то не хватает.

  1. Распакуйте и проверьте сервер

    Первая команда ничего не меняет — она подтверждает, что сервер готов, и сообщает, если чего-то не хватает.

    root@your-server
    # unpack the package
    tar -xzf katocall-1.0.0.tar.gz
    cd katocall-1.0.0
    
    # проверяет сервер (безопасно — ничего не меняет)
    sudo bash install/00-preflight.sh
  2. Запустите скрипты установки по порядку

    Запускайте по одному. Номер 01 собирает телефонный движок и занимает 10–20 минут; остальные быстрые.

    root@your-server
    sudo bash install/01-install-asterisk.sh   # телефонный движок (10–20 мин)
    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   # только если нужен обзвонщик

    С 01 по 09 обязательны. Шаг 12 нужен только для обзвонщика — пропустите его, и всё остальное всё равно работает.

  3. Убедитесь, что всё исправно

    Выполняет около 65 проверок — каждую службу, файрвол, бэкапы, безопасность — и называет, что исправить при сбое.

    root@your-server
    sudo bash install/verify.sh
    
    PASS 66   WARN 1   FAIL 0
  4. Войдите в первый раз

    Откройте адрес сервера в браузере и войдите. Система сразу потребует новый пароль — ничего не работает, пока вы его не зададите.

    • Адрес: http://your-server-address/
    • Имя пользователя: admin
    • Пароль (нужно сразу сменить): Katocall

Перед реальными звонками: включите HTTPS. Пока не включите, панель работает по обычному http, и вход путешествует по интернету незащищённым. Как только домен указывает на сервер, выполните:

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

Часть 2

Настройка для звонков

Теперь вы в панели. Создайте эти шесть вещей в таком порядке — каждая использует предыдущую. Всё в левом меню.

1SuppliersУ кого вы покупаете минуты
2Rate CardsВаши цены покупки и продажи
3TrunksЛиния к вашему оператору
4Routing GroupsКакая линия для какого звонка
5AccountsВаши клиенты
6DIDsВходящие номера
  1. Suppliers — у кого вы покупаете минуты

    Поставщик (Supplier) — это оператор, у которого вы покупаете минуты. Начните здесь, потому что всё остальное ссылается на него. Откройте Suppliers → New Supplier и дайте имя.

    Suppliers+ New Supplier
    e.g. IDT Gold
    USD — $ US Dollar
    Account manager, contract terms…
    Suppliers → New Supplier
  2. Rate Cards — ваши цены покупки и продажи

    Тарифная карта (Rate Card) — это прайс-лист, по строке на направление (префикс, например 1 для США или 44 для Великобритании). Создайте два вида:

    • Provider Rates — сколько ваш поставщик берёт с вас.
    • Customer Rates — сколько вы берёте с клиентов (выше — эта разница ваша прибыль).

    Не вводите сотни префиксов вручную: откройте карту и нажмите Import CSV, чтобы загрузить прайс оператора разом.

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

    Полезно знать: Тарифы хранятся с 4 знаками после запятой; файл с 5 знаками округляется при импорте.

  3. Trunks — реальная линия к вашему оператору

    Транк (Trunk) — это активное соединение с поставщиком. Откройте Trunks → New Trunk. Важны две вещи:

    • Direction — Outbound (исходящие), Inbound (входящие) или Both (оба).
    • Authentication — IP-based (доверяют адресу вашего сервера) или Username/Password (вам дали SIP-логин).

    После сохранения используйте Test Call, чтобы убедиться, что он набирает, прежде чем направлять клиентов.

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

    Имя транка не может содержать пробелы — используйте IDT-GOLD, а не IDT GOLD.

  4. Routing Groups — какая линия для какого звонка

    Группа маршрутизации говорит: для такого номера пробуй эти транки, в таком порядке. Две настройки:

    • Priority — меньшая пробуется первой. Поставьте самого дешёвого оператора на приоритет 1.
    • Weight — распределяет трафик между транками одного приоритета.

    Если первый транк занят или недоступен, KatoCall переходит к следующему. Используйте Preview, чтобы ввести номер и увидеть, какой транк будет выбран.

    Standard LCR+ Add Route
    TrunkPriorityWeight
    IDT-GOLD1 first100
    Backup-Carrier2100
    Routing Groups → Add Route
  5. Accounts — ваши клиенты

    Аккаунт (Account) — это один клиент. Откройте Accounts → New Account. Важные выборы:

    • Billing Type — Prepaid (пополняют баланс; звонки останавливаются на нуле) или Postpaid (счёт позже).
    • Rate Card — клиентский прайс из шага 2.
    • Routing Group — как уходят их звонки, из шага 4.
    • Как они подключаются — разрешённый IP или логин и пароль для их телефона/АТС.
    New AccountSave
    Acme Telecom
    Prepaid
    $250.00
    USA Retail
    Standard LCR
    Accounts → New Account

    Полезно знать: Каждому аккаунту, совершающему исходящие звонки, нужна клиентская Rate Card, покрывающая продаваемые вами префиксы — иначе эти звонки отклоняются (никогда не тарифицируются по нулю).

  6. DIDs — номера, звонящие вам

    DID — это номер, по которому звонят, чтобы связаться с одним из ваших клиентов. Откройте аккаунт, перейдите в DIDs → Add DID, введите номер и куда переадресовать. (Сначала сохраните аккаунт.)

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

У каждого поля в панели есть маленький ? рядом, объясняющий его назначение, на всех десяти языках. Settings → Network отправляет вашу конфигурацию в телефонный движок после крупных изменений.

Часть 3

Запуск кампании обзвона

Обзвонщик набирает список номеров, проигрывает записанное сообщение и позволяет людям нажать клавишу, чтобы соединиться, заказать обратный звонок или отписаться. Сначала нужно выполнить шаг 12 установки.

Поймите, что это: это силовой обзвонщик (power dialer), не предиктивный. Нет определения автоответчика (голосовая почта считается отвеченной) и нет автотемпа — вы задаёте фиксированное число одновременных звонков. Работает на одном сервере за раз.

  1. Создайте кампанию

    Откройте Dialer Campaigns → New Campaign. Выберите тарифицируемый аккаунт, назовите её, задайте темп: Max Concurrent Calls, Max Attempts и Retry gap.

    New CampaignSave
    Acme Telecom
    10
    3
    Upload a .wav / .mp3…
    Dialer Campaigns → New Campaign
  2. Добавьте сообщение и меню

    Загрузите Prerecorded Message, проигрываемое при ответе. Затем соберите IVR Menu — что делает каждая клавиша:

    • Нажать 1 → перевести на оператора
    • Нажать 2 → заказать обратный звонок
    • Нажать 9 → добавить в Do-Not-Call (больше не набирается)
  3. Загрузите контакты

    В разделе Contacts кампании нажмите Upload CSV — простой файл с номерами телефонов.

  4. Нажмите Start — и читайте результаты

    Нажмите Start, и обзвон начнётся за секунды; Pause останавливает так же быстро. По завершении Download Results даёт файл с тем, что случилось с каждым номером.

    Spring PromoStart
    Phone NumberAttemptsResult
    +1 305 555 00001answered
    +1 305 555 00012no answer
    +1 305 555 00021transferred
    Кампания заполняет результат для каждого номера.

Часть 4

Повседневная работа

Четыре команды покрывают почти всё, что вы делаете на сервере.

root@your-server
sudo bash install/verify.sh            # всё исправно?
sudo /usr/local/sbin/katocall-backup    # сделать бэкап сейчас
sudo bash install/upgrade.sh           # применить новую версию
sudo bash install/uninstall.sh         # удалить (данные сохраняются)

Ваши бэкапы лежат на том же диске, который защищают. Регулярно копируйте их в другое место, иначе сбой диска унесёт данные и их единственный бэкап вместе.

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

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

Часть 5

Если что-то не так

«Не удалось связаться с сервером» при входе.
Возможно, служба перезапускается. Подождите и обновите. Если сохраняется, выполните install/verify.sh — он укажет точную упавшую службу.
Звонок не соединяется.
Проверьте три вещи по порядку: у Account есть баланс и Rate Card; у Routing Group есть транк для этого направления (используйте Preview); Test Call транка работает.
Меня заблокировало после неверного пароля.
KatoCall блокирует адрес после нескольких неудач, намеренно. Дождитесь окончания блокировки или снимите её на странице IP Bans с другого устройства.
Обзвонщик пишет «Running», но ничего не набирает.
Вероятно, пропущен шаг 12 установки. Выполните install/12-configure-dialer.sh, затем install/verify.sh.
Столбец маржи пуст.
Валюта клиента и валюта транка различаются. KatoCall не конвертирует валюты — покупайте и продавайте в одной валюте, и маржа появится.

Какой бы ни была проблема, sudo bash install/verify.sh — первое, что нужно запустить. Он проверяет ~65 вещей и называет скрипт для повторного запуска.