Обратный звонок с мобильного в ответ на пропущенный от Oktell — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
м (Дополнение)
 
(не показано 7 промежуточных версии этого же участника)
Строка 1: Строка 1:
 
[[Практики|Наверх]]
 
[[Практики|Наверх]]
 +
 +
__TOC__
  
 
'''Задача:''' Клиенты крупных компаний часто могут обнаружить пропущенный звонок с городского номера и при попытке перезвонить попадают на голосовое меню. Становится совершенно непонятно, кто звонил и какой выбрать пункт меню. Предлагается ввести следующий пункт в меню "''Если вы получили пропущенный, нажмите 5''" и при выборе - клиент соединяется с оператором, который совершал ему звонок.  
 
'''Задача:''' Клиенты крупных компаний часто могут обнаружить пропущенный звонок с городского номера и при попытке перезвонить попадают на голосовое меню. Становится совершенно непонятно, кто звонил и какой выбрать пункт меню. Предлагается ввести следующий пункт в меню "''Если вы получили пропущенный, нажмите 5''" и при выборе - клиент соединяется с оператором, который совершал ему звонок.  
  
Решение задачи вкратце состоит из следующих этапов:  
+
Решение задачи состоит из следующих этапов:  
 
* При звонке клиента, находится и анализируется информация по его последней коммутации.  
 
* При звонке клиента, находится и анализируется информация по его последней коммутации.  
 
* Если обнаруживается, что это был неудачный исходящий звонок, клиенту предлагается соединиться с оператором, который совершал звонок.  
 
* Если обнаруживается, что это был неудачный исходящий звонок, клиенту предлагается соединиться с оператором, который совершал звонок.  
  
<span style="color:red"> ВНИМАНИЕ: Если вы не используете сценарий автодозвона, вы можете пропустить следующие два пункта. </span> Это связано с тем, что в базе данных Oktell не хранится информация по неудачным исходящим звонкам с использованием сервиса автодозвона.  
+
<span style="color:red"> ВНИМАНИЕ: Если вы не используете сценарий автодозвона, вы можете пропустить следующие три пункта и переходить к модифицированию главного сценария. </span> Это связано с тем, что в базе данных '''Oktell''' не хранится информация по неудачным исходящим звонкам с использованием сервиса автодозвона, поэтому надо самостоятельно заносить данные в отдельную таблицу.  
 +
 
  
 
=== Создание таблицы учета неудачных исходящих по автодозвону ===
 
=== Создание таблицы учета неудачных исходящих по автодозвону ===
Строка 13: Строка 16:
 
В базе данных '''oktell''' для решения задачи используются следующие таблицы:
 
В базе данных '''oktell''' для решения задачи используются следующие таблицы:
 
* таблица '''[oktell].[dbo].[A_Stat_Connections_1x1]'''. В ней можно найти все удачные исходящие звонки.
 
* таблица '''[oktell].[dbo].[A_Stat_Connections_1x1]'''. В ней можно найти все удачные исходящие звонки.
* таблица '''[oktell].[dbo].[A_Stat_FailedCalls]'''. В ней можно найти все неудачные исходящие звонки, набранные в ручном режиме.
+
* таблица '''[oktell].[dbo].[A_Stat_FailedCalls]'''. В ней можно найти в том числе все неудачные исходящие звонки, набранные в ручном режиме.
  
 
Этих данных недостаточно для определения последнего звонка к клиенту, так как операторы могут использовать сервис автодозвона на своем рабочем месте. В этом случае надо отдельно записывать все неудачные соединения по автодозвону в отдельную таблицу.  
 
Этих данных недостаточно для определения последнего звонка к клиенту, так как операторы могут использовать сервис автодозвона на своем рабочем месте. В этом случае надо отдельно записывать все неудачные соединения по автодозвону в отдельную таблицу.  
Строка 22: Строка 25:
 
:*'''calldate''' - дата звонка. Тип '''Datetime'''.
 
:*'''calldate''' - дата звонка. Тип '''Datetime'''.
 
:*'''operator''' - внутренний номер пользователя внутри АТС. '''Тип Nvarchar (auto)'''.
 
:*'''operator''' - внутренний номер пользователя внутри АТС. '''Тип Nvarchar (auto)'''.
 
  
 
=== Модификация сценария автодозвона ===  
 
=== Модификация сценария автодозвона ===  
  
В сценарий автодозвона необходимо добавить SQL-запрос с добавлением записи о неудачном исходящем звонке в таблицу '''FailedCalls_ACM''':
+
В сценарий автодозвона необходимо добавить SQL-запрос с добавлением записи о исходящем звонке в таблицу '''FailedCalls_ACM'''. По умолчанию, каждый звонок считается неудачным, проверка происходит в сценарии обработки контента по ID цепочки коммутаций. Если определяется, что это был успешный звонок, то строка удаляется из таблицы.
  
  
Строка 32: Строка 34:
  
  
Компонент SQL-запрос "'''INSERT FailedCalls_ACM'''" ставится по всем неудачным веткам от компонента "'''Дозвон'''" и использует следующий текст запроса:
+
Компонент "Старт 1" - в качестве параметра запуска переменная '''Номер''' (строковая). Переменная содержит набираемый номер.
  
  insert into FailedCalls_ACM (number,calldate)
+
Компонент "'''idchain_ACM, operator'''" - присваивает
  values (@number, getdate())
+
* сессионной переменной '''idchain_ACM''' (строковая) значение функции "'''Id сессии сценария'''". Это нужно для того, чтобы определить в сценарии контента были ли коммутации по данной цепочке.
 +
* переменной '''operator''' (строковая) значение функции '''Инициатор дозвона.Внутренний номер(пользователь).'''
 +
 
 +
Компонент "'''Дозвон'''" - производит дозвон на указанный номер. В компоненте установлены свойства:
 +
:*'''Номер/команда''' - переменная '''Номер'''
 +
:*'''Среда''' - Внешняя сеть
 +
:*'''Обслуживание''' - Управляющий модуль
 +
:*'''Направления''' - выберите направления
 +
 
 +
<span style="color:red"> ВНИМАНИЕ: Успешный переход не обозначает, что оператор дозвонился до абонента. Абонент может не взять трубку, однако сценарий автодозвона будет завершен, требуется дальнейший анализ в сценарии обработки контента. </span>
 +
 
 +
Компонент SQL-запроса "'''INSERT FailedCalls_ACM'''" ставится по всем неудачным веткам от компонента "'''Дозвон'''" и использует следующий текст запроса:
 +
 
 +
update FailedCalls_ACM
 +
set calldate=getdate(),
 +
operator=@operator,
 +
idchain=@idchain
 +
where number=@number
 +
 +
if @@rowcount=0
 +
begin
 +
  insert into FailedCalls_ACM (number,calldate, operator, idchain)
 +
  values (@number, getdate(), @operator, @idchain)
 +
end
  
 
где  
 
где  
  
*'''number''' - переменная '''Номер''' (строковая). Переменная '''Номер''' передается в сценарий как параметр запуска.  
+
*'''@idchain''' - переменная '''idchain_ACM''' (строковая).
 +
*'''@number''' - переменная '''Номер''' (строковая).  
 +
*'''@operator''' - переменная '''operator''' (строковая).  
  
 +
Запрос позволяет использовать одну строку для одного абонента.
  
 
Если у вас более сложный сценарий, SQL-запрос добавления данных в таблицу надо поставить по неудачным веткам после каждого компонента "'''Дозвон'''"
 
Если у вас более сложный сценарий, SQL-запрос добавления данных в таблицу надо поставить по неудачным веткам после каждого компонента "'''Дозвон'''"
 +
 +
 +
Компонент "'''Отладочное уведомление'''" - оповещает администратора о добавленных значениях в таблицу '''FailedCalls_ACM'''. Текст уведомления - выражение:
 +
 +
'добавил в базу '+endline+ '[operator] '+[operator]+endline+ '[Номер] '+[Номер]+endline+  '[idchain] '+[idchain_ACM]
 +
 +
=== Служебный сценарий обработки контента ===
 +
 +
В сценарии обработки контента необходимо определить были ли коммутации по автодозвону. Если коммутации были, необходимо удалить запись о неуспешном дозвоне из таблицы '''FailedCalls_ACM'''. Сценарий выглядит следующим образом:
 +
 +
 +
[[Файл:ОбратныйЗвонок-002.png |center]]
 +
 +
 +
Компонент "'''Старт 1'''" -  в качестве параметра запуска переменная '''content''' (строковая). Переменная содержит контент цепочки коммутаций.
 +
 +
 +
Компонент "'''id chain'''" - сравнивает сессионную переменную '''idchain_ACM''' с пустой строкой. Если переменная не пустая, значит это анализ ситуации, связанной с автодозвоном.
 +
:*'''Аргумент 1''' - переменная '''idchain_ACM'''
 +
:*'''Аргумент 2''' - пустая строка
 +
:*'''Тип сравнения''' - "'''='''"
 +
 +
Компонент "'''Количество коммутаций'''" - парсер определяет количество коммутаций по контенту.
 +
:*'''Документ''' - переменная '''content'''
 +
:*'''Алгоритм''' - язык OQuery для HTML
 +
:*'''Поисковый запрос''' - строка
 +
commutation:has([name=abonent])>[key=idconnection]
 +
:*'''Функция''' - количество элементов
 +
:*'''Результат в переменную''' - переменная '''comcount'''(строковая)
 +
 +
 +
[[Файл:ОбратныйЗвонок-003.png |center]]
 +
 +
 +
Переход к следующему компоненту происходит по основной ветке и по ветке "'''Ошибка'''".
 +
 +
Компонент "'''Есть коммутации?'''" - определяет были ли коммутации по автодозвону. Сравнивает переменную '''comcount''' и '''0'''.
 +
:*'''Аргумент 1''' - переменная '''comcount'''
 +
:*'''Аргумент 2''' - строка "'''0'''"
 +
:*'''Тип сравнения''' - "'''>'''"
 +
 +
По ветке '''Ложь''', сценарий заканчивается. Это обозначает, что если коммутаций не было, их не надо удалять из таблицы. По ветке '''Правда''', необходимо удалить записи из таблицы '''FailedCalls_ACM'''.
 +
 +
Для этого используется компонент "'''delete failedcalls_acm'''". Выполняется следующий SQL-запрос.
 +
 +
delete from failedcalls_acm where idchain=@idchain
 +
 +
где
 +
 +
:*@idchain - сессионная переменная '''idchain_ACM'''.
 +
 +
Компонент "'''Отладочное уведомление'''" сообщает администратору об удалении записи из таблицы.
  
  
 
=== Модификация главного сценария ===
 
=== Модификация главного сценария ===
  
 +
В начало главного сценария добавляется проверка, был ли неудачный исходящий звонок на номер абонента. Если действительно был, абоненту предлагается нажать "'''1'''" для соединения с тем сотрудником, который ему звонил.
 +
 +
Ниже представлена только процедура проверки. Сценарий выглядит следующим образом:
 +
 +
 +
[[Файл:ОбратныйЗвонок-004.png |center]]
 +
 +
 +
Компонент "'''callerid'''" - присваивает переменной '''callerid''' значение функции '''Номер абонента (CallerId)'''.
 +
 +
Компонент "'''Поиск внутреннего номера'''" - определяет был ли неудачный звонок абоненту. Выполняется следующий SQL-запрос:
 +
 +
declare @dt1 datetime
 +
declare @dt2 datetime
 +
declare @dt3 datetime
 +
declare @u1 nvarchar(100)
 +
declare @u3 nvarchar(100)
 +
 +
set @dt1=cast ('1900-01-01' as datetime)
 +
set @dt2=cast ('1900-01-01'  as datetime)
 +
set @dt3=cast ('1900-01-01'  as datetime)
 +
 +
SELECT TOP 1 @dt1=[TimeStart], @u1=[AOutNumber]
 +
FROM [oktell].[dbo].[A_Stat_FailedCalls]
 +
where ANumberdialed='{'+@tel+'}'
 +
order by TimeStart desc
 +
 +
SELECT TOP 1 @dt2=[TimeStart]
 +
FROM [oktell].[dbo].[A_Stat_Connections_1x1]
 +
where (bstr=@tel and astr!='IVR') or (Astr=@tel and bstr!='IVR')
 +
order by TimeStart desc
 +
 +
SELECT TOP 1 @dt3=[calldate], @u3=[operator]
 +
FROM [oktell].[dbo].[FailedCalls_ACM]
 +
where number=@tel
 +
order by calldate desc
 +
 +
IF @dt1>@dt2 and @dt1>@dt3 begin set @u=@u1  return end
 +
IF @dt2>@dt1 and @dt2>@dt3 begin set @u='-1'  return end
 +
IF @dt3>@dt1 and @dt3>@dt1 begin set @u=@u3  return end
 +
 +
где
 +
 +
:*@tel - переменная '''callerid'''
 +
:*@u - переменная '''number''' (строковая)
 +
 +
Компонент "'''Номер не нашелся?'''" - определяет, нашелся или нет внутренний номер. Сравнивает переменную '''number''' и строку '''-1'''.
 +
:*'''Аргумент 1''' - переменная '''number'''
 +
:*'''Аргумент 2''' - строка "'''-1'''"
 +
:*'''Тип сравнения''' - "'''='''"
 +
 +
Если номер не найден, то произойдет переход по ветке '''Правда''' далее на главный сценарий.
 +
 +
Если номер найден, то абоненту предлагается ввести '''1''', чтобы соединиться с тем оператором, кто ему звонил.
 +
 +
Используется компонент преднабора "Введите 1". Компонент имеет следующие свойства:
 +
:* '''Файл''' - выберите звуковой файл, который будет проигрываться клиенту.
 +
:* '''Символы прерывания''' - "1"
 +
:* '''Макс время, с''' - максимальное время, в течении которого необходимо ввести число. В примере, '''5''' секунд.
 +
 +
Если клиент не хочет соединиться с оператором, то через 5 секунд, произойдет переход по ветке "'''Таймаут'''".
 +
 +
Если клиент нажал '''1''', то произойдет переключение на оператора с номером number.
 +
 +
Для этого служит компонент "'''Переключение на оператора'''"
 +
:* '''Назначение''' - '''Внутрь'''
 +
:* '''Номер''' - переменная '''number'''
 +
 +
 +
=== Дополнение ===
 +
 +
При желании учитывать неудачные исходящие вызовы по задачам, необходимо использовать таблицу '''[oktell_cc_temp].[dbo].[A_Cube_CC_EffortConnections]''' по полю '''AbonentNumber'''. К сожалению, информацию по оператору вы не получите, но сможете перевести на группу ответственных менеджеров, которые объяснят почему они звонили данному абоненту.
 +
 +
В этом случае необходимо изменить SQL-запрос "Номер не нашелся?".
  
 +
Если вы не используете автодозвон, ситуация облегчается. В этом случае необходимо только модифицировать главный сценарий.
  
 +
'''Скачать файлы сценариев:''' [[Media:%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D1%8B%D0%B9_%D0%B7%D0%B2%D0%BE%D0%BD%D0%BE%D0%BA.zip|Обратный звонок.zip]]
  
 
Запрос для создания таблицы '''FailedCalls_ACM''':
 
Запрос для создания таблицы '''FailedCalls_ACM''':
Строка 62: Строка 218:
 
  [number] [nvarchar](2000) NULL,
 
  [number] [nvarchar](2000) NULL,
 
  [calldate] [datetime] NULL,
 
  [calldate] [datetime] NULL,
 +
[operator] [nvarchar](2000) NULL,
 +
[idchain] [nvarchar](2000) NULL,
 
  PRIMARY KEY CLUSTERED  
 
  PRIMARY KEY CLUSTERED  
 
  (
 
  (

Текущая версия на 11:25, 31 марта 2023

Наверх

Задача: Клиенты крупных компаний часто могут обнаружить пропущенный звонок с городского номера и при попытке перезвонить попадают на голосовое меню. Становится совершенно непонятно, кто звонил и какой выбрать пункт меню. Предлагается ввести следующий пункт в меню "Если вы получили пропущенный, нажмите 5" и при выборе - клиент соединяется с оператором, который совершал ему звонок.

Решение задачи состоит из следующих этапов:

  • При звонке клиента, находится и анализируется информация по его последней коммутации.
  • Если обнаруживается, что это был неудачный исходящий звонок, клиенту предлагается соединиться с оператором, который совершал звонок.

ВНИМАНИЕ: Если вы не используете сценарий автодозвона, вы можете пропустить следующие три пункта и переходить к модифицированию главного сценария. Это связано с тем, что в базе данных Oktell не хранится информация по неудачным исходящим звонкам с использованием сервиса автодозвона, поэтому надо самостоятельно заносить данные в отдельную таблицу.


Создание таблицы учета неудачных исходящих по автодозвону

В базе данных oktell для решения задачи используются следующие таблицы:

  • таблица [oktell].[dbo].[A_Stat_Connections_1x1]. В ней можно найти все удачные исходящие звонки.
  • таблица [oktell].[dbo].[A_Stat_FailedCalls]. В ней можно найти в том числе все неудачные исходящие звонки, набранные в ручном режиме.

Этих данных недостаточно для определения последнего звонка к клиенту, так как операторы могут использовать сервис автодозвона на своем рабочем месте. В этом случае надо отдельно записывать все неудачные соединения по автодозвону в отдельную таблицу.

Для хранения информации по всем неудачным исходящих автодозвонам создана таблица "FailedCalls_ACM" со следующими полями:

  • Id - номер записи в списке. Тип Int, создается автоматически.
  • number -набираемый телефон клиента. Тип Nvarchar (auto).
  • calldate - дата звонка. Тип Datetime.
  • operator - внутренний номер пользователя внутри АТС. Тип Nvarchar (auto).

Модификация сценария автодозвона

В сценарий автодозвона необходимо добавить SQL-запрос с добавлением записи о исходящем звонке в таблицу FailedCalls_ACM. По умолчанию, каждый звонок считается неудачным, проверка происходит в сценарии обработки контента по ID цепочки коммутаций. Если определяется, что это был успешный звонок, то строка удаляется из таблицы.


ОбратныйЗвонок-001.png


Компонент "Старт 1" - в качестве параметра запуска переменная Номер (строковая). Переменная содержит набираемый номер.

Компонент "idchain_ACM, operator" - присваивает

  • сессионной переменной idchain_ACM (строковая) значение функции "Id сессии сценария". Это нужно для того, чтобы определить в сценарии контента были ли коммутации по данной цепочке.
  • переменной operator (строковая) значение функции Инициатор дозвона.Внутренний номер(пользователь).

Компонент "Дозвон" - производит дозвон на указанный номер. В компоненте установлены свойства:

  • Номер/команда - переменная Номер
  • Среда - Внешняя сеть
  • Обслуживание - Управляющий модуль
  • Направления - выберите направления

ВНИМАНИЕ: Успешный переход не обозначает, что оператор дозвонился до абонента. Абонент может не взять трубку, однако сценарий автодозвона будет завершен, требуется дальнейший анализ в сценарии обработки контента.

Компонент SQL-запроса "INSERT FailedCalls_ACM" ставится по всем неудачным веткам от компонента "Дозвон" и использует следующий текст запроса:

update FailedCalls_ACM
set calldate=getdate(),
operator=@operator,
idchain=@idchain
where number=@number

if @@rowcount=0 
begin
insert into FailedCalls_ACM (number,calldate, operator, idchain)
values (@number, getdate(), @operator, @idchain)
end

где

  • @idchain - переменная idchain_ACM (строковая).
  • @number - переменная Номер (строковая).
  • @operator - переменная operator (строковая).

Запрос позволяет использовать одну строку для одного абонента.

Если у вас более сложный сценарий, SQL-запрос добавления данных в таблицу надо поставить по неудачным веткам после каждого компонента "Дозвон"


Компонент "Отладочное уведомление" - оповещает администратора о добавленных значениях в таблицу FailedCalls_ACM. Текст уведомления - выражение:

'добавил в базу '+endline+ '[operator] '+[operator]+endline+ '[Номер] '+[Номер]+endline+  '[idchain] '+[idchain_ACM]

Служебный сценарий обработки контента

В сценарии обработки контента необходимо определить были ли коммутации по автодозвону. Если коммутации были, необходимо удалить запись о неуспешном дозвоне из таблицы FailedCalls_ACM. Сценарий выглядит следующим образом:


ОбратныйЗвонок-002.png


Компонент "Старт 1" - в качестве параметра запуска переменная content (строковая). Переменная содержит контент цепочки коммутаций.


Компонент "id chain" - сравнивает сессионную переменную idchain_ACM с пустой строкой. Если переменная не пустая, значит это анализ ситуации, связанной с автодозвоном.

  • Аргумент 1 - переменная idchain_ACM
  • Аргумент 2 - пустая строка
  • Тип сравнения - "="

Компонент "Количество коммутаций" - парсер определяет количество коммутаций по контенту.

  • Документ - переменная content
  • Алгоритм - язык OQuery для HTML
  • Поисковый запрос - строка
commutation:has([name=abonent])>[key=idconnection]
  • Функция - количество элементов
  • Результат в переменную - переменная comcount(строковая)


ОбратныйЗвонок-003.png


Переход к следующему компоненту происходит по основной ветке и по ветке "Ошибка".

Компонент "Есть коммутации?" - определяет были ли коммутации по автодозвону. Сравнивает переменную comcount и 0.

  • Аргумент 1 - переменная comcount
  • Аргумент 2 - строка "0"
  • Тип сравнения - ">"

По ветке Ложь, сценарий заканчивается. Это обозначает, что если коммутаций не было, их не надо удалять из таблицы. По ветке Правда, необходимо удалить записи из таблицы FailedCalls_ACM.

Для этого используется компонент "delete failedcalls_acm". Выполняется следующий SQL-запрос.

delete from failedcalls_acm where idchain=@idchain

где

  • @idchain - сессионная переменная idchain_ACM.

Компонент "Отладочное уведомление" сообщает администратору об удалении записи из таблицы.


Модификация главного сценария

В начало главного сценария добавляется проверка, был ли неудачный исходящий звонок на номер абонента. Если действительно был, абоненту предлагается нажать "1" для соединения с тем сотрудником, который ему звонил.

Ниже представлена только процедура проверки. Сценарий выглядит следующим образом:


ОбратныйЗвонок-004.png


Компонент "callerid" - присваивает переменной callerid значение функции Номер абонента (CallerId).

Компонент "Поиск внутреннего номера" - определяет был ли неудачный звонок абоненту. Выполняется следующий SQL-запрос:

declare @dt1 datetime
declare @dt2 datetime 
declare @dt3 datetime
declare @u1 nvarchar(100)
declare @u3 nvarchar(100)

set @dt1=cast ('1900-01-01' as datetime)
set @dt2=cast ('1900-01-01'  as datetime)
set @dt3=cast ('1900-01-01'  as datetime)

SELECT TOP 1 @dt1=[TimeStart], @u1=[AOutNumber]
FROM [oktell].[dbo].[A_Stat_FailedCalls]
where ANumberdialed='{'+@tel+'}' 
order by TimeStart desc

SELECT TOP 1 @dt2=[TimeStart]
FROM [oktell].[dbo].[A_Stat_Connections_1x1]
where (bstr=@tel and astr!='IVR') or (Astr=@tel and bstr!='IVR')
order by TimeStart desc

SELECT TOP 1 @dt3=[calldate], @u3=[operator]
FROM [oktell].[dbo].[FailedCalls_ACM]
where number=@tel
order by calldate desc

IF @dt1>@dt2 and @dt1>@dt3 begin set @u=@u1  return end
IF @dt2>@dt1 and @dt2>@dt3 begin set @u='-1'  return end
IF @dt3>@dt1 and @dt3>@dt1 begin set @u=@u3   return end

где

  • @tel - переменная callerid
  • @u - переменная number (строковая)

Компонент "Номер не нашелся?" - определяет, нашелся или нет внутренний номер. Сравнивает переменную number и строку -1.

  • Аргумент 1 - переменная number
  • Аргумент 2 - строка "-1"
  • Тип сравнения - "="

Если номер не найден, то произойдет переход по ветке Правда далее на главный сценарий.

Если номер найден, то абоненту предлагается ввести 1, чтобы соединиться с тем оператором, кто ему звонил.

Используется компонент преднабора "Введите 1". Компонент имеет следующие свойства:

  • Файл - выберите звуковой файл, который будет проигрываться клиенту.
  • Символы прерывания - "1"
  • Макс время, с - максимальное время, в течении которого необходимо ввести число. В примере, 5 секунд.

Если клиент не хочет соединиться с оператором, то через 5 секунд, произойдет переход по ветке "Таймаут".

Если клиент нажал 1, то произойдет переключение на оператора с номером number.

Для этого служит компонент "Переключение на оператора"

  • Назначение - Внутрь
  • Номер - переменная number


Дополнение

При желании учитывать неудачные исходящие вызовы по задачам, необходимо использовать таблицу [oktell_cc_temp].[dbo].[A_Cube_CC_EffortConnections] по полю AbonentNumber. К сожалению, информацию по оператору вы не получите, но сможете перевести на группу ответственных менеджеров, которые объяснят почему они звонили данному абоненту.

В этом случае необходимо изменить SQL-запрос "Номер не нашелся?".

Если вы не используете автодозвон, ситуация облегчается. В этом случае необходимо только модифицировать главный сценарий.

Скачать файлы сценариев: Обратный звонок.zip

Запрос для создания таблицы FailedCalls_ACM:

USE [oktell]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[FailedCalls_ACM](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[number] [nvarchar](2000) NULL,
	[calldate] [datetime] NULL,
	[operator] [nvarchar](2000) NULL,
	[idchain] [nvarchar](2000) NULL,
PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO