Обратный звонок с мобильного в ответ на пропущенный от Oktell — различия между версиями
м (→Дополнение) |
|||
(не показано 9 промежуточных версии этого же участника) | |||
Строка 1: | Строка 1: | ||
[[Практики|Наверх]] | [[Практики|Наверх]] | ||
+ | |||
+ | __TOC__ | ||
'''Задача:''' Клиенты крупных компаний часто могут обнаружить пропущенный звонок с городского номера и при попытке перезвонить попадают на голосовое меню. Становится совершенно непонятно, кто звонил и какой выбрать пункт меню. Предлагается ввести следующий пункт в меню "''Если вы получили пропущенный, нажмите 5''" и при выборе - клиент соединяется с оператором, который совершал ему звонок. | '''Задача:''' Клиенты крупных компаний часто могут обнаружить пропущенный звонок с городского номера и при попытке перезвонить попадают на голосовое меню. Становится совершенно непонятно, кто звонил и какой выбрать пункт меню. Предлагается ввести следующий пункт в меню "''Если вы получили пропущенный, нажмите 5''" и при выборе - клиент соединяется с оператором, который совершал ему звонок. | ||
− | При | + | Решение задачи состоит из следующих этапов: |
+ | * При звонке клиента, находится и анализируется информация по его последней коммутации. | ||
+ | * Если обнаруживается, что это был неудачный исходящий звонок, клиенту предлагается соединиться с оператором, который совершал звонок. | ||
+ | |||
+ | <span style="color:red"> ВНИМАНИЕ: Если вы не используете сценарий автодозвона, вы можете пропустить следующие три пункта и переходить к модифицированию главного сценария. </span> Это связано с тем, что в базе данных '''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 |center]] | ||
+ | |||
+ | |||
+ | Компонент "Старт 1" - в качестве параметра запуска переменная '''Номер''' (строковая). Переменная содержит набираемый номер. | ||
+ | |||
+ | Компонент "'''idchain_ACM, operator'''" - присваивает | ||
+ | * сессионной переменной '''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 | ||
+ | |||
+ | где | ||
+ | |||
+ | *'''@idchain''' - переменная '''idchain_ACM''' (строковая). | ||
+ | *'''@number''' - переменная '''Номер''' (строковая). | ||
+ | *'''@operator''' - переменная '''operator''' (строковая). | ||
+ | |||
+ | Запрос позволяет использовать одну строку для одного абонента. | ||
+ | |||
+ | Если у вас более сложный сценарий, 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''': | ||
− | === | + | 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 |
Текущая версия на 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 цепочки коммутаций. Если определяется, что это был успешный звонок, то строка удаляется из таблицы.
Компонент "Старт 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. Сценарий выглядит следующим образом:
Компонент "Старт 1" - в качестве параметра запуска переменная content (строковая). Переменная содержит контент цепочки коммутаций.
Компонент "id chain" - сравнивает сессионную переменную idchain_ACM с пустой строкой. Если переменная не пустая, значит это анализ ситуации, связанной с автодозвоном.
- Аргумент 1 - переменная idchain_ACM
- Аргумент 2 - пустая строка
- Тип сравнения - "="
Компонент "Количество коммутаций" - парсер определяет количество коммутаций по контенту.
- Документ - переменная content
- Алгоритм - язык OQuery для HTML
- Поисковый запрос - строка
commutation:has([name=abonent])>[key=idconnection]
- Функция - количество элементов
- Результат в переменную - переменная comcount(строковая)
Переход к следующему компоненту происходит по основной ветке и по ветке "Ошибка".
Компонент "Есть коммутации?" - определяет были ли коммутации по автодозвону. Сравнивает переменную comcount и 0.
- Аргумент 1 - переменная comcount
- Аргумент 2 - строка "0"
- Тип сравнения - ">"
По ветке Ложь, сценарий заканчивается. Это обозначает, что если коммутаций не было, их не надо удалять из таблицы. По ветке Правда, необходимо удалить записи из таблицы FailedCalls_ACM.
Для этого используется компонент "delete failedcalls_acm". Выполняется следующий SQL-запрос.
delete from failedcalls_acm where idchain=@idchain
где
- @idchain - сессионная переменная idchain_ACM.
Компонент "Отладочное уведомление" сообщает администратору об удалении записи из таблицы.
Модификация главного сценария
В начало главного сценария добавляется проверка, был ли неудачный исходящий звонок на номер абонента. Если действительно был, абоненту предлагается нажать "1" для соединения с тем сотрудником, который ему звонил.
Ниже представлена только процедура проверки. Сценарий выглядит следующим образом:
Компонент "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