скрипт для перевода вызовов скрипт-скрипт или DN-DN
-
Привет, команда! Мне нужна помощь в извлечении информации из запроса в один отчет. У меня есть запрос, с помощью которого я могу извлечь данные только для вызовов, которые были слепо переведены на скрипт назначения. Ниже приведен запрос, который я использую для извлечения данных о общем количестве вызовов, переведенных на определенный DN. Но этот запрос не будет включать основной DN и основного агента.
$$$$$$$$$$$$$$$$$
SELECT DISTINCT RouterCallKeySequenceNumber, RouterCallKey, RouterCallKeyDay, EnterpriseName, CallDisposition , DateTime , DigitsDialed , NewTransaction,DNIS,ANI , Termination_Call_Detail.DateTime FROM Termination_Call_Detail
INNER JOIN Peripheral
ON Termination_Call_Detail.PeripheralID = Peripheral.PeripheralID
WHERE DateTime BETWEEN '2024-01-01' and '2024-01-17' and CallDisposition = 28 and RouterCallKeySequenceNumber > 1
AND DigitsDialed = '9998800560'
order by Termination_Call_Detail.DateTime
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Может ли кто-нибудь помочь мне с информацией по запросу - где я могу получить данные с подробностями исходного скрипта или набранного номера и скрипта назначения или набранного номера вместе с подробностями основного агента и вторичного агента в одном отчете (это то, что мы ищем, чтобы понять .. сколько звонков было переведено агентам службы ремонта от агентов отдела продаж, когда агенты отдела продаж хотят перевести звонок в службу ремонта, они набирают DN службы ремонта, и это попадает в скрипт службы ремонта)))
с помощью RCKey и RCkeyday я могу извлечь детали отдельных звонков с полной информацией, но я не понимаю, как извлечь все детали в одном отчете. -
С помощью моего коллеги и Stackoverflow, вот мой лучший вариант DECLARE @dateFrom DATETIME
SET @dateFrom = CAST(FLOOR(CAST(GETDATE AS FLOAT)) AS DATETIME)
;WITH RouterDetail(RCKD, RCK, ClientCallKey, ScriptName, BeganRoutingDateTime, DialedNumberString)
AS
(SELECT
RCD.RouterCallKeyDay, RCD.RouterCallKey, RCD.RoutingClientCallKey, MS.EnterpriseName ScriptName, RCD.BeganRoutingDateTime, RCD.DialedNumberString
FROM Route_Call_Detail RCD
LEFT JOIN Script S ON RCD.ScriptID = S.ScriptID
LEFT JOIN Master_Script MS ON S.MasterScriptID = MS.MasterScriptID
WHERE RCD.DateTime > @dateFrom
)
SELECT
TCD.RouterCallKeyDay, TCD.RouterCallKey,
MAX(CASE WHEN RCD.ClientCallKey = 0 THEN TCD.DigitsDialed END) AS OriginalDigitsDialed,
MAX(CASE WHEN RCD.ClientCallKey = 0 THEN P.FirstName + ' ' + P.LastName END) AS OriginalAgent,
MAX(CASE WHEN RCD.ClientCallKey = 0 THEN PQ.EnterpriseName END) AS OriginalAgentSkillGroup,
MAX(CASE WHEN RCD.ClientCallKey = 0 THEN RCD.ScriptName END) AS OriginalScript,
MAX(CASE WHEN RCD.ClientCallKey = 0 THEN RCD.BeganRoutingDateTime END) AS TransferDateTime,
MAX(CASE WHEN RCD.ClientCallKey = 0 THEN RCD.DialedNumberString END) AS TransferDestination,
MAX(CASE WHEN RCD.ClientCallKey > 0 THEN TCD.DigitsDialed END) AS XferToDigitsDialed,
MAX(CASE WHEN RCD.ClientCallKey > 0 THEN P.FirstName + ' ' + P.LastName END) AS XferToAgent,
MAX(CASE WHEN RCD.ClientCallKey > 0 THEN PQ.EnterpriseName END) AS XferToAgentSkillGroup,
MAX(CASE WHEN RCD.ClientCallKey > 0 THEN RCD.ScriptName END) AS XferToScript,
MAX(CASE WHEN RCD.ClientCallKey > 0 THEN RCD.BeganRoutingDateTime END) AS XferToTransferDateTime,
MAX(CASE WHEN RCD.ClientCallKey > 0 THEN RCD.DialedNumberString END) AS XferToExtension
FROM Termination_Call_Detail TCD
LEFT JOIN Agent A ON TCD.AgentSkillTargetID = A.SkillTargetID
LEFT JOIN Person P ON A.PersonID = P.PersonID
LEFT JOIN Precision_Queue PQ ON TCD.PrecisionQueueID = PQ.PrecisionQueueID
LEFT JOIN Skill_Group SG ON TCD.SkillGroupSkillTargetID = SG.SkillTargetID,
RouterDetail RCD
WHERE TCD.RouterCallKeyDay = RCD.RCKD
AND TCD.RouterCallKey = RCD.RCK
AND TCD.DateTime > @dateFrom
AND RCD.ClientCallKey >= 0
AND TCD.CallDisposition IN (28,29,30)
AND TCD.DateTime > @dateFrom
GROUP BY TCD.RouterCallKeyDay, TCD.RouterCallKey -
Большое спасибо за запрос
[, @Omar Deen.] Я вижу, что запрос использует Getdate, который извлекает текущую дату, однако я хочу извлечь отчет за определенный диапазон дат с помощью
функции
«
DATEDIFF», но это не помогло. Есть ли способ извлечь данные с помощью вышеуказанного запроса для определенного диапазона дат? -
Вы все еще можете использовать DATEDIFF Замените это SET @dateFrom = CAST(FLOOR(CAST(GETDATE AS FLOAT)) AS DATETIME) на это SET @dateFrom = CAST(FLOOR(CAST(DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE),0) AS FLOAT)) AS DATETIME) Это даст вам первый день текущего месяца. Замените нуль на отрицательное значение, чтобы вернуться на столько месяцев назад, сколько хотите. Аналогично, вы можете заменить MONTH на DAY или YEAR
-
Спасибо,
@Omar Deen
. Получилось.
Не могли бы вы объяснить, какое значение имеют RCD.ClientCallKey = 0 и RCD.ClientCallKey > 0 в вашем запросе? -
Часть сложности заключается в том, чтобы определить, что такое переведенный вызов и как мы можем связать с ним другую информацию, относящуюся к переведенному вызову. Я считаю, что важно указать, на каком сценарии вызов первоначально завершился и куда он был переведен, поэтому нам нужно использовать RCD для получения этой информации. Сложность заключается в том, что RCD не всегда помечает вызов как переведенный. Изначально я использовал столбец RequestType, ища значения 2 (холодный) или 3 (теплый), но иногда это было 6. Я не тратил много времени на то, чтобы выяснить, почему, но было очевидно, что я не мог полагаться на эти данные. Единственное, что в таблице RCD определенно выделялось как исходный и переведенный вызов, было RoutingClientCallKey. Исходный вызов всегда имеет значение 0, а переведенные вызовы — значение больше 0. Что мешает моему запросу, так это наличие нескольких переводов... Я не учитываю это. Я все еще работаю над улучшением этого запроса, но это хороший первый шаг. Если вы найдете способы его улучшить, поделитесь ими с остальными членами сообщества.
-
Спасибо за ответ
[, @Omar Deen] Я пытаюсь отобразить только две записи для каждого вызова: одну запись вызова с номером callkeysequence 0 и другую с номером 6. Я не понимаю, как сгруппировать эти данные с помощью RCcallkey. -
Я не уверен, что там можно конкретно искать 6. Может быть, лучше сказать «больше 0».
-
Здравствуйте
[, @Omar Deen] Я немного изменил ваш первый запрос, и он сработал, дав ожидаемый результат. MAX(CASE WHEN RCD.ClientCallKey > 0 THEN RCD.lable END) AS SecondaryEXTENSION, вышеуказанную строку я добавил для результата переведенного расширения, а также строку Call dispotion для полной информации. Спасибо, сэр!!! -
Привет, Омар, Я пытаюсь преобразовать данные CVP Informix в данные MS SQL Это возможно, сэр?
Здравствуйте! Похоже, вам интересна эта беседа, но у вас пока нет учетной записи.
Вы устали просматривать одни и те же посты каждый раз, когда заходите на сайт? После регистрации, вам не придётся искать обсуждения в которых вы принимали участие, настройте уведомления о новых сообщениях так как вам это удобно (по электронной почте или уведомлением). У вас появится возможность сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.
С вашими комментариями этот пост может стать ещё лучше 💗
Зарегистрироваться Войти