通话详单 (CDR) 完整指南

介绍

本指南详尽解释了通话详单 (CDR) 在 cdroutput 表中的结构,以便从 Grafana 和其他 BI 工具创建仪表板。

标识与结构字段

这些字段定义了整个呼叫流,并为每个 CDR 提供唯一标识。

  • cdr_id:
  • 描述: 特定 CDR 记录的唯一标识符。
  • 格式详情:
  • object_creation_timestamp_string: 一个 16 字符、零填充的十六进制字符串,表示自纪元以来的 UTC 时间戳。
  • object_id_string: 一个零填充的十六进制字符串,表示自动递增的计数器。该计数器特定于对象类型(CDR、call_history_id 或 participant)。
  • 示例: 00000000-01db-aef6-c109-60ec0000004c
  • call_history_id:
  • 描述: 整个呼叫流的唯一标识符。一个呼叫流由一组共享相同 call_history_id 的 CDR 组成。
  • 示例: 00000000-01db-aef6-ba9a-df6b0000000b
  • main_call_history_id:
  • 描述: 已合并呼叫流的标识符(如果未合并,则与 call_history_id 相同)。
  • source_participant_id / destination_participant_id:
  • 指示参与者之间呼叫路由的标识符。
  • 示例: 00000000-01db-aef6-ba9b-33830000004d

注意: 所有这些标识符都以 UUID 格式提供,其中前 4 个字节为 0,接着是 8 字节的 UTC 时间戳,然后是 4 字节由呼叫管理器分配的、内部自动递增的标识符。内部标识符在重启时重置为 1。

  • cdr_id: 特定 CDR 条目的唯一 ID。
  • 格式: UUID,前 4 字节为 0,8 字节 UTC 时间戳,4 字节自动递增。
  • 示例: 00000000-01db-aef6-c109-60ec0000004c
  • call_history_id: 整个呼叫流的唯一标识符。
  • 示例: 00000000-01db-aef6-ba9a-df6b0000000b
  • main_call_history_id: 已合并呼叫流的标识符(如果未合并,则与 call_history_id 相同)。
  • source_participant_id / destination_participant_id: 指示参与者之间呼叫路由的标识符。

关系与路由字段

这些字段建立了 CDR 之间的关系,显示新的 CDR 如何在呼叫流中与之前的 CDR 相关联。这对于理解呼叫转移、路由更改和其他动态呼叫场景至关重要。

  • base_cdr_id:
  • 描述: 当前 CDR 正在修改的上一个 CDR 的标识符。这将当前 CDR 链接到其在呼叫流中的直接前驱。
  • originating_cdr_id:
  • 描述: 发起新路由分支的 CDR 的标识符。用于追溯路由请求链。
  • continued_in_cdr_id:
  • 描述: 指示呼叫是否继续进入另一个 CDR 的标识符。

注意:这两个字段也是 uuid 类型,它们存储对相应 cdr_id (uuid) 的引用。

  • base_cdr_id / originating_cdr_id: 将当前 CDR 链接到先前的记录。
  • continued_in_cdr_id: 指示呼叫是否继续进入另一个 CDR。
  • creation_method: 导致 CDR 创建的操作 (call_init, route_to, transfer, divert)。
  • creation_forward_reason: 呼叫转发的理由 (no_answer, busy, forward_all)。

源字段

  • source_presentation:
  • 描述: 源参与者信息(例如显示名称)的替代呈现方式,如同呈现给目的地一样。
  • 目的: 当源的显示名称被替换以显示给目的地时很重要。
  • 示例: (例如,修改后的主叫方名称)

参与者信息字段(源与目的地)

  • entity_type: 参与实体的类型 (extension, queue, ivr, external_line)。
  • : unknown, end_call, service_call, inbound_routing, voicemail, fax, external_line
  • dn_type: dn号码类型。
  • :specialmenu, extension, group, ring_group_hunt, ivr, queue, paging_group, conference, script, shared_parking, provider
  • dn_number / dn_name: dn号码和名称。
  • 示例: 号码:  800, 名称: Q DAMAC
  • participant_name / participant_phone_number: 派生自 SIP 显示名或联系人查找。
  • participant_trunk_did: 入站中继呼叫的 DID 号码。
  • participant_is_incoming / participant_is_already_connected: 布尔字段,指示呼叫状态和方向。
  • source_presentation: 显示给目的地的名称。
  • participant_group_name / participant_billing_suffix: 用于计费的组和账单详细信息。

参与者字段

这些字段提供有关呼叫中涉及的参与者的详细信息,包括源和目的地。每个参与者的信息都包含在 CDR 中,字段名称以 "source_" 或 "destination_" 为前缀以作区分。

  • entity_type:
  • 描述: 定义参与呼叫流的实体类型。entity_type 是 dn_type 的超集,即它可以被指定为任何 dn_type 的值,也可以设置为代表 DN 工作的实体。
  • :
  • unknown: 目的地不存在或源未被识别。
  • end_call: 表示当呼叫管理器想要播放告别消息(即播放忙音提示)时报告的目的地的实体。
  • service_call: 当呼叫管理器内部处理拨号代码时使用。
  • inbound_routing: 当中继发起呼叫时,call_init CDR 的目的地参与者。
  • outbound_rule: 此条目没有关联的 DN。
  • voicemail: 参与者正在留下语音邮件。
  • fax: 参与者正在发送传真。
  • external_line: 目的地是外部线路(中继),具体类型在 dn_type 中指定。
  • dn_type:
  • 描述: 目录号码的类型。
  • :
  • specialmenu - 系统分机语音信箱 (System Extension Voicemail)
  • extension - 内部分机 (Internal Extension)
  • group - 部门 (Departments)
  • ring_group_hunt - 策略为轮询 (hunt) 的振铃组 (Ring Group)
  • ring_group_ring_all - 策略为全振 (ring all) 的振铃组。
  • ivr - 数字接待员 (Digital Receptionists)
  • fax - 传真,包括 3CX 主传真和其他传真。
  • queue - 队列 (Queues)
  • paging_group - 策略为寻呼 (paging) 的振铃组。
  • conference - 会议服务器 (Conference Server)
  • script - 呼叫处理脚本 (Call Processing Scripts)
  • shared_parking - 共享驻留 (Shared Parking)
  • parking_orbit - 驻留轨道 (Parking Orbits)
  • echo_test - 回声测试呼叫 (Echo Test Call)
  • callback_test - 回拨测试 (Call Back Test)
  • bridge - 网桥 (Bridges) (主网桥 & 从网桥)
  • provider - 中继 (Trunks) (提供商 & 网关)
  • dn_number:
  • 描述: 与参与者关联的dn号码。
  • 示例: 1004 (分机), 8002 (振铃组)
  • dn_name:
  • 描述: 暴露参与者的条目的名称。
  • :
  • 对于队列 (Queue)、振铃组 (RingGroup)、IVR、组 (Group): 对象的名称。
  • 对于分机 (Extension): 分机的名称。
  • 对于路由点 (RoutePoint): RoutePoint DN 的 CF_APP_NAME 属性。
  • 对于外部线路 (ExternalLine): 中继的名称。
  • 示例: RGH (振铃组), 104, John Smith (分机 104)
  • participant_name:
  • 描述: 参与者的名称。
  • 来源: 派生自 SIP 显示名称或联系人查找信息。
  • 注意: 对于本地实体,它应是 dn_name 的副本。
  • 示例: 104, John Smith
  • participant_phone_number:
  • 描述: 参与者的电话号码。
  • :
  • 对于本地参与者: 等于 dn_number。
  • 对于外部参与者:
  • 呼出呼叫: 被叫号码。
  • 呼入呼叫: 主叫 ID。
  • 示例: 1004 (本地分机), 2055544422 (外部号码)
  • participant_trunk_did:
  • 描述: 中继呼入呼叫的 DID (直接向内拨号) 号码。
  • 注意: 外部参与者有两个电话号码: participant_phone_number 和 participant_trunk_did。
  • 示例: (例如,呼入呼叫的被叫号码)
  • participant_is_incoming:
  • 描述: 指示参与者呼叫的方向。
  • : 布尔值 (true 或 false) - true=呼入, false=呼出
  • participant_is_already_connected:
  • 描述: 指示参与者在 CDR 开始时是否已连接。
  • : 布尔值 (例如, false=未连接, true=已连接)

创建原因字段

这些字段解释了 CDR 创建的原因,为呼叫流提供上下文。

  • creation_method:
  • 描述: 导致 CDR 创建的操作。
  • :
  • call_init: 新呼叫的初始 CDR。
  • pickup: 参与者接听了呼叫。
  • divert: 呼叫被转移(重定向)。
  • route_to: 呼叫被路由到新的目的地。
  • transfer: 呼叫被转接。
  • join: 参与者被加入到现有呼叫中(协商转接)。
  • barge_in: 参与者强行插入呼叫。
  • fork: 基于 base_cdr_id 创建了新的呼叫流。呼叫流的 CDR 可以分叉成两个独立的呼叫流。
  • 示例: call_init, transfer, route_to
  • creation_forward_reason:
  • 描述: 由转接 (Transfer)、路由到 (Route To) 或转移 (Divert) API 请求提供的原因。creation_forward_reason 指定了 originating_cdr_id 的参与者发起新连接的原因。
  • :
  • none: 未给出具体原因。
  • no_answer: 目的地参与者未应答。
  • busy: 目的地参与者忙。
  • holiday: 由于节假日呼叫被重定向。
  • office_time: 由于工作时间呼叫被重定向。
  • out_of_office: 呼叫被重定向因为收件人不在办公室。
  • break_time: 呼叫被重定向因为收件人正在休息。
  • polling: CDR 是通过尝试轮询 base_cdr_id 中的 replaces_participant_id 的座席而创建的。
  • by_caller_id: 由入站主叫 ID 路由指定。
  • by_did: 重定向由入站 DID 路由指定。
  • no_destinations: 当自动呼叫分配端点(如振铃组或队列)没有可供轮询的目的地(所有座席都不可达)时,报告此原因而不是 no_answer。它区分了“无人应答”=no_answer 和“无人被呼叫”=no_destinations
  • user_requested: 此原因没有意义,因为它实际上是“未指定”
  • forward_all: 呼叫被发起者无条件转发。
  • not_registered: 发生重定向是因为发起者目的地没有已注册的设备。
  • callback_requested: 已请求队列回拨。当队列管理器用回调实体 (QCB) 替换主叫方时,队列管理器报告此原因。它并不仅限于队列。
  • callback: 路由到回调号码。当座席接受呼叫时,队列将 QCB 替换为主叫方请求的回调号码。

终止原因字段

终止字段

  • termination_reason: 呼叫结束的原因 (cancelled, src_participant_terminated, dst_participant_terminated).
  • termination_reason_details: 额外的终止详细信息 (timeout, busy, no_answer, license_limit_reached, server_error).
  • terminated_by_participant_id终止呼叫的参与者。

这些字段解释了 CDR 终止的原因。

  • termination_reason:
  • 描述: CDR 终止的总体原因。
  • :
  • continued_in: 呼叫流在另一个 CDR(由 continued_in_cdr_id 指示)中继续。
  • redirected: 应用于“路由”替换。
  • rejected: 当路由被目的地拒绝时,应指定此原因。
  • cancelled: 由于其他路由活动,呼叫管理器取消了路由。
  • src_participant_terminated: 由于源参与者断开连接导致呼叫流终止。
  • dst_participant_terminated: 由于目的地参与者断开连接导致呼叫流终止。
  • termination_reason_details:
  • 描述: 提供有关终止原因的额外详细信息。
  • :
  • timeout: 呼叫建立失败,因为在允许的时间内未收到来自目的地的响应,通常由 SIP 错误代码 408 (请求超时) 指示。
  • deflected: 呼叫被有意重定向到另一个目的地,如 SIP 302 (临时移动) 响应所示。
  • not_found: 系统无法定位被叫方或资源,通常导致 SIP 错误代码 404 (未找到)。
  • not_available: 被叫方当前无法接听电话,通常用 SIP 错误代码 480 (暂时不可用) 表示。
  • target_disabled: 目标接收者的分机或设备被管理性禁用,无法接收呼叫。(场景: A 呼叫 B - B 是已禁用的分机)
  • caller_disabled: 发起呼叫者的分机或设备被管理性禁用,阻止他们拨打电话。(场景: A 呼叫 B - A 是已禁用的分机)
  • line_busy: 出站中继上的所有可用通道当前都在使用中,阻止了呼叫的发起。(场景: 尝试进行超过中继限制的出站呼叫)
  • busy: 被叫方当前正在通话中并拒绝了来电。
  • no_answer: 被叫方的电话在超时期限内振铃但未被接听。
  • terminated_by_originator: 主叫方在呼叫成功接通前结束了呼叫。
  • license_limit_reached: 系统已达到活动许可证的最大数量,阻止了新呼叫的建立。
  • server_error: 系统服务器上发生问题,阻止了呼叫的处理。这通常由 5xx 范围内的 SIP 错误代码指示(例如,500 内部服务器错误,503 服务不可用)。
  • forwarding_loop: 检测到呼叫处于连续转发循环中,阻止其到达最终目的地。
  • no_destinations: 被叫目的地(如振铃组或队列)没有可用的成员来接听呼叫。(场景: 呼叫一个没有登录成员的振铃组或队列)
  • external_call_disabled: 呼叫分机或整个系统拨打外部电话号码的功能已被禁用。(场景: 在分机上禁用外部呼叫后尝试拨出)
  • no_route: 系统没有定义任何路径或规则将呼叫路由到所拨号码。(场景: 拨打不匹配任何出站规则的号码)
  • destination_prohibited: 对特定拨叫号码或国家/地区的呼叫被系统的出站呼叫限制阻止。(场景: 拨打未包含在允许国家代码中的国家/地区的号码)
  • caller_blacklisted: 主叫方的标识(主叫 ID)在阻止号码列表中,因此呼叫被拒绝。(场景: 使用系统黑名单上的主叫 ID 拨打电话)
  • feature_disabled: 请求的呼叫功能(例如,在免费版中拨打队列)未在系统上启用或可用。(场景: 使用免费版时尝试拨打队列)
  • pin_is_required: 拨打的号码需要 PIN 码进行授权,但未提供或提供错误。(场景: 启用 PIN 保护后尝试拨打外部号码但未输入 PIN)
  • invalid_dialcode: 拨打的号码包含无法识别或不正确的前缀或代码。
  • by_caller_id: 呼叫根据与主叫方标识关联的预定义规则自动终止。(场景: 配置了基于主叫 ID 结束呼叫的全局规则)
  • by_did: 由于系统呼叫处理规则中定义的特定异常或条件,呼叫自动终止。(场景: 配置了终止某些呼叫的异常规则)
  • invalid_destination: 拨打的号码不是有效的或格式正确的目的地。(场景: 呼叫转移被设置到一个被阻止国家/地区的号码,且 'Rebound' 激活,然后呼叫被拨打至该初始分机)
  • source_line_busy: 呼叫到达的特定入站线路(中继)已达到其同时呼叫的最大容量。(场景: 入站呼叫到达已达到其同时呼叫限制的中继)
  • terminated_by_originator: 主叫方结束了呼叫;提供商提供的具体原因是“未找到”,通常由外部网络的 404 响应指示。(注意:此值在列表中重复出现,描述特定场景)。
  • disabled: 用于呼叫的中继上的出站呼叫功能被专门禁用。(场景: 在出站呼叫被禁用的中继上拨打电话)
  • no_access: 主叫方没有必要的权限或特权来进行此类呼叫或访问请求的功能,通常由 SIP 错误代码 403 (禁止) 指示。
  • declined: 被叫方主动拒绝接听来电,通常由 SIP 错误代码 486 (此处忙), 600 (全忙), 或 603 (拒绝) 表示。

呼叫时间戳字段

这些字段提供呼叫各个阶段的时间戳。

  • cdr_started_at:
  • 描述: CDR 启动时的 UTC 时间。
  • 格式: YYYY-MM-DD HH:MM:SS.mmmmmm (年-月-日 时:分:秒.微秒)
  • 示例: 2025-02-20 10:07:03.783469
  • cdr_ended_at:
  • 描述: CDR 完成时的 UTC 时间。
  • 格式: YYYY-MM-DD HH:MM:SS.mmmmmm (年-月-日 时:分:秒.微秒)
  • 示例: 2025-02-20 10:07:21.765678
  • cdr_answered_at:
  • 描述: 源和目的地之间建立连接时的 UTC 时间。
  • 格式: YYYY-MM-DD HH:MM:SS.mmmmmm (年-月-日 时:分:秒.微秒)
  • 示例: 2025-02-20 10:07:10.695349
  • cdr_started_at: UTC 开始时间。
  • cdr_answered_at: UTC 应答时间。
  • cdr_ended_at: UTC 结束时间。
  • : YYYY-MM-DD HH:MM:SS.mmmmmm (年-月-日 时:分:秒.微秒)
  • 示例: 开始 - 2025-04-16 17:41:05.348291+00

系统与杂项字段

  • processed / migrated: 指示 CDR 是否已处理或迁移的标志。
  • offload_id: 用于外部存储卸载的标识符。

实用 SQL 示例

座席表现

1. 按座席计算平均呼叫处理时间

SELECT

    source_participant_name AS agent_name,  -- Or destination_participant_name, depending on your needs

    AVG(EXTRACT(EPOCH FROM (cdr_ended_at - cdr_answered_at))) AS average_handling_time_seconds

FROM cdroutput

WHERE (source_entity_type = 'extension' OR destination_entity_type = 'extension')  -- Assuming agents are extensions

    AND cdr_answered_at IS NOT NULL

    AND cdr_ended_at IS NOT NULL

GROUP BY agent_name

ORDER BY average_handling_time_seconds;

仪表板应用:此查询计算座席从接听呼叫到结束所花费的平均时间。

2. 每个座席处理的呼叫数

SELECT

    source_participant_name AS agent_name,

    COUNT(DISTINCT call_history_id) AS calls_handled

FROM cdroutput

WHERE (source_entity_type = 'extension' OR destination_entity_type = 'extension')

    AND cdr_answered_at IS NOT NULL

GROUP BY agent_name

ORDER BY calls_handled DESC;

仪表板应用:此查询计算每个座席处理的唯一呼叫数量。

3. 座席利用率

WITH AgentCalls AS (

    SELECT

        source_participant_name AS agent_name,

        cdr_started_at,

        cdr_ended_at,

        cdr_answered_at,

        CASE

            WHEN cdr_answered_at IS NOT NULL THEN 1 ELSE 0

        END AS was_answered

    FROM cdroutput

    WHERE (source_entity_type = 'extension' OR destination_entity_type = 'extension')

)

SELECT

    agent_name,

    SUM(EXTRACT(EPOCH FROM (cdr_ended_at - cdr_started_at))) AS total_call_time_seconds,

    SUM(CASE WHEN was_answered = 1 THEN EXTRACT(EPOCH FROM (cdr_ended_at - cdr_answered_at)) ELSE 0 END) AS total_talk_time_seconds,

    (SUM(CASE WHEN was_answered = 1 THEN EXTRACT(EPOCH FROM (cdr_ended_at - cdr_answered_at)) ELSE 0 END) / SUM(EXTRACT(EPOCH FROM (cdr_ended_at - cdr_started_at)))) AS utilization_rate

FROM AgentCalls

GROUP BY agent_name

ORDER BY utilization_rate DESC;

仪表板应用:此查询计算座席处于通话状态的时间占呼叫总持续时间的百分比。

队列表现

1. 列出所有丢失的队列呼叫

SELECT c.*

FROM public.cdroutput AS c

WHERE c.destination_entity_type = 'queue'

AND c.termination_reason IN ('src_participant_terminated', 'dst_participant_terminated')

ORDER BY c.main_call_history_id DESC, c.cdr_id DESC

仪表板应用:显示所有放弃的队列呼叫。

2. 列出所有队列失败的回拨

SELECT agent.*

FROM public.cdroutput AS callback

INNER JOIN public.cdroutput AS agent ON

    agent.cdr_id = callback.continued_in_cdr_id

WHERE callback.destination_entity_type = 'ivr'

AND callback.destination_dn_number = 'QCB'

AND callback.termination_reason_details = 'polling'

AND agent.termination_reason != 'continued_in'

ORDER BY agent.main_call_history_id DESC, agent.cdr_id DESC

仪表板应用:显示系统中所有队列的所有失败回拨。

呼叫时长与分析

1. 计算已应答的外部呼叫的平均通话时长

SELECT AVG(EXTRACT(EPOCH FROM (cdr_ended_at - cdr_answered_at))) AS average_duration_seconds

FROM cdroutput

WHERE source_entity_type != 'external_line'

    AND destination_entity_type = 'external_line'

    AND cdr_answered_at IS NOT NULL

    AND cdr_ended_at IS NOT NULL;

仪表板应用:了解呼出到外部号码的典型通话时长,用于成本分析或效率监控。

2. 查找最长的内部通话

SELECT call_history_id, source_dn_number, destination_dn_number,

    (cdr_ended_at - cdr_answered_at) AS duration

FROM cdroutput

WHERE source_entity_type != 'external_line'

    AND destination_entity_type != 'external_line'

    AND cdr_answered_at IS NOT NULL

    AND cdr_ended_at IS NOT NULL

ORDER BY duration DESC

LIMIT 10;

仪表板应用:识别可能冗长的内部讨论,用于流程分析或培训机会。

呼叫流与路由分析

1. 识别呼叫转接及涉及的参与者

SELECT c1.call_history_id,

    c1.source_participant_name AS original_caller,

    c1.destination_participant_name AS original_destination,

    c2.destination_participant_name AS transferred_to

FROM cdroutput c1

JOIN cdroutput c2 ON c1.call_history_id = c2.call_history_id

WHERE c1.creation_method = 'call_init'

    AND c2.creation_method = 'transfer'

    AND c2.base_cdr_id = c1.cdr_id;

仪表板应用:可视化呼叫转接模式并识别频繁转接点。

2. 统计路由到不同 IVR 选项的呼叫

仪表板应用:了解不同 IVR 菜单选项的使用情况,以优化呼叫流设计。(SQL 需根据具体 IVR 选项定制)

特定座席/队列表现

1. 计算每个队列处理的呼叫数

SELECT destination_dn_name AS queue_name, COUNT(DISTINCT call_history_id) AS calls_handled

FROM cdroutput

WHERE destination_entity_type = 'queue'

    AND cdr_answered_at IS NOT NULL

GROUP BY destination_dn_name

ORDER BY calls_handled DESC;

仪表板应用:监控队列性能和负载分布。

2. 识别特定分机作为源且呼叫未被应答的呼叫

SELECT call_history_id, destination_dn_name, termination_reason

FROM cdroutput

WHERE source_dn_number = 'YOUR_EXTENSION_NUMBER'  -- Replace with the actual extension

    AND termination_reason IN ('no_answer', 'timeout');

仪表板应用:跟踪来自特定用户的未应答的呼出呼叫。

3. 计算特定队列内座席接听呼叫前的平均时间

SELECT

    destination_dn_name AS queue_name,

    AVG(EXTRACT(EPOCH FROM (cdr_ended_at - cdr_answered_at))) AS average_talk_time_seconds

FROM cdroutput

WHERE destination_entity_type = 'queue'

    AND cdr_answered_at IS NOT NULL

    AND cdr_ended_at IS NOT NULL

GROUP BY destination_dn_name

ORDER BY average_talk_time_seconds DESC;

仪表板应用:识别座席接听前等待时间长的队列,这可能表明复杂性或效率问题。(修正了原查询逻辑,原查询计算的是通话时长而非等待时长)

4. 统计入站队列呼叫中被放弃的呼叫数(源参与者在接听前终止)

SELECT

    destination_dn_name AS queue_name,

    COUNT(DISTINCT call_history_id) AS abandoned_calls

FROM cdroutput

WHERE destination_entity_type = 'queue'

          AND source_entity_type = 'external_line' -- Consider only external callers

    AND termination_reason = 'src_participant_terminated'

GROUP BY destination_dn_name

ORDER BY abandoned_calls DESC;

仪表板应用:突出显示放弃率高的队列,表明等待时间或人员配置可能存在问题。

5. 列出所有被转接到队列的呼叫

SELECT

    c2.call_history_id,

    c1.source_participant_name AS original_caller,

    c1.destination_participant_name AS original_destination,

    c2.destination_dn_name AS transferred_queue

FROM cdroutput c1

JOIN cdroutput c2 ON c1.call_history_id = c2.call_history_id

WHERE c1.creation_method IN ('call_init', 'route_to')

    AND c2.creation_method = 'transfer'

    AND c2.destination_entity_type = 'queue'

    AND c2.base_cdr_id = c1.cdr_id;

仪表板应用:了解通过转接路由到特定队列的呼叫频率。

错误与失败分析

1. 列出因“无路由”而失败的呼叫

SELECT call_history_id, source_participant_name, destination_participant_name

FROM cdroutput

WHERE termination_reason_details = 'no_route';

仪表板应用:识别路由配置问题。

2. 统计因许可证限制而终止的呼叫数

SELECT COUNT(*) AS license_limit_terminations

FROM cdroutput

WHERE termination_reason_details = 'license_limit_reached';

仪表板应用:监控许可证使用情况和潜在瓶颈。

呼叫终止分析

1. 统计所有呼叫的不同终止原因

SELECT

    termination_reason,

    COUNT(*) AS termination_count

FROM cdroutput

GROUP BY termination_reason

ORDER BY termination_count DESC;

仪表板应用:获取系统中呼叫通常如何结束的概览。

2. 深入查看特定终止原因详细信息(例如,“timeout”

SELECT

    call_history_id,

    source_participant_name,

    destination_participant_name

FROM cdroutput

WHERE termination_reason_details = 'timeout';

仪表板应用:调查超时的呼叫。

另请参阅

上次更新

本文档最后更新于 2025年5月14日

https://www.3cx.cn/docs/call-detail-record-guide/