从这里开始
KatoCall 是一台内置计费引擎的电话交换机。你的客户通过它拨打电话;它检查余额、选择最便宜的出局路由、计时并对通话计费——全部自动完成。
你以一个价格从运营商买入分钟数,再以更高价格卖给客户。KatoCall 保存两个价格,并在每通电话上保留差额。
小提示: KatoCall 不做货币换算。在设置中选择一种货币(默认美元),买卖都用它,这样每笔利润都是简单的减法。
第 1 部分
这只需在全新服务器上做一次。若由技术人员为你搭建服务器,把这一部分交给他们。
| 一台服务器 | Debian 12 (Bookworm),64 位——全新安装。任何像样的 VPS 都行(OVH、Hetzner、DigitalOcean、Vultr)。 |
|---|---|
| 规格 | 2 核 CPU、4 GB 内存、20 GB 磁盘。2 GB 内存是下限。 |
| 一个公网 IP | 服务器需要自己的公网地址——由你的服务商提供。 |
| 服务器登录 | root 密码,或一个拥有 sudo 的用户。 |
| 来自你的运营商 | 一条 SIP 中继(其主机,以及一个受信任 IP 或用户名/密码),外加你拥有的号码(DID)。 |
| 一个域名(可选) | 仅当你想要 https 挂锁。可以先不用,之后再加。 |
把 katocall-1.0.0.tar.gz 复制到服务器上,逐条运行这些命令。每条都会显示它在做什么,若缺少什么会以清晰提示停止。
第一条命令不改动任何东西——它确认服务器就绪,并在缺少什么时告知你。
# unpack the package tar -xzf katocall-1.0.0.tar.gz cd katocall-1.0.0 # 检查服务器(安全——不改动任何东西) sudo bash install/00-preflight.sh
逐条运行。第 01 号编译电话引擎,需 10–20 分钟;其余都很快。
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 步仅用于外呼器——跳过它,其余一切照常运作。
它运行约 65 项检查——每个服务、防火墙、备份、安全——并对失败项指出要修复什么。
sudo bash install/verify.sh PASS 66 WARN 1 FAIL 0
在浏览器打开服务器地址并登录。它会立即强制你设置新密码——在你设置前,什么都不能用。
http://your-server-address/adminKatocall承载真实通话前:启用 HTTPS。 在此之前,面板走的是明文 http,你的登录会毫无保护地在互联网上传输。一旦有域名指向服务器,运行:
sudo bash install/10-configure-tls.sh panel.yourcompany.com you@yourcompany.com
第 2 部分
现在你已进入面板。按此顺序创建这六样东西——每一样都用到前一样。全部都在侧边菜单里。
供应商(Supplier)是你向其购买分钟数的运营商。从这里开始,因为其余一切都指向它。打开 Suppliers → New Supplier 并起个名字。
费率卡(Rate Card)是一份价目表,每个目的地一行(前缀,如美国的 1 或英国的 44)。创建两种:
不要手打几百个前缀:打开该卡并点击 Import CSV,一次性载入运营商的价目文件。
小提示: 费率保存到小数点后 4 位;5 位的价目表在导入时会四舍五入。
中继(Trunk)是与供应商的实时连接。打开 Trunks → New Trunk。两点很重要:
保存后,用 Test Call 确认能拨通,再把客户导向它。
中继名称不能含空格——用 IDT-GOLD,而不是 IDT GOLD。
路由组表示:对这类号码,按此顺序尝试这些中继。两个旋钮:
若第一条中继占线或失败,KatoCall 会转到下一条。用 Preview 输入一个号码,看看它会用哪条中继。
账户(Account)就是一个客户。打开 Accounts → New Account。重要选择:
小提示: 每个进行呼出的账户都需要一张覆盖你所售前缀的客户 Rate Card——否则这些通话会被拒绝(绝不会按零计费)。
DID 是人们拨打以联系你某位客户的号码。打开该账户,进入 DIDs → Add DID,输入号码及其转接目标。(先保存账户。)
面板中的每个字段旁都有一个小小的 ?,用全部十种语言解释它的用途。Settings → Network 在重大更改后把你的配置推送到电话引擎。
第 3 部分
外呼器会拨打一份号码列表、播放一段录音,并让人按键以接通、回拨或退订。必须先完成安装第 12 步。
了解它是什么: 这是一个功率外呼器(power dialer),不是预测式。没有答录机检测(语音信箱算作已接听),也没有自动节奏——你设定一个固定的并发通话数。一次只在一台服务器上运行。
打开 Dialer Campaigns → New Campaign。选择计费到的账户,命名它,设置节奏:Max Concurrent Calls、Max Attempts 和 Retry gap。
上传接听时播放的 Prerecorded Message。然后搭建 IVR Menu——每个按键做什么:
在活动的 Contacts 部分,点击 Upload CSV——一个简单的电话号码文件。
按下 Start,几秒内即开始拨号;Pause 同样迅速停止。完成后,Download Results 给你一个文件,显示每个号码的结果。
第 4 部分
四条命令覆盖了你在服务器上要做的几乎一切。
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 部分
无论遇到什么问题,sudo bash install/verify.sh 都是第一个要运行的。它检查约 65 项并指出要重跑的脚本。