通话详单 (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日