操作指南
📖 返回主文档
本文档涵盖了控制面板中可用的操作监控和管理功能。
相关文档
核心文档
监控与测试工具
- 🧪 HLR 和呼叫模拟器 - HLR 和呼叫模拟的测试工具
- 👥 IMS 会议服务器 - 会议管理和监控
- 📈 拨号计划指标 - 拨号计划特定指标
呼叫处理与服务
集成接口
操作
本节涵盖了 OmniTAS 控制面板中可用的操作监控和管理功能。
目录
订阅者视图
订阅者视图提供对存储在 Sofia SIP 注册数据库中的 IMS 订阅者注册的实时监控。
访问: 在控制面板中导航到 /subscribers
功能
- 注册列表: 查看所有活动的订阅者注册
- 注册详情: 点击任何注册以查看完整详情,包括:
- SIP 用户和领域
- 联系 URI
- 注册状态和过期时间
- 网络信息(IP、端口、主机名)
- 身份验证详情
- 基站位置(当通过 P-Access-Network-Info 可用时)
- MCC/MNC、无线类型、TAC/LAC、基站 ID
- 地理坐标和覆盖范围
- 由 OpenStreetMap 和 OpenCellID 数据提供的交互式地图视图
数据源
注册数据直接从 Sofia 注册数据库查询,提供对订阅者附着状态的实时可见性。当订阅者在其 SIP REGISTER 消息中提供 P-Access-Network-Info 头时,基站位置使用 OpenCellID 数据库解析。
用例
- 监控活动订阅者注册
- 验证订阅者附着状态
- 排查注册问题
- 审计订阅者连接性
呼叫详细记录 (CDR)
CDR 视图提供对 TAS 存储的呼叫详细记录的访问,这些记录用于计费、故障排除和分析目的。
访问: 在控制面板中导航到 /cdr
功能
- 分页视图: 浏览呼叫记录(每页 100 条,带有上一页/下一页控件)
- 高级搜索: 强大的搜索,支持精确匹配、排除/反向和多个术语
- 列选择: 自定义显示哪些字段
- 点击 "Columns" 按钮打开列选择器模态框
- 选择/取消选择单个列
- 全选 / 全不选 快速操作
- 选择在会话之间保持(保存到浏览器 localStorage)
- 显示 "X / Y columns" 计数器
- 可排序列: 点击任何列标题进行排序(升序/降序)
- 视觉指示器(▲ 升序,▼ 降序)
- 排序列以蓝色高亮显示
- 排序更改时重置为第 1 页
- 多个过滤选项:
- 文本搜索: 在所有字段中使用高级运算符搜索
- 日期范围过滤: 按开始/结束日期和时间过滤(日期时间选择器)
- 字段特定过滤: 按确切字段值过滤(挂断原因、来电 ID、目的地、上下文)
- 活动过滤显示: 视觉芯片显示当前活动的过滤器
- 清除所有: 一键移除所有活动过滤器
- 详细信息: 点击任何 CDR 行以展开并查看所有字段:
- 呼叫方(来电 ID 名称/号码、目的地号码)
- 时间戳(开始、应答、结束)
- 持续时间和计费秒数
- 挂断原因(颜色编码:绿色=正常,黄色=取消,红色=错误)
- 呼叫 UUID(A-leg 和 B-leg)
- 上下文和账户代码
- 按字母顺序显示的所有可用数据库字段
- 颜色编码的挂断原因:
- 🟢 绿色:
NORMAL_CLEARING - 🟡 黄色: 取消的呼叫
- 🔴 红色: 错误条件
- 🟢 绿色:
- 总计数: 实时显示总匹配记录
- 响应式布局: 在较小屏幕上适当换行过滤器
如何使用
-
基本��看:
- 页面加载最新的 100 条 CDR 记录(按
start_stamp降序排序) - 右上角显示总记录数
- 使用 Previous / Next 按钮导航页面
- 点击任何行以展开并查看所有字段
- 页面加载最新的 100 条 CDR 记录(按
-
自定义列:
- 点击右上角的 "Columns" 按钮
- 模态框显示所有可用字段
- 勾选/取消勾选字段以显示/隐藏列
- 使用 "Select All" 或 "Deselect All" 进行快速选择
- 设置自动保存到浏览器
- 关闭模态框以应用更改
-
排序数据:
- 点击任何列标题按该字段排序
- 第一次点击:降序 (▼)
- 第二次点击:升序 (▲)
- 第三次点击:返回降序
- 排序列以蓝色高亮显示
-
搜索记录:
- 在 "Search" 框中输入搜索查询
- 支持高级运算符(见下面的搜索语法)
- 在多个字段中搜索:
caller_id_number、destination_number、uuid、caller_id_name、hangup_cause - 点击 "Apply" 执行搜索
-
按日期范围过滤:
- 使用 "Start Date" 和 "End Date" 日期时间选择器
- 过滤日期时需要两个日期
- 支持日期和时间选择
- 点击 "Apply" 进行过滤
-
按特定字段过滤:
- 从 "Select Field to Filter" 下���菜单中选择字段:
- 挂断原因
- 来电 ID
- 目的地
- 上下文
- 在 "Enter Filter Value" 中输入确切值
- 点击 "Apply" 进行过滤
- 从 "Select Field to Filter" 下���菜单中选择字段:
-
组合过滤器:
- 所有过滤器可以同时使用:
- 文本搜索 + 日期范围 + 字段过滤器都可以一起工作
- 活动过滤器显示为过滤表单下方的芯片
- 点击 "Clear All" 一次性移除所有过滤器
- 所有过滤器可以同时使用:
-
查看详细信息:
- 点击任何 CDR 行以展开
- 以网格布局显示所有数据库字段
- 字段按字母顺序显示
- 挂断原因颜色编码以便快速识别
- 再次点击行以折叠
高级搜索语法
搜索框支持强大的查询语法,以便在多个字段中同时精确过滤记录。
搜索工作原理:
搜索引擎检查每个 CDR 记录中的 所有可搜索字段。当记录在 任何 这些字段中匹配您的搜索条件时,该记录将包含在结果中:
caller_id_numberdestination_numberuuidcaller_id_namehangup_cause
搜索运算符(可以组合):
-
包含搜索(默认):
- 语法:
term(无引号) - 匹配: 记录中 任何字段包含 该术语
- SQL: 在所有可搜索字段中使用
LIKE '%term%'连接OR - 示例:
61480匹配 "61480123456"、"55561480999" 等。
- 语法:
-
精确匹配:
- 语法:
"term"(带双引号) - 匹配: 记录中 任何字段完全等于 该术语
- SQL: 在所有可搜索字段中使用
= 'term'连接OR - 示例:
"911"仅匹配完全 "911",而不匹配 "9115" 或 "1911"
- 语法:
-
反向/排除:
- 语法:
!term(感叹号前缀,无引号) - 匹配: 记录中 没有字段包含 该术语
- SQL: 在所有可搜索字段中使用
NOT LIKE '%term%'连接AND - 示例:
!NORMAL排除任何在任何字段中包含 "NORMAL" 的记录
- 语法:
-
精确反向/排除:
- 语法:
!"term"(感叹号 + 双引号) - 匹配: 记录中 没有字段完全等于 该术语
- SQL: 在所有可搜索字段中使用
!= 'term'连接AND - 示例:
!"NORMAL_CLEARING"排除任何字段完全为 "NORMAL_CLEARING" 的记录
- 语法:
-
多个术语与 AND:
- 语法:
term1 AND term2(不区分大小写的 AND) - 匹配: 匹配 所有术语 的记录(每个术语可以匹配不同字段)
- 每个术语使用其自己的运算符处理(引号、! 等)
- 在 SQL 中使用
AND组合术语 - 示例:
"911" AND "12345"查找在一个字段中包�� "911" 和在另一个字段中包含 "12345" 的记录
- 语法:
搜索执行逻辑:
对于每个 CDR 记录:
对于正常搜索(无 !):
- 检查是否 **任何字段包含/等于** 该术语 → 如果为 TRUE,则包含
- SQL: field1 LIKE '%term%' OR field2 LIKE '%term%' OR ...
对于反向搜索 (!):
- 检查是否 **所有字段不包含/等于** 该术语 → 如果为 TRUE,则包含
- SQL: field1 NOT LIKE '%term%' AND field2 NOT LIKE '%term%' AND ...
对于 AND 搜索:
- 每个术语单独评估
- 所有术语条件必须为 TRUE → 如果为 TRUE,则包含
- SQL: (term1_conditions) AND (term2_conditions) AND ...
复杂搜索示例:
| 查询 | 工作原理 | 结果 |
|---|---|---|
61480 | 在所有字段中进行包含搜索 | 所有在任何地方包含 "61480" 的记录(呼叫方、目的地、UUID 等) |
"911" | 在所有字段中进行精确匹配 | 任何字段完全为 "911" 的记录 |
!NORMAL_CLEARING | 反向包含搜索 | 排除任何在任何字段中包含 "NORMAL_CLEARING" 的记录(失败的呼叫) |
!"NORMAL_CLEARING" | 精确反向 | 排除任何字段完全为 "NORMAL_CLEARING" 的记录 |
"911" AND "12345" | 精确 "911" 和精确 "12345" | 同时包含两个值的记录(例如,呼叫方="12345",目的地="911") |
!NORMAL AND 61480 | 反向包含 "NORMAL" 和包含 "61480" | 涉及 "61480" 的非正常呼叫 |
!"ANSWER" AND !NORMAL | 精确反向 "ANSWER" 和反向包含 "NORMAL" | 排除已接听的呼叫和任何包含 "NORMAL" 的记录 |
61480 AND !NORMAL_CLEARING | 包含 "61480" 和反向包含 "NORMAL_CLEARING" | 涉及 "61480" 的失败呼叫 |
实际用例:
- 查找特定号码:
61480123456- 包含搜索找到部分匹配 - 查找精确紧急呼叫:
"911"- 仅呼叫完全为 "911" - 所有失败的呼叫:
!NORMAL_CLEARING- 排除成功的呼叫 - 特定呼叫者的失败呼叫:
"61480123456" AND !NORMAL- 将精确呼叫者与反向结合 - 排除测试号码:
!test AND !demo- 多个反向搜索 - 复杂调试:
61480 AND !"ANSWER" AND !CANCEL- 包含一个术语,排除精确和部分其他
数据源
CDR 数据直接从 TAS CDR SQLite 数据库查询。
架构可能因特定要求而在不同部署之间有所不同。
CDR 导出选项
重要: CDR 记录可以以各种格式导出,以支持与计费系统、分析平台和报告工具的集成。
CDR 数据库架构和导出格式是特定于部署的。在设置系统时,���向您的集成工程师请求您需要的特定 CDR 输出格式。常见的导出格式包括:
- CSV(逗号分隔值)
- JSON(用于 API 集成)
- XML
- 直接数据库访问
- 自定义格式导出
您的集成工程师可以配置适合您操作和计费要求的 CDR 导出机制。
用例
- 呼叫故障排除: 按号码或 UUID 搜索特定呼叫以调试问题
- 计费对账: 按日期范围过滤以匹配计费周期
- 质量分析: 按挂断原因过滤以识别问题模式
- 紧急呼叫审计: 搜索 "911" 以验证紧急呼叫处理
- 客户支持: 按来电 ID 或目的地查找特定客户呼叫
- 模式分析: 按持续时间或时间戳排序以识别异常
- 合规与记录保存: 日期范围过滤用于合规报告
- 失败呼叫分析: 使用
!NORMAL_CLEARING查找所有失败的呼叫 - 基于上下文的报告: 按上下文过滤以分析特定呼叫流
配置
默认可见列
您可以通过在 config/runtime.exs 中设置 cdrs_field_list 来配置在 LiveView 中 默认显示 的 CDR 字段:
config :tas,
cdrs_field_list: [
"caller_id_number",
"destination_number",
"start_stamp",
"duration",
"hangup_cause"
]
行为:
- 如果未��置
cdrs_field_list:默认显示所有可用的 CDR 字段 - 如果设置了
cdrs_field_list:仅默认显示指定字段,但 所有其他字段仍然可在列选择器中使用 - 如果列表中的字段在 CDR 数据中不存在,则会自动跳过
- 字段名称可以指定为字符串或原子
- 用户可以随时从列选择器手动选择其他列
用例:
- 设置一个干净的默认视图,仅显示必要字段
- 减少新用户的信息过载
- 在所有用户中标准化初始列布局
- 默认隐藏高级字段,但仍可访问
示例配置:
# 默认仅显示基本呼叫信息
cdrs_field_list: [
"start_stamp",
"caller_id_number",
"destination_number",
"duration",
"billsec",
"hangup_cause"
]
注意: 此配置设置 默认可见 列。所有 CDR 字段仍然可在 "Columns" 选择器中使用 - 用户可以手动显示/隐藏所需的任何字段。
API / 程序访问
对于自动化 CDR 分析,底层 Elixir API 支持所有搜索功能:
# Elixir API 示例
Tas.Cdr.get_filtered_records(search: "911")
Tas.Cdr.get_filtered_records(search: "\"911\"")
Tas.Cdr.get_filtered_records(search: "!NORMAL_CLEARING")
Tas.Cdr.get_filtered_records(search: "\"911\" AND \"12345\"")
请参阅 lib/cdr/cdr.ex 以获取完整的 API 文档。
故障排除
未找到结果
- 检查搜索术语中的拼写错误
- 尝试去掉引号以进行更广泛的搜索
- 验证术语是否存在于可搜索字段中
- 检查日期范围是否过于严格
结果过多
- 添加更多 AND 术语以缩小范围
- 使用引号进行精确匹配
- 应用日期范围过滤
- 使用字段特定过滤器
结果意外
- 记住搜索适用于 所有可搜索字段
- 检查术语是否出现在意外字段中(如 UUID)
- 使用精确匹配以避免部分匹配
- 验证反向逻辑(AND 与 OR)
提示
- 列选择: 隐藏未使用的列,以专注于相关数据并提高性能
- 组合过滤器: 将搜索 + 日期范围 + 字段过滤器结合使用以进行精确查询
- 日期范围性能: 缩小日期范围可以更快返回结果,适用于大型数据库
- 排序以进行分析: 按持续时间排序以查找长/短呼叫,或按时间戳查看呼叫模式
- 活动过滤芯片: 使用视觉芯片验证当前活动的过滤器
- 持久设置: 列选择在每个浏览器中保存,适用于不同的分析任务
- 颜色编码: 快速扫描挂断原因 - 绿色是好的,红色需要调查
- 可展开的详细信息: 点击行以查看所有字段,而不干扰主视图
- 搜索运算符: 掌握搜索语法以进行强大的过滤:
- 使用引号进行精确匹配:
"911" - 使用
!排除:!NORMAL_CLEARING - 与 AND 结合:
"61480" AND !NORMAL
- 使用引号进行精确匹配:
- 分页: 记住过滤器在页面之间保持 - 使用分页查看大型结果集
活动呼叫监控
活动呼叫视图显示系统中正在进行的呼叫的实时信息。
访问: 在控制面板中导航到 /calls
功能
- 实时状态: 活动呼叫会话的实时视图
- 呼叫详情: 查看通道变量和呼叫状态信息
- UUID 跟踪: 监控 A-leg 和 B-leg 呼叫标识符
IMS 会议服务器
IMS 会议服务器提供符合 3GPP IMS 标准(RFC 4579、RFC 4575、TS 24.147)的多方会议能力。
访问: 在控制面板中导航到 /conference
文档: 请参见 IMS 会议服务器用户指南 以获取详细文档
功能
- 实时监控: 活动会议和参与者的实时视图
- 会议统计仪表板:
- 活动会议计数
- 所有会议的总参与者
- 视频会议计数
- 锁定会议计数
- 服务器配置详情(域���MNC/MCC、最大参与者)
- 会议列表: 查看所有活动会议,包括:
- 会议 ID 和 SIP URI
- 当前参与者计数
- 会议创建者身份
- 会议详情: 点击任何会议以展开并查看:
- 完整的会议信息(状态、视频状态、锁定状态、录音状态)
- 完整的参与者列表及其角色和状态
- 参与者视频状态
- 会议控制操作:
- 锁定/解锁会议以控制访问
- 启用/禁用会议视频
- 实时状态更新和操作反馈
- 自动刷新: 可配置的自动刷新(默认:5 秒)以进行实时监控
OmniTAS 控制台管理
所有会议操作也可以通过 OmniTAS 控制台使用 ims_conference 命令进行:
ims_conference list # 列出所有活动会议
ims_conference info <conf_id> # 显示会议详情
ims_conference stats # 显示服务器统计信息
ims_conference lock <conf_id> # 锁定会议
ims_conference unlock <conf_id> # 解锁会议
ims_conference video <conf_id> on|off # 控制视频
ims_conference record <conf_id> start|stop # 控制录音
ims_conference add <conf_id> <sip_uri> # 添加参与者
ims_conference remove <conf_id> <uuid> # 移除参与者
ims_conference destroy <conf_id> # 终止会议
用例
- 操作监控: 实时查看活动会议和资源使用情况
- 容量管理: 监控参与者计数和视频使用情况以管理带宽
- 故障排除: 诊断会议访问问题、参与者连接问题
- 会议控制: 锁定会议以保护隐私,管理视频以控制带宽
- 合规性: 监控和记录会议以确保合规性
3GPP 合规性
会议服务器实现了关键的 3GPP IMS 会议规范:
- TS 24.147:使用 IM 核心网络子系统的会议
- RFC 4579:SIP 呼叫控制 - 用户代理的会议
- RFC 4575:SIP 事件包用于会议状态
- RFC 5239:集中式会议框架
网关状态
监控连接到 TAS 的 SIP 网关/中继的状态和健康状况。
访问: 在控制面板中导航到 /gw
功能
- 注册状态: 查看网关注册状态
- 呼叫统计: 跟踪进出呼叫和失败
- Ping 监控: SIP OPTIONS ping 时间和可达性
- 网关详情: 完整的配置和状态信息
监控指标
- SIP 注册状态
- Ping 时间(平均 SIP OPTIONS 响应时间)
- 正常运行时间(自配置文件重启以来的秒数)
- 进呼叫 / 出呼叫
- 失败的进呼叫 / 失败的出呼叫
- 最后 ping 时间和频率
Diameter 对等体状态
监控 Sh 和 Ro 接���的 Diameter 对等体连接性。
访问: 在控制面板中导航到 /diameter
功能
- 对等体状态: 每个配置对等体的连接状态
- 应用支持: 查看支持的 Diameter 应用(Sh、Ro)
- 看门狗状态: Diameter 看门狗监控
系统日志查看器
实时统一日志查看器,用于 TAS 后端(Elixir)和 TAS 呼叫处理(FreeSWITCH)日志。
访问: 在控制面板中导航到 /logs
功能
- 统一日志流: 在一个界面中查看 TAS 后端和呼叫处理的日志
- 实时更新: 实时流式传输日志消息(每 1 秒自动刷新)
- 颜色编码的日志级别:
- 🟣 控制台 - 控制台消息(紫色/洋红色)
- 🔴 警报/严重 - 需要立即关注的紧急问题(红色)
- 🟠 错误 - 错误条件(浅红色)
- 🟡 警告 - 警告消息(黄色)
- 🔵 通知 - 显著的信息性消息(青色)
- 🔵 信息 - 一般信息性消息(蓝色)
- ⚪ 调试 - 调试/详细日志(灰色)
- 来源徽章:
- 🔵 TAS 后端 - Elixir 应用日志(蓝色徽章)
- 🟣 TAS 呼叫处理 - FreeSWITCH 日志(紫色徽章)
- 左边框指示器: 颜色编码的左边框与日志级别匹配,便于快速视觉扫描
- 多个过滤器:
- 来源过滤: 所有来源 / TAS 后端 / TAS 呼叫处理
- 级别过滤: 所有 / 控制台 / 警报 / 严重 / 错误 / 警告 / 通知 / 信息 / 调试
- 文本搜索: 在日志消息中进行实时关键字搜索
- 暂停/恢复: 冻结日志流以分析特定条目,而不失去上下文
- 清除日志: 从显示中删除所有当前日志条目
- 日志计数器: 显示过滤日志与总日志(例如,“显示 150 条,共 500 条日志”)
- 尾部行为: 保持最后 500 条日志条目以提高性能
- 元数据展示: 文件名和行号用于源代码引用(如可用)
- 可滚动视图: 固定高度容器,最新日志自动滚动
如何使用
-
基本查看:
- 页面加载最新的 500 条来自两个来源的日志条目
- 日志实时生成
- 最近的日志出现在顶部
- 每 1 秒自动刷新
-
按来源过滤:
- 从 "Source" 下拉菜单中选择:
- 所有来源 - 显示 TAS 后端和呼叫处理的日志
- TAS 后端 - 仅 Elixir 应用日志
- TAS 呼叫处理 - 仅 FreeSWITCH/拨号计划日志
- 过滤立即应用
- 从 "Source" 下拉菜单中选择:
-
按日志级别过滤:
- 从 "Level" 下拉菜单中选择:
- 所有 - 显示所有日志级别
- 控制台 到 调试 - 仅显示该特定级别
- 有助于专注于错误或调试特定问题
- 从 "Level" 下拉菜单中选择:
-
搜索关键字:
- 在 "Search logs..." 框中输入
- 不区分大小写地在日志消息中搜索
- 输入时实时过滤
- 与来源和级别过滤器结合使用
-
暂停/恢复流:
- 点击 "Pause" 按钮(橙色)以冻结日志更新
- "PAUSED" 指示器出现在标题中
- 在不干扰新日志的情况下查看特定日志条目
- 点击 "Resume" 按钮(绿色)以重新启动实时流
-
清除日志:
- 点击 "Clear" 按钮(红色)以删除所有显示的日志
- 清除 TAS 后端和呼叫处理的日志
- 新日志将在生成时出现
-
阅读日志条目:
- 时间戳: 以 HH:MM:SS.毫秒格式显示时间
- 来源徽章: 指示 TAS 后端(蓝色)或呼叫处理(紫色)
- 日志级别: 颜色编码级别在方括号中 [ERROR]、[INFO] 等
- 文件/行: 源代码位置(如可用)
- 消息: 实际日志消息内容
日志级别说明
| 级别 | 颜色 | 使用时机 | 示例 |
|---|---|---|---|
| 控制台 | 紫色 | 控制台特定消息 | 高优先级 FreeSWITCH 控制台输出 |
| 警报 | 红色 | 需要立即采取行动 | 系统组件故障 |
| 严重 | 红色 | 严重条件 | 数据库连接丢失 |
| 错误 | 浅红色 | 错误条件 | 处理呼叫失败,配置无效 |
| 警告 | 黄色 | 警告条件 | 使用了弃用的功能,重试尝试 |
| 通知 | 青色 | 显著的正常事件 | 配置重新加载,服务启动 |
| 信息 | 蓝色 | 信息性消息 | 呼叫连接,Diameter 请求发送 |
| 调试 | 灰色 | 调试级别消息 | 函数进入/退出,变量值 |
用例
- 实时故障排除: 在活动呼叫期间监控日志以调试问题
- 错误调查: 按错误/严重级别过滤以查找问题
- 呼叫流分析: 搜索呼叫 ID 或电话号码以追踪呼叫路径
- 性能监控: 在负载测试期间监控警告和错误
- 集成调试: 过滤 TAS 后端以查看 Diameter/Sh/Ro 消息
- 拨号计划调试: 过滤 TAS 呼叫处理以查看 FreeSWITCH 呼叫路由
- 系统健康监控: 保持日志打开以监控异常
- 开发与测试: 使用调试级别查看详细的应用程序行为
提示
- 组合过滤器: 使用来源 + 级别 + 搜索一起进行精确过滤
- 示例: 来源="TAS 后端" + 级别="错误" + 搜索="Diameter" → 查找 Diameter 错误
- 搜索前暂停: 在输入搜索查询之前暂停流以避免日志滚动
- 明智地使用调试: 调试级别非常详细 - 过滤到特定来源以减少噪音
- 颜色扫描: 快速扫描左边框 - 红色边框表示问题
- 来源徽章: 蓝色徽章(后端)用于应用逻辑,紫色徽章(呼叫处理)用于呼叫
- 时间戳精度: 毫秒时间戳有助于跨系统关联事件
- 文件引用: 点击/记录文件:行引用以跳转到源代码
- 定期清除: 在切换调查上下文时清除日志以保持清晰
- 搜索 UUID: 搜索呼叫 ID/UUID 以跟踪特定呼叫通过整个系统
- 紧急搜索: 搜索 "911" 或 "emergency" 以快速找到紧急呼叫处理
技术细节
- 日志限制: 显示最大 500 条日志(达到限制时丢弃最旧的)
- 刷新率: 每 1000 毫秒(1 秒)自动刷新
- 搜索: 仅在消息字段上进行不区分大小写的子字符串匹配
- 空过滤: 自动过滤掉空/占位符日志消息
- 来源检测: 日志标记为
:elixir或:freeswitch来源 - 排序: 日志按时间戳降序排序(最新在前)
- PubSub: Elixir 日志通过 Phoenix PubSub 交付以实现实时更新
- FreeSWITCH 日志: 通过事件套接字接口(ESI)日志监听器收集
基站数据库
管理和查询 OpenCellID 基站位置数据库,以支持紧急服务和基于位置的功能。
访问: 在控制面板中导航到 /cell_towers
功能
- 数据库统计: 查看总记录、按国家/网络的覆盖情况
- 搜索与查询:
- 按 MCC(移动国家代码)搜索
- 按 MNC(移动网络代码)搜索
- 按无线类型(GSM、UMTS、LTE)搜索
- 按位置字符串搜索
- 数据库管理:
- 导入基站数据
- 重新下载来自 OpenCellID 的最新数据集
- 查看导入状态和进度
- 位置解析: 将基站 ID 解析为地理坐标
用例
- 紧急呼叫位置确定
- 订阅者位置跟踪(经同意)
- 网络覆盖分析
- 排查漫游位置问题
- 基站数据库维护
数据源
基站数据来自 OpenCellID(https://opencellid.org/),这是一个创建全球基站位置免费数据库的协作社区项目。
呼叫模拟器
交互式呼叫模拟工具,用于测试拨号计划逻辑,而无需进行实际呼叫。
访问: 在控制面板中导航到 /simulator
详细文档: 请参见 doc/HLR_AND_CALL_SIMULATOR.md
功能
- 模拟呼叫类型: 测试 MO、MT 和紧急呼叫
- 可配置参数:
- 源和目的地号码
- 源 IP 地址(以模拟 SBC/CSCF)
- 强制特定呼叫处置
- 跳过 OCS 授权以加快测试
- 全面结果:
- 完整的拨号计划变量输出
- Sh/HLR 查找结果
- OCS 授权结果
- SS7 MAP 查询结果(如适用)
- 生成的拨号计划 XML
- 逐步处理: 查看呼叫处理的每个阶段
用例
- 在部署前测试拨号计划更改
- 验证订阅者配置
- 调试呼叫路由问题
- 培训员工了解呼叫流程
- 验证 OCS/HLR 集成
- 测试紧急呼叫处理
HLR/MAP 测试
测试 SS7 MAP 操作,包括发送路由信息(SRI)和提供漫游号码(PRN)查询。
访问: 在控制面板中导航到 /hlr
详细文档: 请参见 doc/HLR_AND_CALL_SIMULATOR.md
功能
- SRI 查询: 测试发送路由信息以进行呼叫路由
- PRN 查询: 测试提供漫游号码以供漫游订阅者使用
- 真实结果: 实际查询到配置的 MAP 网关
- 响应显示: 查看 MSRN、MSC 地址和转发状态
- 错误处理: 清晰显示 MAP 错误和超时
用例
- 验证 HLR 连接性
- 测试漫游号码分配
- 调试呼叫路由到漫游订阅者
- 验证 MAP 网关配置
- 排查呼叫转发问题
OCS 测试
直接针对您的 OCS 测试 Diameter Ro(在线计费)信用控制请求(CCR)操作。
访问: 在控制面板中导航到 /ocs_test
功能
- 灵活的 CCR 类型: 发送 INITIAL、UPDATE、TERMINATION 或 EVENT 请求
- 会话模拟: 重用相同的呼叫 ID 以模拟完整的会话生命周期
- 事件类型选择: 测试 SMS(基于事件)和呼叫(基于会话)计费
- 方向控制: 测试出站(MO)和入站(MT)场景
- 可选参数: 指定目标主机和用户名以进行高级测试
- 实时结果: 查看完整的 CCA(信用控制应答)响应
如何使用
-
输入测试参数:
- 被叫 MSISDN: 目的地号码(例如,
61400123456) - 主叫 MSISDN: 源号码(例如,
61400987654) - 事件类型: 选择
sms或call- SMS 默认使用 EVENT_REQUEST(类型 4)
- 呼叫默认使用 INITIAL_REQUEST(类型 1)
- 方向:
out表示 MO 或in表示 MT
- 被叫 MSISDN: 目的地号码(例如,
-
配置 CCR 类型:
- 请求类型: 选择 CCR 类型:
1 — INITIAL_REQUEST- 启动新会话2 — UPDATE_REQUEST- 会话中重新授权3 — TERMINATION_REQUEST- 结束会话并报告使用情况4 — EVENT_REQUEST- 一次性事件(SMS,即时事件)
- 请求编号: 从 1 开始,在同一会话中递增
- 请求类型: 选择 CCR 类型:
-
会话测试:
- 呼叫 ID: 自动生成的唯一标识符以进行关联
- 点击 "New ID" 生成新的呼叫 ID 以进行新的测试
- 保持相同的呼叫 ID 以模拟完整的会话:
- 第一个请求:INITIAL_REQUEST(类型 1,编号 1)
- 会话中:UPDATE_REQUEST(类型 2,编号 2、3、4...)
- 最后请求:TERMINATION_REQUEST(类型 3,编号 N+1)
-
高级选项:
- 目标主机: 目标特定的 OCS 节点(可选)
- 用户名: 覆盖订阅者标识符(可选)
-
运行并查看:
- 点击 "Run CCR" 发送请求
- 查看完整的 CCA 响应及所有 AVP
- 检查结果代码、授予的单位和有效时间
- 最后运行时间戳显示在右上角
用例
- OCS 连接性测试: 验证 Diameter Ro 连接和身份验证
- 信用控制逻辑: 测试信用分配、消费和耗尽场景
- 会话流测试: 模拟完整的呼叫生命周期(INITIAL → UPDATE → TERMINATION)
- 计费验证: 验证不同号码范围的正确计费率
- 故障转移测试: 通过针对特定目标主机测试 OCS 冗余
- 集成调试: 通过详细的 AVP 检查排查 OCS 集成问题
- 负载测试准备: 在负载测试之前验证 OCS 行为
- 紧急号码绕过: 验证紧急号码是否正确绕过计费
提示
- 使用相同的呼叫 ID 和递增的请求编号测试会话连续性
- 同时监控 OCS 日志以关联测试请求
- 测试 UPDATE 请求以验证会话中重新授权逻辑
- 验证 TERMINATION 请求是否正确关闭会话并防止泄漏
- 通过在消耗授予单位后发送 UPDATE 请求来测试信用耗尽
Sh 接口测试
测试 Diameter Sh 用户数据请求(UDR)操作,以从 HSS 检索订阅者配置文件数据。
访问: 在控制面板中导航到 /sh_test
功能
- 多个数据引用: 查询超过 20 种不同的订阅者数据类型
- 真实 HSS 查询: 对配置的 HSS 进行实时 Diameter Sh 请求
- 完整响应显示: 查看完整的 XML 订阅者数据和 AVP
- 会话跟踪: 显示 HSS 主机名、领域和会话 ID
- 错误处理: 清晰显示 Diameter 结果代码和错误条件
如何使用
-
输入公共身份:
- 公共身份: 订阅者的 IMS 公共身份
- 格式:
sip:61400123456@ims.mncXXX.mccXXX.3gppnetwork.org - 也可以使用
tel:+61400123456格式
-
选择数据引用: 选择要检索的订阅者数据类型:
- RepositoryData (0): 完整的订阅者配置文件
- IMSPublicIdentity (10): 公共身份列表
- IMSUserState (11): 注册状态
- S-CSCFName (12): 分配的 S-CSCF
- InitialFilterCriteria (13): iFC 触发器
- LocationInformation (14): 当前位置信息
- ChargingInformation (16): P-计费地址
- MSISDN (17): 电话号码
- IMSI (32): 国际移动用户身份
- IMSPrivateUserIdentity (33): 私人用户身份
- 还有许多其他...
-
运行并查看:
- 点击 "Fetch SH Data" 发送 UDR 请求
- 查看完整的用户数据应答(UDA)响应
- 检查订阅者配置文件 XML、服务数据和 iFC 规则
- 会话元数据显示哪个 HSS 响应
用例
- 订阅者验证: 确认订阅者在 HSS 中已配置
- iFC 调试: 查看初始过滤标准和触发点
- 注册故障排除: 检查用户状态和 S-CSCF 分配
- 计费配置: 验证 P-计费功能地址
- HSS 连接性测试: 验证 Diameter Sh 连接
- 配置文件验证: 确保分配了正确的服务配置文件
- 集成测试: 在配置更改后测试 HSS 集成
- 漫游分析: 检查位置信息和服务网络
提示
- 使用 IMSPublicIdentity (10) 查看订阅者的所有别名
- 使用 RepositoryData (0) 一次性获取完整的订阅者配置文件
- 检查 IMSUserState (11) 以验证订阅者是否已注册
- InitialFilterCriteria (13) 显示哪些应用服务器将被触发
- 会话 ID 可用于关联 HSS 日志中的查询
- 错误响应包括 Diameter 结果代码(例如,5001 = 用户未知)
号码翻译测试
测试号码翻译规则和格式,而无需进行实际呼叫。
访问: 在控制面板中导航到 /translate
功能
- 实时翻译: 输入时自动翻译
- 国家代码支持: 测试不同国家代码上下文
- 处置感知: 根据呼叫处置应用不同规则
- 实时结果: 立即反馈翻译后的号码
- 调试信息: 查看原始返回值以进行故障排除
如何使用
-
配置参数:
- 国家代码: 拨号上下文(例如,
AU、US、NZ)- 默认值为在
Tas.Config.number_translate()[:country_code]中配置的值 - 接受格式:
AU、:AU、au
- 默认值为在
- 电话号码: 要翻译的号码
- 示例:
+61400111222、0400111222、61400111222
- 示例:
- 处置: (可选)呼叫上下文以进行条件规则
- 示例:
originate、route、emergency
- 示例:
- 国家代码: 拨号上下文(例如,
-
测试翻译:
- 在表单中输入值
- 输入时自动运行翻译
- 或点击 "Translate" 手动触发
- 立即查看翻译结果
-
查看结果:
- 翻译: 显示格式化后的输出号码
- 错误: 显示验证错误或翻译失败
- 原始返回(调试): 显示完整的 Elixir 元组以进行调试
用例
- 拨号计划开发: 在部署前测试号码格式规则
- 格式验证: 验证 E.164 转换是否正常工作
- 国家代码测试: 确保正确处理国际前缀
- 紧急号码检测: 验证紧急号码是否被正确识别
- 短码处理: 测试特殊服务代码(语音邮件等)
- 中继准备: 正确格式化号码以满足 SIP 中继要求
- 处置逻辑: 测试 MO 与 MT 场景的不同规则
- 调试翻译问题: 排查特定号码为何无法路由
提示
- 测试本地格式(
0400111222)和国际格式(+61400111222) - 验证紧急号码(
000、112)是否被正确检测 - 使用处置字段测试不同的呼叫场景(MO、MT、紧急)
- 检查短码和内部号码是否被正确处理
- 调试输出显示原始返回值 - 有助于调查问题
- 测试边缘情况,如前导零、国际前缀和特殊字符
语音邮件管理
管理和收听存储在系统中的语音邮件消息。
访问: 在控制面板中导航到 /voicemail
功能
- 完整的语音邮件列表: 查看所有邮箱中的语音邮件消息
- 浏览器内播放: 直接在网页界面中收听语音邮件录音
- 消息详情: 查看用户名、UUID、时间戳、文件路径和元数据
- 删除功能: 移除单个语音邮件消息
- 自动刷新: 刷新按钮以重新加载最新的语音邮件数据
- 动态列: 自动显示所有可用的数据库字段
如何使用
-
查看语音邮件列表:
- 页面自动加载所有语音邮件记录
- 表格显示来自语音邮件数据库的所有字段
- 时间戳自动从纪元值格式化
- 文件路径缩短以提高可读性
-
收听消息:
- 点击任何语音邮件旁的 "▶ Play" 按钮
- 音频播放器出现,带有控制(播放、暂停、快��、音量)
- 支持 WAV、MP3 和 OGG 格式
- 点击 "Stop" 关闭音频播放器
-
删除消息:
- 点击 "Delete" 按钮以移除语音邮件
- 确认提示防止意外删除
- 成功删除后页面自动刷新
-
刷新数据:
- 点击右上角的 "Refresh" 按钮以重新加载语音邮件列表
- 在新语音邮件被留下后非常有用
显示的消息详情
表格动态显示所有可用字段,通常包括:
- 用户名: 邮箱所有者
- UUID: 唯一消息标识符
- 创建纪元: 消息留下的时间(自动格式化为可读日期/时间)
- 读取纪元: 消息被访问的时间(如适用)
- 文件路径: 音频文件的位置
- 来自语音邮件数据库的其他元数据
用例
- 订阅者支持: 收听语音邮件消息以进行故障排除
- 测试语音邮件交付: 验证语音邮件是否正确存储
- 消息管理: 清理旧的或测试的语音邮件消息
- 故障排除录音问题: 检查文件路径并验证音频文件是否存在
- 邮箱维护: 监控语音邮件存储和使用情况
- 质量保证: 审核录制的消息以确保音频质量
提示
- 文件路径自动缩短以仅显示相关部分
- 纪元时间戳自动转换为人类可读格式
- 空的语音邮件数据库显示 "未找到语音邮件记录"
- 音频播放使用 HTML5 音频元素 - 在所有现代浏览器中受支持
- 删除确认防止意外删除重要消息
TTS 提示管理
管理系统中使用的文本到语音(TTS)生成的音频提示。
访问: 在控制面板中导航到 /prompts
功能
- 提示设置显示: 查看当前 TTS 语音、响应格式和指令
- 录音状态: 查看哪些提示存在,哪些缺失
- 文件详情: 查看每个提示的文件大小、修改时间和路径
- 浏览器内播放: 直接在网页界面中收听提示
- 生成缺失: 自动创建所有缺失的提示文件
- 重新录制单个: 使用更新的设置重新生成特定提示
- 重新录制所有: 重新生成所有提示(在更改语音或设置后非常有用)
如何使用
-
查看提示设置:
- 语音: 正在使用的 TTS 语音(例如,
alloy、nova、shimmer) - 响应格式: 音频格式(例如,
wav、mp3、opus) - 指令: 传递给 TTS 引擎的特殊指令
- 语音: 正在使用的 TTS 语音(例如,
-
检查录音状态:
- 文本: 要说出的提示文本
- 相对路径: 音频文件存储的位置
- 存在: 如果文件存在则为绿色 "是",如果缺失则为黄色 "否"
- 大小: 文件大小以字节/KiB/MiB 为单位
- 修改: 最后修改时间戳
-
生成提示:
- 生成缺失: 仅创建尚不存在的提示
- 在初始设置或添加新提示后非常有用
- 重新录制所有: 无论存在与否,重新生成所有提示
- 在更改语音、格式或指令后非常有用
- 使用时请谨慎,因为它会重新生成所有内容
- 生成缺失: 仅创建尚不存在的提示
-
管理单个提示:
- ▶ 播放: 收听提示(仅在文件存在时启用)
- 🔄 重新录制: 仅重新生成此一个提示
- 如果某个提示听起来不正确非常有用
- 使用当前的语音和设置
-
收听提示:
- 点击 "▶ Play" 收听提示
- 音频播放器出现在底部,带有完整控制
- 点击 "Stop" 关闭播放器
提示配置
提示在您的应用程序配置中配置:
config :tas, :prompts,
voice: "nova",
response_format: "wav",
instructions: "Speak clearly and professionally.",
recordings: [
%{path: "/sounds/en/us/callie/voicemail/vm-enter_id.wav",
text: "Please enter your mailbox ID followed by pound"},
# ... 更多提示
]
用例
- 初始设置: 在系统安装后生成所有提示
- 语音更改: 使用不同的 TTS 语音重新录制所有提示
- 质量改进: 修复听起来不正确的单个提示
- 格式更新: 以不同的音频格式(wav → mp3)重新生成提示
- 文本更新: 在配置中更改提示文本后重新录制
- 测试 TTS: 在部署前预览提示的声音
- 故障排除播放: 验证提示文件是否存在且可访问
- 存储管理: 检查文件大小并管理磁盘使用情况
提示
- 使用 "Generate Missing" 进行初始设置 - 它不会覆盖现有提示
- 在配置中更改语音或格式后使用 "Re-record All"
- 单个 "Re-record" 对于特定提示的迭代非常有用
- 在部署前收听提示以确保质量
- 较大的响应格式(wav)具有更好的质量,但使用更多磁盘空间
- 指令字段可以指导 TTS 引擎的语调和节奏
- 重新录制可能需要时间,如果您有很多提示 - 请耐心等待
- 提示存储在 FreeSWITCH 声音目录中,便于访问
拨号计划 XML 模板
查看和检查用于呼叫路由的 FreeSWITCH 拨号计划 XML 模板。
访问: 在控制面板中导航到 /routing
功能
- 模板列表: 查看来自
priv/templates/目录的所有 XML 拨号计划模板 - 文件详情: 查看每个模板的文件名和最后修改时间戳
- 语法高亮: 颜色编码的 XML 显示,便于阅读
- 标签为青色
- 属性为浅蓝色
- 值为橙色/棕色
- 注释为绿色
- 可展开视图: 点击任何模板以查看其完整的 XML 内容
- 只读视图: 安全检查而不风险意外修改
- 可滚动内容: 大模板在固定高度容器内滚动(最大 600px)
如何使用
-
查看模板列表:
- 页面加载来自模板目录的所有
.xml文件 - 按文件名字母顺序排序
- 显示每个文件的修改时间戳
- 页面加载来自模板目录的所有
-
检查模板:
- 点击任何行以展开并查看 XML 内容
- 模板以语法高亮显示
- 再次点击以折叠
-
阅读 XML 内容:
- 标签(青色):XML 元素名称,如
<extension>、<condition> - 属性(浅蓝色):属性名称,如
name=、field= - 值(橙色):属性值,如
"public"、"destination_number" - 注释(绿色):XML 注释
<!-- ... -->
- 标签(青色):XML 元素名称,如
用例
- 审核拨号计划逻辑: 检查路由规则和呼叫流模板
- 故障排除呼叫路由: 理解不同呼叫类型使用的模板
- 验证模板语法: 在部署前检查 XML 结构
- 培训与文档: 与团队成员分享模板内容
- 更改审计: 比较修改时间戳以跟踪更新
- 模板开发: 在创建新模板时参考现有模板
提示
- 模板从 TAS 应用程序中的
priv/templates/加载 - 仅显示
.xml文件 - 通过网页界面以只读方式查看模板
- 修改时间戳有助于识别最近的更改
- 使用此视图验证模板是否符合您的拨号计划预期
- 语法高亮使复杂的 XML 更易于视觉解析
- 与
/logs视图结合使用以关联路由行为与模板
技术细节
- 位置: 模板存储在
priv/templates/目录中 - 格式: FreeSWITCH XML 拨号计划格式
- 文件扩展名: 仅列出
.xml文件 - 排序: 按文件名字母顺序排序
- 语法高亮: 使用正则表达式模式进行客户端颜色化
- 最大显示高度: 600px,较大文件滚动
ESL 命令运行器
直接从网页界面执行 FreeSWITCH 事件套接字层(ESL)命令。
访问: 在控制面板中导航到 /command
功能
- 命令执行: 运行任何 ESL/FreeSWITCH API 命令
- 实时输出: 实时查看命令结果
- 命令历史: 最近命令下拉菜单(最后 10 个命令)
- 自动完成准备: 等宽输入以精确输入命令
- 错误处理: 清晰显示命令错误和异常
- 无自动执行: 选择历史填充输入,但需要明确点击 "Run"
如何使用
-
输入命令:
- 在输入框中键入 ESL 命令
- 示例:
status- 显示 FreeSWITCH 状态show channels- 列出活动呼叫uuid_dump <uuid>- 转储呼叫的所有变量sofia status- 显示 SIP 配置文件状态reloadxml- 重新加载 XML 拨号计划version- 显示 FreeSWITCH 版本
-
运行命令:
- 点击 "Run" 按钮以执行
- 按钮在执行时显示 "Running…"
- 不能同时运行多个命令
-
查看输出:
- 结果出现在下方的 "Output" 部分
- 成功的命令显示原始响应
- 错误以 "ERROR:" 前缀显示
- 输出可滚动,最大高度为 600px
- 等宽字体以对齐数据
-
使用命令历史:
- 最近的命令在第一次执行后出现在下拉菜单中
- 从 "Recent:" 下拉菜单中选择以填充输入框
- 历史保持最后 10 个唯一命令
- 最近的命令在顶部
- 选择历史不会自动��行(安全功能)
常用命令
| 命令 | 描述 | 示例输出 |
|---|---|---|
status | 系统状态和正常运行时间 | FreeSWITCH 运行信息 |
show channels | 列出所有活动呼叫 | 呼叫列表或 "0 total" |
show calls | 活动呼叫的摘要 | 呼叫计数摘要 |
uuid_dump <uuid> | 呼叫的所有变量 | 完整的变量转储 |
uuid_kill <uuid> | 挂断特定呼叫 | "+OK" 或错误 |
sofia status | SIP 配置文件状态 | 配置文件列表和状态 |
sofia status profile <name> | 特定配置文件详情 | 注册计数等 |
reloadxml | 重新加载拨号计划 XML | "+OK" 确认 |
version | FreeSWITCH 版本信息 | 版本字符串 |
global_getvar <var> | 获取全局变量 | 变量值 |
api help | 列出可用命令 | 命令参考 |
用例
- 呼叫调试: 使用
uuid_dump获取活动呼叫的详细信息 - 系统状态: 使用
status和show calls检查 FreeSWITCH 健康状况 - SIP 故障排除: 使用
sofia status检查 SIP 配置文件 - 拨号计划重新加载: 使用
reloadxml应用配置更改 - 紧急操作: 使用
uuid_kill挂断卡住的呼叫 - 变量检查: 检查全局或通道变量
故障排除
订阅者未显示
- 验证 OmniTAS 是否正在运行
- 检查 Sofia 配置文件是否处于活动状态:
sofia status profile internal - 验证配置中的数据库路径是否与实际数据库位置匹配
CDR 记录未出现
- 确认 OmniTAS CDR 模块已加载
- 检查 CDR 数据库是否存在于配置路径
- 验证 OmniTAS 中的 CDR 模块配置
性能考虑
- 大型 CDR 数据库(>1M 记录)可能需要额外索引以实现最佳性能
- 考虑定期归档旧的 CDR 记录
- 订阅者注册查询通常很快,因为注册数据库很小
配置
访问控制
控制面板应部署在适当的访问控制(防火墙、VPN、身份验证)之后,因为它提供了对订阅者活动和呼叫记录的可见性。