Задачи: Абоненты


Вкладка определяет прикрепленную таблицу абонентов и формат общения задачи с ней.

Таблица абонентов

Указывает на прикрепленную к задаче таблицу абонентов (из существующих в текущем проекте). Исходящие задачи используют таблицу для осуществления звонков. Входящие задачи могут корректно использовать только ту таблицу абонентов, в основе которой лежит таблица БД. Входящие задачи по выбору могут искать абонента по определившемуся номеру в таблице или для каждого звонка создавать новую запись. В соответствии с настройками таблицы абонентов, часть информации из списка будет отображена во всплывающих «PopUp» окнах на рабочем месте оператора, в случае если рабочее место оператора компьютеризировано. Номера абонента для дозвона берутся из столбцов, отмеченных свойством «Телефон». При смене списка у существующей задачи, статистика по произведенным звонкам не теряется, но задача полностью синхронизирует свой внутренний список с таблицей абонентов. Аналогично задача ведет себя при изменениях, вносимых в назначенную ей таблицу абонентов в модуле Таблицы абонентов.

Метод работы с таблицей

Доступно только для исходящих задач. Определяет один из нескольких вариантов работы с данными в таблице абонентов.

  • Загрузка в память и синхронизация. Выставляется по умолчанию. В оперативной памяти создается кэш с данными по идентификаторам и телефонам всех абонентов таблицы. Периодически производится полная синхронизация с БД. Следует иметь в виду, что ресурсы системы ограничены, и поэтому использование этого метода ограничено определенными объемами данных в таблице абонентов. Рост объема влияет как на время синхронизации, так и на общее время обработки. При объеме таблицы более 100 тысяч абонентов рекомендуется использовать альтернативные методы работы с таблицей. В зависимости от производительности и объема оперативной памяти сервера указанное число может возрастать до 1 млн (на все активные задачи).

Кэш внутри БД, встроенный метод. Методы кэширования в БД существенно снижают нагрузку и могут быть использованы в любом случае и на любых объемах. Однако при этом исключается возможность использования уникальных приоритетов обхода таблицы, приведенных ниже. Активный в этом случае приоритет обхода аналогичен комбинации {По абонентам, поочередно, поочередно}. В случае массовых задач это не играет большой роли, поскольку оповещение занимает достаточно длительный период. В ходе синхронизации на основе прикрепленной таблицы абонентов в БД строится кэш-таблица (A_TaskManager_Idx_{Идентификатор задачи}), содержащая идентификаторы и состояния абонентов, на которой затем базируется алгоритм поиска абонента для совершения очередного звонка. Не исключается внешнее воздействие на таблицу кэша в целях управления алгоритмом выборки.

  • Сценарий поиска абонента. Менеджер задач позволяет использовать совершенно внешний алгоритм поиска абонентов. Делается это посредством служебного сценария поиска абонентов, на каждой итерации вызова которого ожидается получение трех значений: числовой идентификатор абонента в списке, номер для набора, признак завершенности списка/задачи. В этом режиме синхронизация не проводится, так как кэш из управления сервером Oktell вынесен в логику сценария. Любая возвращенная сценарием связка (ид абонента, номер абонента) отправляется в набор вне зависимости от фактического присутствия указанной пары в прикрепленной к задаче таблице абонентов. Однако с проверкой состояния по таблицам собственной оперативной статистики - если проставлен конечный результат или превышено установленное число неудачных попыток дозвона, то сервер воздерживается от набора и вызывает сценарий еще раз. Прикрепленная таблица абонентов используется только для получения доступа к информационным полям и отображения операторам, для операций с переменными типа «Поле таблицы», а также возможно для последующих статистических операций. Для работы метода требуется указание служебного сценария поиска абонента (ниже).

ВНИМАНИЕ! В обязательном порядке проверяйте наличие индексов по полю идентификатора прикрепленной таблицы абонентов. Особенно это важно при выборе метода работы с таблицей через кэш в БД на больших объемах (более 100 тысяч записей).

ВНИМАНИЕ! Процесс поиска оператора/линии/абонента производится менеджером задач линейно. В случае, если сценарий поиска абонентов работает долго, это отразится на отсутствии исходящих звонков по всем исходящим голосовым задачам.

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

Доступно только для исходящих задач, работающих с таблицей через сценарий поиска абонентов (выше). Устанавливает служебный сценарий (в списке предлагается выбор среди проектных сценариев, однако вручную можно указать название любого общего служебного сценария), который вызывается всякий раз, когда менеджер задач принимает решение о необходимости запуска очередного набора номера. Цель сценария вернуть идентификатор абонента в служебную переменную «Возвращаемое значение 1», а также номер, который следует набирать при этом в служебную переменную «Возвращаемое значение 2». В случае, если сценарий не возвращает корректного идентификатора, он должен указать, является ли это временным. Если задача завершена необходимо установить значение «1» в служебную переменную «Возвращаемое значение 3»).

На вход сценарий в качестве стандартных функций служебного сценария принимает информацию о задаче. В качестве неявных параметров передаются:

  • Входной параметр 1 - идентификатор списка
  • Входной параметр 2 - режим вызова («1»-выполнение в потоке менеджера задач с инициативой одиночного запуска, «2»-выполнение в потоке прогрессивного пула с инициативой множественного запуска)
  • Входной параметр 3 - идентификатор сессии поиска. Выбранный абонент может не пойти в набор по ряду причин: абонент уже в звонке, превышено количество попыток дозвона и др. В этом случае, сценарий поиска абонента запустится с тем же идентификатором сессии, тем самым вы поймете, что предыдущий номер не ушел в набор. Сессия прекратится, если абонент успешно отправится в набор или после двух неуспешных попыток. Если идентификатор сессии поменялся, это означает что предыдущая сессия завершилась.
  • Входной параметр 4 - идентификатор оператора (для задач с поиском абонента для оператора). Код инициатора запуска служебного сценария - 21.

ВНИМАНИЕ! Рекомендуется, но не требуется, чтобы возвращаемые номера и даже идентификаторы однозначно соответствовали таблице абонентов. При выбранном режиме поиска абонентов через сценарий таблица абонентов может быть вовсе пуста, при этом набор будет осуществляться, пока сценарий возвращает уникальные корректные значения идентификаторов и номеров.

Задача проверяет возвращаемые сценарием поиска номер и идентификатор абонента и осуществляет фильтрацию по общим правилам. Так например, набор номера не начнется, если предыдущая попытка набора этого же номера еще не завершена, или оператором было ранее установлено и еще не достигнуто время следующего звонка на номер, или число звонков на номер уже превысило допустимое значение. Чтобы оказать влияние на применение тех или иных фильтров следует устанавливать специальные значения служебной переменной «возвращаемое значение 3»:

- 10 - не использовать фильтры вообще, всегда начинать набор номера;

- 11 - проверять только количество занято;

- 12 - проверять только количество не отвечает;

- 13 - проверять только таймауты номера. Если время следующей попытки набора для номера еще не подошло, то номер в набор не отправится

- 14 - проверять только таймауты абонента. Если время следующей попытки набора для абонента еще не подошло, то номер в набор не отправится

- 15 – проверять завершен ли абонент по признаку «Успешно завершен».

- 16 – проверять завершен ли абонент по признаку «Закончились все попытки дозвона»;

- 17 – проверять завершен ли абонент по признаку «Удален из набора».

- Для значений 11-17 возможно указание перечислений, например «11, 12, 16».

Отправлять оператору запрос на подтверждение дозвона абоненту

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

Заполнение таблицы

Доступно только для входящих задач. Определяет формат поиска строки в таблице абонентов. Среди вариантов:

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

Пытаться соединять с оператором, обслуживавшим предыдущий звонок абонента

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

Интервал синхронизации

Доступно только для исходящих задач, работающих с кэшем в памяти или в БД. Определяет промежуток времени до следующей обязательной синхронизации. От 1 минуты до 1 суток. Синхронизация проводится периодически и без учета интервала, в том случае, если список обработан до конца и необходим повторный проход.

Интервал синхронизации при отсутствии активности

Доступно только для исходящих задач, работающих с кэшем в памяти или в БД, остановка которых не предусматривается (параметр «завершить задачу» установлен в «никогда»). В случае, если в списке не осталось ни одного абонента, куда бы задача могла позвонить, она переходит в ожидание с учащенной синхронизацией. Период этой синхронизации указан в данном свойстве. От 1 минуты до 2 часов. Значение 0 в поле фактически соответствует интервалу в 10 секунд.

Синхронизировать со списком при каждой активации

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

Использовать алгоритм перезвона абонентам строго в назначенное время

Доступно только для исходящих задач, работающих с кэшем в памяти и автоматизированным поиском абонента (не посредством ручного выбора). В случае активации режима система осуществляет автоматический постоянный мониторинг находящихся в кэше задачи абонентов на предмет возможности осуществления звонка. Производится отслеживание только тех абонентов, звонок которым уже производился, был выбран результат звонка «Перезвонить абоненту..» (именно абоненту!) и указан период ожидания или время, не ранее которого очередной вызов должен быть произведен. Выставление результата может произойти как в стоп-форме (оператором), так и в сценарии (автоматически на основе заложенного алгоритма).

Использовать скилл-тэги

Доступно для исходящих задач всех типов, за исключением тех, которые осуществляют поиска абонента для оператора. Режим активируется только в случае использования таблицы абонентов с выбранным типом поля скилл-тэги. Среди операторов задачи для обслуживания конкретного абонента привлекаются только те, у которых в списке скилл-тэгов присутствуют требуемые таблицей абонентов скиллы.

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

ВНИМАНИЕ! При формировании задания на перезвон в указанное время для номера автоматически сбрасываются счетчики попыток с результатами «Занято» и «Не отвечает». Если указаны один или несколько альтернативных номеров, то все они считаются приоритетными. Если альтернативный номер не указывается, то приоритетным считается текущий номер, в ходе которого был получен результат «Перезвонить абоненту..». В случае истечения допустимого количества неудачных попыток дозвона производится возврат абонента из приоритетных в общий список со сбросом счетчиков попыток с результатами «Занято» и «Не отвечает».

ВНИМАНИЕ! Следует иметь в виду, что для решения поставленной задачи автоматического перезвона строго в назначенное время автоматика работает оптимально только при определенных ограниченных объемах поступающих на перезвон абонентов. Если их количество таково, что последовательная их обработка при средней продолжительности звонка на используемом количестве линий и операторов не укладывается в разумное время, задача перестанет корректно функционировать, полностью сосредоточив внимание на абонентах для перезвона с применением «нестрогого» алгоритма их обхода. В ряде случаев имеет смысл отключать механизм перезвона или использовать альтернативные методы работы с таблицей абонентов в целях более тонкой наладки корректного процесса перезвона.


Несколько следующих параметров определяют большое множество вариантов обхода абонентов. Практически любую постановку можно приближенно настроить в задаче, выставив их соответствующим образом. После описания будет приведено несколько примеров для более четкого понимания. Приоритеты обхода доступны только для задач, осуществляющих дозвон до абонентов по единому списку (все типы кроме задач с ручным выбором абонентов и распределенным списком).

Приоритет обхода абонентов

Доступно только для исходящих задач. Определяет способ поиска очередного абонента в таблице при необходимости осуществить звонок на иных абонентов.

  • Строгий - Список абонентов всегда обрабатывается с самого начала. Второй абонент не будет обрабатываться, пока по первому абоненту не будет получен конечный результат (положительный или отрицательный).
  • Нестрогий - Список абонентов всегда обрабатывается с самого начала. Обрабатывается тот абонент, который находится ближе всех к началу списка и на который есть возможность осуществить звонок (результат по абоненту еще не достигнут, на абонента не установлены таймауты ожидания).
  • Отсутствует - Производится обработка следующего по списку абонента (циклический обход).
  • Случайный - Производится случайная выборка из равномерного распределения по таблице абонентов.

Приоритет обхода номеров

Доступно только для исходящих задач. Определяет способ поиска очередного номера абонента в таблице при необходимости осуществить звонок на иные номера конкретного абонента.

  • Строгий - Список номеров текущего абонента всегда обрабатывается с самого начала. Второй номер не будет обрабатываться, пока по первому номеру не будет получен конечный результат (положительный или отрицательный).
  • Нестрогий - Список номеров абонента всегда обрабатывается с самого начала. В реализацию идет тот номер, который ближе всех к началу списка и на который есть возможность осуществить звонок (результат по абоненту еще не достигнут, номер не отбракован, ни на абонента, ни на номер не установлены таймауты ожидания).
  • Отсутствует - Производится обработка следующего по списку номера абонента (циклический обход).
  • Случайный - Производится случайная выборка из равномерного распределения по номерам абонента.

Общий приоритет обхода

Доступно только для исходящих задач. При необходимости (или если угодно возможности) произвести очередной звонок, определяет каким способом искать номер – отдать предпочтение выбору нового абонента или попробовать другие номера текущего абонента. Возможные варианты:

  • Абоненты
  • Номера

Прогрессивный обход

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

  • Абоненты
  • Номера

Лояльность к абонентам

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

Пример. Настроен прогрессивный обзвон с распределением по 5 абонентов на оператора. Очередь ожидания не включена. Задача резервирует оператора и начинает дозвон на 5 абонентов. Как только один абонент поднимет трубку, остальные дозвоны прекратятся. Каждому абоненту зафиксируется причиненное неудобство. Если включена, например, средняя лояльность, то задача допустит еще 2 подобных случая, после чего перенесет абонента в конец списка. После основной части обзвона, задача перейдет к обзвону «один-к-одному», то есть на одного оператора будет распределяться один конкретный абонент, которому прежде были причинены неудобства.

  • Отсутствует - настройка не используется, задача будет постоянно забирать абонента в пул для дозвона;
  • Средняя лояльность - абоненту причиняется 3 неудобства, после чего система начинает работать с ним как с единственным;
  • Полная лояльность - после первого неудобства, система начинает работать с абонентом, как с единственным;

Задачи с ручным выбором абонентов и распределенным списком имеют несколько индивидуальных свойств и возможностей. При создании такой задачи супервизору необходимо провести разбиение списка по операторам.

Распределение абонентов

Поровну или вручную. В первом случае список делится на всех операторов задачи равномерно. Во втором случае супервизору необходимо задать правила распределения.

Таблица распределения

Доступно указание начальных букв, диапазонов букв, количества абонентов (берется подряд после операций с буквами) или процента. После нажатия кнопки «Перераспределить» в БД создается кэш-таблица, согласно которой производится обработка задачи модулем управления.


ВНИМАНИЕ! Добавление операторов в реальном времени в задачу с распределенным списком в модуле управления ресурсами не даст результата, если при разбиении списка оператор не присутствовал в задаче. Необходимо также произвести переброс части абонентов на оператора. Это можно сделать в модуле управления ресурсами на вкладке «Абоненты».


ВНИМАНИЕ! После выполнения одним из операторов всех своих заданий (в соответствии с установками задачи) супервизоры получат соответствующее уведомление.