Суммарное время нахождения абонента во Flash-буфере — различия между версиями

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

Текущая версия на 10:06, 13 апреля 2015

Наверх

Когда оператор осуществляет консультативный перевод, абонент временно попадает во флеш-буфер. В статистику коммутаций [oktell]..[a_stat_connections_1x1] при этом информация о времени ожидания абонента не записывается, однако есть информация о времени начала коммутации (TimeStart) и времени конца (TimeStop). Время ожидания можно получить, если вычесть из времени начала следующей коммутации время конца предыдущей. При этом необходимо фильтровать коммутации переключающих сотрудников.

Пример цепочки коммутаций, в которой были переводы показан на рисунке. Красным цветом показан пример расчета времени ожидания в одном из периодов разговора.


Нахождение абонента во flash буфере.png


Следующий запрос реализует вышеописанную логику. В запросе также учитывается случай, когда после переключения в 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 - рассчитанное время ожидания