3

Lync LCSCDR データベースにクエリを実行する SQL コードを作成しています。

誰かが外部から応答グループを呼び出し、別のグループがそれに応答すると、レコードがsessionDetailsテーブル (およびVoipdetailsテーブル) に入り、行われた呼び出しが反映されます。

ただし、誰が電話に出たかを特定する方法はないようです。user2id列には、通話に応答した人ではなく、応答グループのuserid(テーブルからの)が入力されます。Users誰が電話に出たかを推測する方法があるかどうか誰か知っていますか?

クエリは次のとおりです。

SELECT 
    sd.SessionIdTime, 
    sd.SessionEndTime,
    DATEDIFF(
        ss, 
        sd.SessionIdTime, 
        ISNULL(sd.SessionEndTime, sd.SessionIdTime)
    ) AS duration,
    ph1.PhoneUri AS caller1,
    ph2.PhoneUri AS receiver1, 
    U1.UserUri AS user1uri, 
    U2.UserUri AS user2uri, 
    U3.UserUri AS refeereruri, 
    sd.User1Id, 
    sd.User2Id,
    sd.ReferredById,
    sd.IsUser1Internal, 
    sd.IsUser2Internal,
    sd.SessionIdTime, 
    voipd.*, 
    '|||',
    sd.*
FROM 
    dbo.VoipDetails AS voipd 
INNER Join 
    dbo.SessionDetails AS sd 
ON 
    (
        voipd.SessionIdTime = sd.SessionIdTime AND 
        voipd.SessionIdSeq = sd.SessionIdSeq
    ) 
LEFT OUTER JOIN 
    dbo.Users AS U2 -- still 4795 with outer
ON 
    U2.UserId = sd.User2Id
LEFT OUTER JOIN 
    dbo.Users AS U1
ON 
    U1.UserId = sd.User1Id 
LEFT OUTER JOIN 
    dbo.Users AS U3
ON 
    U3.UserId = sd.ReferredById
LEFT OUTER JOIN 
    dbo.Phones AS ph1
ON 
    ph1.PhoneId = voipd.FromNumberId
LEFT OUTER JOIN 
    dbo.Phones AS ph2
ON 
    ph2.PhoneId = voipd.ConnectedNumberId
WHERE 
    sd.SessionIdTime > (GETDATE() - 2) 
    AND sd.MediaTypes = 16 
    AND voipd.FromGatewayId  is not null -- external
    AND User1Id IS NULL
4

1 に答える 1

0

質問に対する答えを見つける方法はありますが、それを行うには 2 つ目のアプリケーションが必要になります。

RG が呼び出されると、呼び出しは CorrelationID を埋めます

CorrelationID が入力されている行ごとに、RefferdByID が呼び出された RG である CorrelationID のない行を検索する必要があります。ほとんどの場合、応答するユーザーが発信者になり、着信者は CorrelationID を持つ回線の発信者になります。

于 2015-11-26T09:30:38.957 に答える