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

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