跳到主要内容

操作指南

📖 返回主文档

本文档涵盖了控制面板中可用的操作监控和管理功能。

相关文档

核心文档

监控与测试工具

呼叫处理与服务

集成接口


操作

本节涵盖了 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
    • 🟡 黄色: 取消的呼叫
    • 🔴 红色: 错误条件
  • 总计数: 实时显示总匹配记录
  • 响应式布局: 在较小屏幕上适当换行过滤器

如何使用

  1. 基本��看:

    • 页面加载最新的 100 条 CDR 记录(按 start_stamp 降序排序)
    • 右上角显示总记录数
    • 使用 Previous / Next 按钮导航页面
    • 点击任何行以展开并查看所有字段
  2. 自定义列:

    • 点击右上角的 "Columns" 按钮
    • 模态框显示所有可用字段
    • 勾选/取消勾选字段以显示/隐藏列
    • 使用 "Select All""Deselect All" 进行快速选择
    • 设置自动保存到浏览器
    • 关闭模态框以应用更改
  3. 排序数据:

    • 点击任何列标题按该字段排序
    • 第一次点击:降序 (▼)
    • 第二次点击:升序 (▲)
    • 第三次点击:返回降序
    • 排序列以蓝色高亮显示
  4. 搜索记录:

    • "Search" 框中输入搜索查询
    • 支持高级运算符(见下面的搜索语法)
    • 在多个字段中搜索: caller_id_numberdestination_numberuuidcaller_id_namehangup_cause
    • 点击 "Apply" 执行搜索
  5. 按日期范围过滤:

    • 使用 "Start Date""End Date" 日期时间选择器
    • 过滤日期时需要两个日期
    • 支持日期和时间选择
    • 点击 "Apply" 进行过滤
  6. 按特定字段过滤:

    • "Select Field to Filter" 下���菜单中选择字段:
      • 挂断原因
      • 来电 ID
      • 目的地
      • 上下文
    • "Enter Filter Value" 中输入确切值
    • 点击 "Apply" 进行过滤
  7. 组合过滤器:

    • 所有过滤器可以同时使用:
      • 文本搜索 + 日期范围 + 字段过滤器都可以一起工作
    • 活动过滤器显示为过滤表单下方的芯片
    • 点击 "Clear All" 一次性移除所有过滤器
  8. 查看详细信息:

    • 点击任何 CDR 行以展开
    • 以网格布局显示所有数据库字段
    • 字段按字母顺序显示
    • 挂断原因颜色编码以便快速识别
    • 再次点击行以折叠

高级搜索语法

搜索框支持强大的查询语法,以便在多个字段中同时精确过滤记录。

搜索工作原理:

搜索引擎检查每个 CDR 记录中的 所有可搜索字段。当记录在 任何 这些字段中匹配您的搜索条件时,该记录将包含在结果中:

  • caller_id_number
  • destination_number
  • uuid
  • caller_id_name
  • hangup_cause

搜索运算符(可以组合):

  1. 包含搜索(默认):

    • 语法: term(无引号)
    • 匹配: 记录中 任何字段包含 该术语
    • SQL: 在所有可搜索字段中使用 LIKE '%term%' 连接 OR
    • 示例: 61480 匹配 "61480123456"、"55561480999" 等。
  2. 精确匹配:

    • 语法: "term"(带双引号)
    • 匹配: 记录中 任何字段完全等于 该术语
    • SQL: 在所有可搜索字段中使用 = 'term' 连接 OR
    • 示例: "911" 仅匹配完全 "911",而不匹配 "9115" 或 "1911"
  3. 反向/排除:

    • 语法: !term(感叹号前缀,无引号)
    • 匹配: 记录中 没有字段包含 该术语
    • SQL: 在所有可搜索字段中使用 NOT LIKE '%term%' 连接 AND
    • 示例: !NORMAL 排除任何在任何字段中包含 "NORMAL" 的记录
  4. 精确反向/排除:

    • 语法: !"term"(感叹号 + 双引号)
    • 匹配: 记录中 没有字段完全等于 该术语
    • SQL: 在所有可搜索字段中使用 != 'term' 连接 AND
    • 示例: !"NORMAL_CLEARING" 排除任何字段完全为 "NORMAL_CLEARING" 的记录
  5. 多个术语与 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 文档。

故障排除

未找到结果
  1. 检查搜索术语中的拼写错误
  2. 尝试去掉引号以进行更广泛的搜索
  3. 验证术语是否存在于可搜索字段中
  4. 检查日期范围是否过于严格
结果过多
  1. 添加更多 AND 术语以缩小范围
  2. 使用引号进行精确匹配
  3. 应用日期范围过滤
  4. 使用字段特定过滤器
结果意外
  1. 记住搜索适用于 所有可搜索字段
  2. 检查术语是否出现在意外字段中(如 UUID)
  3. 使用精确匹配以避免部分匹配
  4. 验证反向逻辑(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 条日志条目以提高性能
  • 元数据展示: 文件名和行号用于源代码引用(如可用)
  • 可滚动视图: 固定高度容器,最新日志自动滚动

如何使用

  1. 基本查看:

    • 页面加载最新的 500 条来自两个来源的日志条目
    • 日志实时生成
    • 最近的日志出现在顶部
    • 每 1 秒自动刷新
  2. 按来源过滤:

    • "Source" 下拉菜单中选择:
      • 所有来源 - 显示 TAS 后端和呼叫处理的日志
      • TAS 后端 - 仅 Elixir 应用日志
      • TAS 呼叫处理 - 仅 FreeSWITCH/拨号计划日志
    • 过滤立即应用
  3. 按日志级别过滤:

    • "Level" 下拉菜单中选择:
      • 所有 - 显示所有日志级别
      • 控制台调试 - 仅显示该特定级别
    • 有助于专注于错误或调试特定问题
  4. 搜索关键字:

    • "Search logs..." 框中输入
    • 不区分大小写地在日志消息中搜索
    • 输入时实时过滤
    • 与来源和级别过滤器结合使用
  5. 暂停/恢复流:

    • 点击 "Pause" 按钮(橙色)以冻结日志更新
    • "PAUSED" 指示器出现在标题中
    • 在不干扰新日志的情况下查看特定日志条目
    • 点击 "Resume" 按钮(绿色)以重新启动实时流
  6. 清除日志:

    • 点击 "Clear" 按钮(红色)以删除所有显示的日志
    • 清除 TAS 后端和呼叫处理的日志
    • 新日志将在生成时出现
  7. 阅读日志条目:

    • 时间戳: 以 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(信用控制应答)响应

如何使用

  1. 输入测试参数:

    • 被叫 MSISDN: 目的地号码(例如,61400123456
    • 主叫 MSISDN: 源号码(例如,61400987654
    • 事件类型: 选择 smscall
      • SMS 默认使用 EVENT_REQUEST(类型 4)
      • 呼叫默认使用 INITIAL_REQUEST(类型 1)
    • 方向: out 表示 MO 或 in 表示 MT
  2. 配置 CCR 类型:

    • 请求类型: 选择 CCR 类型:
      • 1 — INITIAL_REQUEST - 启动新会话
      • 2 — UPDATE_REQUEST - 会话中重新授权
      • 3 — TERMINATION_REQUEST - 结束会话并报告使用情况
      • 4 — EVENT_REQUEST - 一次性事件(SMS,即时事件)
    • 请求编号: 从 1 开始,在同一会话中递增
  3. 会话测试:

    • 呼叫 ID: 自动生成的唯一标识符以进行关联
    • 点击 "New ID" 生成新的呼叫 ID 以进行新的测试
    • 保持相同的呼叫 ID 以模拟完整的会话:
      • 第一个请求:INITIAL_REQUEST(类型 1,编号 1)
      • 会话中:UPDATE_REQUEST(类型 2,编号 2、3、4...)
      • 最后请求:TERMINATION_REQUEST(类型 3,编号 N+1)
  4. 高级选项:

    • 目标主机: 目标特定的 OCS 节点(可选)
    • 用户名: 覆盖订阅者标识符(可选)
  5. 运行并查看:

    • 点击 "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 结果代码和错误条件

如何使用

  1. 输入公共身份:

    • 公共身份: 订阅者的 IMS 公共身份
    • 格式: sip:61400123456@ims.mncXXX.mccXXX.3gppnetwork.org
    • 也可以使用 tel:+61400123456 格式
  2. 选择数据引用: 选择要检索的订阅者数据类型:

    • 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): 私人用户身份
    • 还有许多其他...
  3. 运行并查看:

    • 点击 "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

功能

  • 实时翻译: 输入时自动翻译
  • 国家代码支持: 测试不同国家代码上下文
  • 处置感知: 根据呼叫处置应用不同规则
  • 实时结果: 立即反馈翻译后的号码
  • 调试信息: 查看原始返回值以进行故障排除

如何使用

  1. 配置参数:

    • 国家代码: 拨号上下文(例如,AUUSNZ
      • 默认值为在 Tas.Config.number_translate()[:country_code] 中配置的值
      • 接受格式: AU:AUau
    • 电话号码: 要翻译的号码
      • 示例: +61400111222040011122261400111222
    • 处置: (可选)呼叫上下文以进行条件规则
      • 示例: originaterouteemergency
  2. 测试翻译:

    • 在表单中输入值
    • 输入时自动运行翻译
    • 或点击 "Translate" 手动触发
    • 立即查看翻译结果
  3. 查看结果:

    • 翻译: 显示格式化后的输出号码
    • 错误: 显示验证错误或翻译失败
    • 原始返回(调试): 显示完整的 Elixir 元组以进行调试

用例

  • 拨号计划开发: 在部署前测试号码格式规则
  • 格式验证: 验证 E.164 转换是否正常工作
  • 国家代码测试: 确保正确处理国际前缀
  • 紧急号码检测: 验证紧急号码是否被正确识别
  • 短码处理: 测试特殊服务代码(语音邮件等)
  • 中继准备: 正确格式化号码以满足 SIP 中继要求
  • 处置逻辑: 测试 MO 与 MT 场景的不同规则
  • 调试翻译问题: 排查特定号码为何无法路由

提示

  • 测试本地格式(0400111222)和国际格式(+61400111222
  • 验证紧急号码(000112)是否被正确检测
  • 使用处置字段测试不同的呼叫场景(MO、MT、紧急)
  • 检查短码和内部号码是否被正确处理
  • 调试输出显示原始返回值 - 有助于调查问题
  • 测试边缘情况,如前导零、国际前缀和特殊字符

语音邮件管理

管理和收听存储在系统中的语音邮件消息。

访问: 在控制面板中导航到 /voicemail

功能

  • 完整的语音邮件列表: 查看所有邮箱中的语音邮件消息
  • 浏览器内播放: 直接在网页界面中收听语音邮件录音
  • 消息详情: 查看用户名、UUID、时间戳、文件路径和元数据
  • 删除功能: 移除单个语音邮件消息
  • 自动刷新: 刷新按钮以重新加载最新的语音邮件数据
  • 动态列: 自动显示所有可用的数据库字段

如何使用

  1. 查看语音邮件列表:

    • 页面自动加载所有语音邮件记录
    • 表格显示来自语音邮件数据库的所有字段
    • 时间戳自动从纪元值格式化
    • 文件路径缩短以提高可读性
  2. 收听消息:

    • 点击任何语音邮件旁的 "▶ Play" 按钮
    • 音频播放器出现,带有控制(播放、暂停、快��、音量)
    • 支持 WAV、MP3 和 OGG 格式
    • 点击 "Stop" 关闭音频播放器
  3. 删除消息:

    • 点击 "Delete" 按钮以移除语音邮件
    • 确认提示防止意外删除
    • 成功删除后页面自动刷新
  4. 刷新数据:

    • 点击右上角的 "Refresh" 按钮以重新加载语音邮件列表
    • 在新语音邮件被留下后非常有用

显示的消息详情

表格动态显示所有可用字段,通常包括:

  • 用户名: 邮箱所有者
  • UUID: 唯一消息标识符
  • 创建纪元: 消息留下的时间(自动格式化为可读日期/时间)
  • 读取纪元: 消息被访问的时间(如适用)
  • 文件路径: 音频文件的位置
  • 来自语音邮件数据库的其他元数据

用例

  • 订阅者支持: 收听语音邮件消息以进行故障排除
  • 测试语音邮件交付: 验证语音邮件是否正确存储
  • 消息管理: 清理旧的或测试的语音邮件消息
  • 故障排除录音问题: 检查文件路径并验证音频文件是否存在
  • 邮箱维护: 监控语音邮件存储和使用情况
  • 质量保证: 审核录制的消息以确保音频质量

提示

  • 文件路径自动缩短以仅显示相关部分
  • 纪元时间戳自动转换为人类可读格式
  • 空的语音邮件数据库显示 "未找到语音邮件记录"
  • 音频播放使用 HTML5 音频元素 - 在所有现代浏览器中受支持
  • 删除确认防止意外删除重要消息

TTS 提示管理

管理系统中使用的文本到语音(TTS)生成的音频提示。

访问: 在控制面板中导航到 /prompts

功能

  • 提示设置显示: 查看当前 TTS 语音、响应格式和指令
  • 录音状态: 查看哪些提示存在,哪些缺失
  • 文件详情: 查看每个提示的文件大小、修改时间和路径
  • 浏览器内播放: 直接在网页界面中收听提示
  • 生成缺失: 自动创建所有缺失的提示文件
  • 重新录制单个: 使用更新的设置重新生成特定提示
  • 重新录制所有: 重新生成所有提示(在更改语音或设置后非常有用)

如何使用

  1. 查看提示设置:

    • 语音: 正在使用的 TTS 语音(例如,alloynovashimmer
    • 响应格式: 音频格式(例如,wavmp3opus
    • 指令: 传递给 TTS 引擎的特殊指令
  2. 检查录音状态:

    • 文本: 要说出的提示文本
    • 相对路径: 音频文件存储的位置
    • 存在: 如果文件存在则为绿色 "是",如果缺失则为黄色 "否"
    • 大小: 文件大小以字节/KiB/MiB 为单位
    • 修改: 最后修改时间戳
  3. 生成提示:

    • 生成缺失: 仅创建尚不存在的提示
      • 在初始设置或添加新提示后非常有用
    • 重新录制所有: 无论存在与否,重新生成所有提示
      • 在更改语音、格式或指令后非常有用
      • 使用时请谨慎,因为它会重新生成所有内容
  4. 管理单个提示:

    • ▶ 播放: 收听提示(仅在文件存在时启用)
    • 🔄 重新录制: 仅重新生成此一个提示
      • 如果某个提示听起来不正确非常有用
      • 使用当前的语音和设置
  5. 收听提示:

    • 点击 "▶ 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)

如何使用

  1. 查看模板列表:

    • 页面加载来自模板目录的所有 .xml 文件
    • 按文件名字母顺序排序
    • 显示每个文件的修改时间戳
  2. 检查模板:

    • 点击任何行以展开并查看 XML 内容
    • 模板以语法高亮显示
    • 再次点击以折叠
  3. 阅读 XML 内容:

    • 标签(青色):XML 元素名称,如 <extension><condition>
    • 属性(浅蓝色):属性名称,如 name=field=
    • (橙色):属性值,如 "public""destination_number"
    • 注释(绿色):XML 注释 <!-- ... -->

用例

  • 审核拨号计划逻辑: 检查路由规则和呼叫流模板
  • 故障排除呼叫路由: 理解不同呼叫类型使用的模板
  • 验证模板语法: 在部署前检查 XML 结构
  • 培训与文档: 与团队成员分享模板内容
  • 更改审计: 比较修改时间戳以跟踪更新
  • 模板开发: 在创建新模板时参考现有模板

提示

  • 模板从 TAS 应用程序中的 priv/templates/ 加载
  • 仅显示 .xml 文件
  • 通过网页界面以只读方式查看模板
  • 修改时间戳有助于识别最近的更改
  • 使用此视图验证模板是否符合您的拨号计划预期
  • 语法高亮使复杂的 XML 更易于视觉解析
  • /logs 视图结合使用以关联路由行为与模板

技术细节

  • 位置: 模板存储在 priv/templates/ 目录中
  • 格式: FreeSWITCH XML 拨号计划格式
  • 文件扩展名: 仅列出 .xml 文件
  • 排序: 按文件名字母顺序排序
  • 语法高亮: 使用正则表达式模式进行客户端颜色化
  • 最大显示高度: 600px,较大文件滚动

ESL 命令运行器

直接从网页界面执行 FreeSWITCH 事件套接字层(ESL)命令。

访问: 在控制面板中导航到 /command

功能

  • 命令执行: 运行任何 ESL/FreeSWITCH API 命令
  • 实时输出: 实时查看命令结果
  • 命令历史: 最近命令下拉菜单(最后 10 个命令)
  • 自动完成准备: 等宽输入以精确输入命令
  • 错误处理: 清晰显示命令错误和异常
  • 无自动执行: 选择历史填充输入,但需要明确点击 "Run"

如何使用

  1. 输入命令:

    • 在输入框中键入 ESL 命令
    • 示例:
      • status - 显示 FreeSWITCH 状态
      • show channels - 列出活动呼叫
      • uuid_dump <uuid> - 转储呼叫的所有变量
      • sofia status - 显示 SIP 配置文件状态
      • reloadxml - 重新加载 XML 拨号计划
      • version - 显示 FreeSWITCH 版本
  2. 运行命令:

    • 点击 "Run" 按钮以执行
    • 按钮在执行时显示 "Running…"
    • 不能同时运行多个命令
  3. 查看输出:

    • 结果出现在下方的 "Output" 部分
    • 成功的命令显示原始响应
    • 错误以 "ERROR:" 前缀显示
    • 输出可滚动,最大高度为 600px
    • 等宽字体以对齐数据
  4. 使用命令历史:

    • 最近的命令在第一次执行后出现在下拉菜单中
    • 从 "Recent:" 下拉菜单中选择以填充输入框
    • 历史保持最后 10 个唯一命令
    • 最近的命令在顶部
    • 选择历史不会自动��行(安全功能)

常用命令

命令描述示例输出
status系统状态和正常运行时间FreeSWITCH 运行信息
show channels列出所有活动呼叫呼叫列表或 "0 total"
show calls活动呼叫的摘要呼叫计数摘要
uuid_dump <uuid>呼叫的所有变量完整的变量转储
uuid_kill <uuid>挂断特定呼叫"+OK" 或错误
sofia statusSIP 配置文件状态配置文件列表和状态
sofia status profile <name>特定配置文件详情注册计数等
reloadxml重新加载拨号计划 XML"+OK" 确认
versionFreeSWITCH 版本信息版本字符串
global_getvar <var>获取全局变量变量值
api help列出可用命令命令参考

用例

  • 呼叫调试: 使用 uuid_dump 获取活动呼叫的详细信息
  • 系统状态: 使用 statusshow 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、身份验证)之后,因为它提供了对订阅者活动和呼叫记录的可见性。