Skip to main content
Skip table of contents

Campaign Connected Call Details Gold Query

Purpose

This query is extracts and inserts detailed records of successfully connected voice calls (calls that ended with NORMAL_CLEARING) into a gold table called campaign_connected_call_details_gold.

Data Source Tables

  • campaign_scheduler

  • campaigns

  • voice_activities

  • voice_connector_activities

For more detail on campaigns and activities tables, please refer to: Reporting Database Schema

Query

CODE
-- for mysql

    "campaign_connected_call_details_gold":"""
    INSERT INTO campaign_connected_call_details_gold (
    `Campaign_Name`, 
    DateTime,  
    `Number_Called`, 
    `Call_Duration`,
    agent_name,
    `Agent_ID`,
    Team_Name,
    `Agent_wrap_ups`
)
SELECT 
    c.title AS `Campaign_Name`, 
    va.start_time AS DateTime,  
    va.channel_customer_identifier AS `Number_Called`, 
    va.total_duration AS `Call_Duration`,
    va.sender_name AS agent_name,
    va.sender_id AS `Agent_ID`,
    t.team_name AS Team_Name,
    GROUP_CONCAT(DISTINCT wrapup_label ORDER BY wrapup_label SEPARATOR ', ') AS `Agent_wrap_ups`
FROM campaign_scheduler cs  
INNER JOIN campaigns c  
    ON JSON_UNQUOTE(JSON_EXTRACT(cs.customer, '$.campaign')) = c.id 
INNER JOIN (
    SELECT 
        va.activity_timestamp,
        va.start_time,
        call_leg_start_time AS min_start_time, 
        va.channel_session_id,
        va.conversation_id, 
        va.channel_customer_identifier, 
        vca.reason_code,
        va.sender_type,
        va.total_duration, 
        va.sender_name,
        va.sender_id  
    FROM voice_activities va  
    INNER JOIN voice_connector_activities vca  
        ON va.channel_session_id = vca.message_id 
        AND CAST(va.activity_timestamp AS DATE) = CAST(vca.activity_timestamp AS DATE)
    WHERE vca.reason_code = 'NORMAL_CLEARING'
      AND va.start_time BETWEEN '{start_time}' AND '{end_time}'
    GROUP BY 
        va.activity_timestamp,
        va.start_time,
        call_leg_start_time, 
        va.channel_session_id,
        va.conversation_id, 
        va.channel_customer_identifier, 
        vca.reason_code,
        va.sender_type,
        va.total_duration,
        va.sender_name,
        va.sender_id 
) AS va 
    ON cs.activity_data_id = va.channel_session_id 
    AND CAST(cs.activity_timestamp AS DATE) = CAST(va.activity_timestamp AS DATE)
INNER JOIN (
    SELECT 
        conversation_id, 
        MIN(call_leg_start_time) AS min_start_time 
    FROM voice_activities 
    WHERE start_time BETWEEN '{start_time}' AND '{end_time}' 
    GROUP BY conversation_id 
) AS min_times 
    ON va.conversation_id = min_times.conversation_id 
    AND va.min_start_time = min_times.min_start_time
LEFT JOIN (
    SELECT 
        t.team_name, 
        tm.user_id 
    FROM team_members tm 
    INNER JOIN teams t ON t.team_id = tm.team_id
) AS t 
    ON t.user_id = va.sender_id
LEFT JOIN wrapup_detail wd 
    ON wd.conversation_id = va.conversation_id 
    AND CAST(va.start_time AS DATE) = CAST(wd.wrapup_time AS DATE)
WHERE 
    cs.message_type = 'VOICE' 
    AND va.start_time BETWEEN '{start_time}' AND '{end_time}'
GROUP BY 
    va.conversation_id, 
    c.title, 
    va.start_time, 
    va.channel_customer_identifier, 
    va.total_duration,
    va.sender_name,
    va.sender_id,
    t.team_name;

    """,

-- for mssql
 "campaign_connected_call_details_gold_MSSQL":"""
    INSERT INTO campaign_connected_call_details_gold (
    [Campaign_Name], 
    DateTime, 
    [Number_Called], 
    [Call_Duration], 
    agent_name, 
    [Agent_ID], 
    Team_Name, 
    [Agent_wrap_ups]
)
SELECT 
    c.title AS [Campaign_Name], 
    va.start_time AS DateTime, 
    va.channel_customer_identifier AS [Number_Called], 
    va.total_duration AS [Call_Duration], 
    va.sender_name AS agent_name, 
    va.sender_id AS [Agent_ID], 
    t.team_name AS Team_Name,
    STUFF((
        SELECT DISTINCT ', ' + wd2.wrapup_label
        FROM wrapup_detail wd2
        WHERE wd2.conversation_id = va.conversation_id
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)'), 1, 2, '') AS [Agent_wrap_ups]
FROM campaign_scheduler cs  
INNER JOIN campaigns c  
    ON JSON_VALUE(cs.customer, '$.campaign') = c.id 
INNER JOIN (
    SELECT 
        va.activity_timestamp, 
        va.start_time, 
        call_leg_start_time AS min_start_time,
        va.channel_session_id, 
        va.conversation_id, 
        va.channel_customer_identifier, 
        vca.reason_code, 
        va.sender_type, 
        va.total_duration, 
        va.sender_name, 
        va.sender_id  
    FROM voice_activities va  
    INNER JOIN voice_connector_activities vca  
        ON va.channel_session_id = vca.message_id 
        AND CAST(va.activity_timestamp AS DATE) = CAST(vca.activity_timestamp AS DATE)
    WHERE vca.reason_code = 'NORMAL_CLEARING' 
      AND va.start_time BETWEEN LEFT('{start_time}', 23) AND LEFT('{end_time}', 23)
    GROUP BY 
        va.activity_timestamp,
        va.start_time,
        call_leg_start_time, 
        va.channel_session_id,
        va.conversation_id, 
        va.channel_customer_identifier,
        vca.reason_code, 
        va.sender_type, 
        va.total_duration, 
        va.sender_name, 
        va.sender_id
) AS va 
    ON cs.activity_data_id = va.channel_session_id 
    AND CAST(cs.activity_timestamp AS DATE) = CAST(va.activity_timestamp AS DATE)
INNER JOIN (
    SELECT 
        conversation_id, 
        MIN(call_leg_start_time) AS min_start_time 
    FROM voice_activities 
    WHERE start_time BETWEEN LEFT('{start_time}', 23) AND LEFT('{end_time}', 23)
    GROUP BY conversation_id 
) AS min_times 
    ON va.conversation_id = min_times.conversation_id 
    AND va.min_start_time = min_times.min_start_time
LEFT JOIN (
    SELECT 
        t.team_name, 
        tm.user_id 
    FROM team_members tm 
    INNER JOIN teams t ON t.team_id = tm.team_id
) AS t 
    ON t.user_id = va.sender_id
LEFT JOIN wrapup_detail wd 
    ON wd.conversation_id = va.conversation_id 
    AND CAST(va.start_time AS DATE) = CAST(wd.wrapup_time AS DATE)
WHERE 
    cs.message_type = 'VOICE' 
    AND va.start_time BETWEEN LEFT('{start_time}', 23) AND LEFT('{end_time}', 23)
GROUP BY 
    va.conversation_id, 
    c.title, 
    va.start_time, 
    va.channel_customer_identifier, 
    va.total_duration, 
    va.sender_name, 
    va.sender_id, 
    t.team_name;
    
    """,
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.