跳到主要内容

在线计费 (Ro 接口)

📖 返回主文档

Ro(在线计费)Diameter 接口的配置和操作细节。

相关文档

核心文档

呼叫处理集成

相关接口

  • 👥 Sh 接口 - 订阅者数据接口(也使用 Diameter)
  • 📡 SS7 MAP - 订阅者路由的替代方案

监控


Ro 配置

如果要使用 Ro(在线���费),必须在配置中启用它。

您当然需要一个可以处理 Ro 的连接 Diameter 对等体或一个拥有它的 DRA。

periodic_ccr_time_seconds 设置在会话期间发送信用控制请求类型 2(更新)的频率。根据 OCS 的需求,这可能需要调整。

如果信用控制请求类型 1(初始)返回所有余额的最大使用秒数,我们可以为该时间设置计划挂断。这由 schedule_hangup_auth 标志控制,如果启用,将在 CCR-I 中获取分配的秒数,并在该时间设置呼叫挂断。

skipped_regex(可选)允许您指定正则表达式模式,以匹配应绕过在线计费的目标号码。匹配这些模式的目标的呼叫将在不联系 OCS 的情况下获得授权。这对于内部服务、语音邮件、紧急号码或其他不应收费的目标非常有用。如果省略或设置为空列表,则启用时所有呼叫都将通过在线计费。模式使用 Elixir 正则表达式语法(例如,"^2222" 匹配以 2222 开头的号码,"^344[4-6]" 匹配以 3444、3445 或 3446 开头的号码)。

config :tas,
...
online_charging: %{
enabled: true,
periodic_ccr_time_seconds: 10,
schedule_hangup_auth: true,
skipped_regex: ["^2222", "^2223", "^8999", "^344[4-6]"] # 可选
},

在线计费操作行为

周期性计费的工作原理:

当一个移动发起(MO)呼叫被接听时:

  1. 系统发送初始 CCR-I(初始信用控制请求)以授权呼叫
  2. 如果有信用,OCS 返回分配的时间(例如,120 秒)
  3. 一个后台进程开始运行,每个 periodic_ccr_time_seconds 重新授权呼叫
  4. 该进程发送 CCR-U(更新)请求以检查订阅者是否仍有信用
  5. 每个成功的 CCR-U 延长呼叫并授予额外时间
  6. 当呼叫结束时,发送 CCR-T(终止)以进行最终结算

请求类型值:

  • 1 = 初始 (CCR-I) - 在呼叫首次获得授权时发送
  • 2 = 更新 (CCR-U) - 在接听时和呼叫期间定期发送
  • 3 = 终止 (CCR-T) - 在呼叫结束时发送
  • 4 = 事件 - 用于 SMS 或一次性事件计费

当信用用尽时会发生什么:

如果周期性 CCR-U 返回零秒或错误:

  • 周期性计费过程会自动停止
  • 如果启用 schedule_hangup_auth,当分配的时间到期时,呼叫将终止
  • 订阅者的呼叫结束,并收到适当的通知

调整 periodic_ccr_time_seconds

根据您的操作需求选择间隔:

  • 较低的值(5-10 秒): 对信用耗尽反应更快,快速捕捉到信用不足的情况,但会对 OCS 造成更高负载
  • 较高的值(30-60 秒): 降低 OCS 负载和网络流量,但订阅者在检查之间可能会消耗略多于可用的信用
  • 推荐: 根据您的最小信用增量和 OCS 容量,从 10-30 秒开始

监控周期性计费:

监视这些指标以确保周期性计费正常工作:

  • online_charging_events_total{event_type="reauth"} - 跟踪周期性 CCR-U 请求
  • online_charging_events_total{event_type="reauth",result="success"} - 成功的重新授权
  • online_charging_events_total{event_type="reauth",result="nocredit"} - 订阅者在通话中信用耗尽
  • 高重新授权失败率表明 OCS 连接或性能问题

排查周期性计费问题:

如果呼叫未能正确重新授权:

  1. 检查日志中是否有 "Sending periodic CCR-U for <call_id>" 消息 - 确认后台进程正在运行
  2. 查找 "Periodic CCR failed - Stopping job" 警告 - 表示信用耗尽或 OCS 错误
  3. 验证 ocs_authorization_duration_milliseconds 指标显示合理的响应时间
  4. 确认 OCS 返回有效的 CCA-U 响应,附带授予的时间单位
  5. 检查 periodic_ccr_time_seconds 是否未设置得过于激进,以适应您的 OCS 容量