在线计费 (Ro 接口)
📖 返回主文档
Ro(在线计费)Diameter 接口的配置和操作细节。
相关文档
核心文档
呼叫处理集成
相关接口
监控
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)呼叫被接听时:
- 系统发送初始 CCR-I(初始信用控制请求)以授权呼叫
- 如果有信用,OCS 返回分配的时间(例如,120 秒)
- 一个后台进程开始运行,每个
periodic_ccr_time_seconds重新授权呼叫 - 该进程发送 CCR-U(更新)请求以检查订阅者是否仍有信用
- 每个成功的 CCR-U 延长呼叫并授予额外时间
- 当呼叫结束时,发送 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 连接或性能问题
排查周期性计费问题:
如果呼叫未能正确重新授权:
- 检查日志中是否有 "Sending periodic CCR-U for <call_id>" 消息 - 确认后台进程正在运行
- 查找 "Periodic CCR failed - Stopping job" 警告 - 表示信用耗尽或 OCS 错误
- 验证
ocs_authorization_duration_milliseconds指标显示合理的响应时间 - 确认 OCS 返回有效的 CCA-U 响应,附带授予的时间单位
- 检查
periodic_ccr_time_seconds是否未设置得过于激进,以适应您的 OCS 容量