Суммарное время нахождения абонента во Flash-буфере — различия между версиями
Строка 1: | Строка 1: | ||
[[Работа с БД Oktell|Наверх]] | [[Работа с БД Oktell|Наверх]] | ||
− | Когда оператор осуществляет консультативный перевод, абонент временно попадает во флеш-буфер. В статистику коммутаций ''[oktell]..[a_stat_connections_1x1]'' при этом информация о времени ожидания абонента не записывается, однако есть информация о времени начала коммутации (TimeStart) и времени конца (TimeStop). Время ожидания можно получить, если вычесть из времени начала следующей коммутации время конца предыдущей. | + | Когда оператор осуществляет консультативный перевод, абонент временно попадает во флеш-буфер. В статистику коммутаций ''[oktell]..[a_stat_connections_1x1]'' при этом информация о времени ожидания абонента не записывается, однако есть информация о времени начала коммутации (TimeStart) и времени конца (TimeStop). Время ожидания можно получить, если вычесть из времени начала следующей коммутации время конца предыдущей. При этом необходимо фильтровать коммутации переключающих сотрудников. |
+ | |||
+ | Пример цепочки коммутаций, в которой были переводы показан на рисунке. Красным цветом показан пример расчета времени ожидания в одном из периодов разговора. | ||
Строка 7: | Строка 9: | ||
− | Следующий запрос реализует вышеописанную логику. В запросе также учитывается случай, когда после переключения в IVR сценарии, он продолжает выполнять некоторые действия (SQL, Web-запросы) и время его окончания больше, чем время начала коммутации с сотрудником. Поэтому в запросе поставлено ограничение на отрицательные значения, поскольку они не имеют отношения ко Flash-буферу. | + | Следующий запрос реализует вышеописанную логику. В запросе также учитывается случай, когда после переключения в IVR сценарии, он продолжает выполнять некоторые действия (SQL, Web-запросы) и время его окончания больше, чем время начала коммутации с сотрудником. Поэтому в запросе поставлено ограничение на отрицательные значения, поскольку они не имеют отношения ко Flash-буферу. |
<pre> | <pre> | ||
− | declare @ | + | declare @alineid uniqueidentifier |
− | select top 1 @ | + | select top 1 @alineid=ALineId from A_Stat_Connections_1x1 |
where idchain = @idchain | where idchain = @idchain | ||
− | select @duration= sum(case when diff<0 then 0 else diff end)/1000 | + | select @duration=sum(case when diff<0 then 0 else diff end)/1000 |
from ( | from ( | ||
select a.TimeStop, b.TimeStart, DATEDIFF(MILLISECOND,a.TimeStop,b.TimeStart) diff | select a.TimeStop, b.TimeStart, DATEDIFF(MILLISECOND,a.TimeStop,b.TimeStart) diff | ||
Строка 22: | Строка 24: | ||
from A_Stat_Connections_1x1 | from A_Stat_Connections_1x1 | ||
where idchain = @idchain | where idchain = @idchain | ||
− | and | + | and ALineId=@alineid)a |
left join | left join | ||
( | ( | ||
Строка 28: | Строка 30: | ||
from A_Stat_Connections_1x1 | from A_Stat_Connections_1x1 | ||
where idchain = @idchain | where idchain = @idchain | ||
− | and | + | and ALineId=@alineid)b |
on a.rn+1=b.rn | on a.rn+1=b.rn | ||
)aa | )aa |
Текущая версия на 10:06, 13 апреля 2015
Когда оператор осуществляет консультативный перевод, абонент временно попадает во флеш-буфер. В статистику коммутаций [oktell]..[a_stat_connections_1x1] при этом информация о времени ожидания абонента не записывается, однако есть информация о времени начала коммутации (TimeStart) и времени конца (TimeStop). Время ожидания можно получить, если вычесть из времени начала следующей коммутации время конца предыдущей. При этом необходимо фильтровать коммутации переключающих сотрудников.
Пример цепочки коммутаций, в которой были переводы показан на рисунке. Красным цветом показан пример расчета времени ожидания в одном из периодов разговора.
Следующий запрос реализует вышеописанную логику. В запросе также учитывается случай, когда после переключения в IVR сценарии, он продолжает выполнять некоторые действия (SQL, Web-запросы) и время его окончания больше, чем время начала коммутации с сотрудником. Поэтому в запросе поставлено ограничение на отрицательные значения, поскольку они не имеют отношения ко Flash-буферу.
declare @alineid uniqueidentifier select top 1 @alineid=ALineId from A_Stat_Connections_1x1 where idchain = @idchain select @duration=sum(case when diff<0 then 0 else diff end)/1000 from ( select a.TimeStop, b.TimeStart, DATEDIFF(MILLISECOND,a.TimeStop,b.TimeStart) diff from ( select id,astr,Bstr,TimeStart, TimeStop, ROW_NUMBER() OVER(ORDER BY timestart asc) as rn from A_Stat_Connections_1x1 where idchain = @idchain and ALineId=@alineid)a left join ( select id,astr,Bstr,TimeStart, TimeStop, ROW_NUMBER() OVER(ORDER BY timestart asc) as rn from A_Stat_Connections_1x1 where idchain = @idchain and ALineId=@alineid)b on a.rn+1=b.rn )aa
где
- @idchain - идентификатор цепочки коммутаций
- @duration - рассчитанное время ожидания