租户管理
租户(Tenant)是 Wholesale 的计费主体,代表下游客户。
1. 创建租户
Wholesale → 租户管理 → 新建租户:
| 字段 | 说明 | 示例 |
|---|---|---|
| 名称 | 租户显示名 | 客户A |
| 余额 | 当前账户余额(元) | 10000.00 |
| 信用额度 | 允许透支额度 | 1000.00 |
| 卖费率表 | 向该租户计费的费率 | sell-deck-cn |
| 路由策略 | 该租户使用的路由 | profile-default |
| LCR 启用 | 是否启用最低成本路由 | true |
| 最大并发 | 该租户最大同时通话数 | 200 |
| 最大 CPS | 该租户每秒最大呼叫数 | 50 |
| 状态 | enabled / disabled | enabled |
余额检查逻辑
呼入时系统检查:余额 + 信用额度 ≥ 卖费率 × 最低时长
不满足则返回 SIP 402 Payment Required。
2. 租户中继绑定
租户通过中继接入系统,需绑定入向中继:
租户详情 → 中继 → 添加中继绑定:
| 配置 | 说明 |
|---|---|
| SIP 中继 | 选择已配置的入向中继 |
| 来源 IP | 允许的租户源 IP 列表 |
| 描述 | 备注信息 |
认证方式
租户入向认证有两种模式:
模式一:IP ACL
租户的 SIP 流量来自固定 IP,系统按源 IP 匹配租户。
模式二:X-Wholesale-Token
在 HTTP Header 中携带签名 Token,适用于动态 IP 场景。Token 由控制台 API 生成。
3. 余额与充值
3.1 充值操作
租户详情 → 充值:
- 输入充值金额
- 上传打款凭证(可选)
- 系统记录充值日志(
rustpbx_recharge_logs)
3.2 余额明细
租户详情 → 余额明细:展示充值记录、扣费汇总、当前余额。
4. CPS 与并发限制
每个租户可独立配置限流:
| 限制 | 字段 | 机制 |
|---|---|---|
| 并发通话 | max_concurrent_calls | 实时计数器 |
| 每秒呼叫 | max_cps | 1 秒滑动窗口 |
在控制台 Wholesale → 监控限流 中可实时查看每个租户的:
- 当前并发通话数
- 当前 CPS
- 被拒绝的呼叫计数(Prometheus 指标
wholesale_concurrent_limit_rejected_total、wholesale_cps_limit_rejected_total)
5. 费率与路由关联
租户
├── 卖费率表 (sell_deck_id) ──► 计费时查 Trie 最长前缀匹配
└── 路由策略 (routing_profile_id) ──► 查 Trie 前缀匹配 → 选中继
└── 中继关联买费率表 ──► 计算成本
- 卖费率:从租户余额扣除的金额
- 买费率:中继对应的运营商成本(用于利润计算和 LCR)
- 利润 = 卖价 - 买价
6. 号码改写
租户级别可配置全局号码改写规则:
| 操作 | 说明 | 示例 |
|---|---|---|
| 主叫 Strip | 去掉主叫前 N 位 | strip=2, 0212345678 → 12345678 |
| 主叫 Prepend | 主叫前添加前缀 | prepend=0, 12345678 → 012345678 |
| 被叫 Strip | 去掉被叫前 N 位 | strip=1, 0212345678 → 2112345678 |
| 被叫 Prepend | 被叫前添加前缀 | prepend=86, 12345678 → 8612345678 |
| 正则替换 | sed 语法 s/pattern/replacement/ | s/^0/86/ → 021234 → 8621234 |
改写顺序:租户级改写 → 路由规则改写 → 中继技术前缀