Infinity X – краткое описание БД статистики
Общая информация
База данных статистики по умолчанию создается под управлением СУБД PostgreSQL и имеет наименование Cx_Statistics. При стандартных настройках СУБД PostgreSQL расположена на порту 10000, логин cxdbuser, пароль cxdbwizard.
Первичный ключ в большинстве таблиц – поле IDс типом bigint. Обеспечивается сквозная уникальность идентификаторов при помощи единого генератора a_gen_id, расположенного в БД Cx_Configuration.
Описание таблиц
S_Seances – звонки (синонимы: сеансы, цепочки, обращения). Звонок описывается одной строкой, которая содержит информацию о его переводах, удержаниях и т.д. Информация о первых нескольких переводах содержится в полях B1*, B2*, B3*, B4*, BL* таблицы. Более подробная информация – в таблице S_Connections
S_Connections– разговоры (синонимы: соединения, коммутации). Один звонок состоит, как правило, из нескольких разговоров. В разговоре участвует два абонента (за исключением конференций). Разговор может быть записан, поэтому именно в этой таблице хранятся имена файлов записанного разговора.
S_Calls– вызовы. Вызов – это информация об одном абоненте, который участвует в разговоре. В разные моменты времени один и тот же вызов может быть участвовать в разных разговорах.
Примечание: заполнение таблиц Seances-Connections-Callsможет иметь особенности в зависимости от используемого коммутатора.
S_CallsAndConnections– привязка вызовов к разговорам.
S_CMCalls – информация из инструмента «Управление звонками». Фактически, это вызовы операторов, по которым формируется информация для инструмента «Мои звонки».
S_ACDCalls – переключения звонков в очереди распределения вызовов и кампании.
S_ACDQueuesMembers – участие операторов в очередях распределения вызовов и кампаниях.
S_UsersStates – история статусов операторов
S_Campaigns – запуски кампаний. Одна строка соответствует одному запуску кампании и содержит суммарные показатели по каждому состоянию контрагента и попытки дозвона.
S_CampaignsCalls– попытки дозвона кампаний. Одна строка соответствует одной попытке дозвона.
S_ControlEvents – контрольные события.
S_CallBackRequests – заказы встречных звонков (из IVRи из очередей распределения вызовов)
S_VoiceMail – сообщения голосовой почты.
S_Notifications – уведомления пользователей (всплывающие окна).
S_Screenshots – скриншоты рабочих мест.
Описаниеполей
ID – уникальный идентификатор записи
IDXXXX – как правило, внешние ключи. XXXX указывает на связанную таблицу. Например, IDSeance в таблице S_Connections – ссылка на таблицу S_Seances.
Во многих таблицах дата и время события хранится в трех полях: дата-время, дата, время. Эта избыточность позволяет обеспечить высокую производительность при построении отчетов.
Время и продолжительность имеют тип doubleprecision. Значение 1 соответствует 1 суткам. Таким образом, значение поля *24*60*60 – количество секунд.
Перечислимыетипыданных
CampaignContragentState: ACDCalls.ACDItemState, CampaignsCalls.State, ContragentState/CallState (Campaigns.CAStateXX, Campaigns.CallStateXX)
CallDirection: CMCalls.Direction, Calls.CallDirection
CallResult: CMCalls.Result, Calls.CallResult
CallState: CMCalls.State, Calls.CallState
CampaignState: Campaigns.State
ConnectionDirection: Connections.ConnectionDirection
ConnectionAbonentType: Connections.AbonentType
ConnectionDisconectSide: Connections.DisconnectSide
ConnectionState: Connections.ConnectionState
SeanceType: Seances.SeanceType
SeanceResult: Seances.SeanceResult
SeanceAbonentType: Seances.AbonentType
SeanceAbonentKind: Seances.AbonentKind
SeanceState: Seances.SeanceState
enum CallState
{
CallStateUnknown = 0, // Неизвестно
CallStateRinging = 1, // Звонок
CallStateReminder = 2, // Напоминание
CallStateDialtone = 11, // Гудок
CallStateDialNumber = 12, // Наборномера
CallStateAlerting = 13, // Ожиданиеответа
CallStateConnected = 21, // Налинии
CallStateConference = 31, // Конференция, активная сторона
CallStateInConference = 32, // В конференции, пассивная сторона
CallStateHold = 41, // Удержание, активная сторона
CallStateOnHold = 42, // На удержании, пассивная сторона
CallStateTransfer = 51, // Перевод начат
CallStateTransferFinishing = 52,// Перевод завершается
CallStateJoining = 53, // Добавление в конференцию начато
CallStateJoiningFinishing = 54, // Добавление в конференцию завершается
CallStateDisconnected = 99, // Завершен, но канал еще не свободен
CallStateFinished = 100, // Завершен
CallStateFailed = 200, // Завершен с ошибкой
CallStateNoLines = 201 // Нет линий
};
enum ConnectionDisconnectSide
{
ConnectionDisconnectSideUnknown = 0,
ConnectionDisconnectSideA = 1,
ConnectionDisconnectSideB = 2
};
enum CallResult
{
CallResultUnknown = 0,
CallResultSuccessfull = 101, // Успешно завершен (время разговора > 0)
CallResultBusy = 111, // Занято (время разговора = 0)
CallResultNoAnswer = 112, // Нет ответа (время разговора = 0)
CallResultBadNumber = 113, // Неверный номер (время разговора = 0)
CallResultLost = 121, // Пропущен (время разговора = 0)
CallResultCanceled = 131, // Не дождались и отбились (время разговора = 0)
CallResultError = 200 // Ошибка
};
enum ConnectionSide
{
ConnectionSideUnknown = 0,
ConnectionSideA = 1,
ConnectionSideB = 2
};
enum ConnectionDirection
{
ConnectionDirectionUnknown = 0,
ConnectionDirectionIncoming = 1,
ConnectionDirectionOutgoing = 2,
ConnectionDirectionInner = 3,
ConnectionDirectionExternal = 4
};
enum ConnectionState
{
ConnectionStateUnknown = 0, // Неизвестно
ConnectionStateWaiting = 1, // Ожиданиеответа
ConnectionStateTalking = 21, // Разговордвухабонентов
ConnectionStateConference = 31, // Конференция
ConnectionStateHold = 41, // Удержание
ConnectionStateDisconnected = 99, // Соединение завершено, но канал еще не свободен
ConnectionStateFinished = 100 // Завершен
};
enum ConnectionAbonentType
{
ConnectionAbonentTypeUnknown = 0,
ConnectionAbonentTypeInner = 1,
ConnectionAbonentTypeOuter = 2,
ConnectionAbonentTypeHold = 11, // deprecated
ConnectionAbonentTypeVirtual = 12
};
enum SeanceType
{
SeanceTypeUnknown = 0,
SeanceTypeIncoming = 1,
SeanceTypeOutgoing = 2,
SeanceTypeInner = 3,
};
enum SeanceAbonentKind
{
SeanceAbonentKindUnknown = 0,
SeanceAbonentKindA = 1,
SeanceAbonentKindB = 2,
SeanceAbonentKindC = 3,
};
enum SeanceState
{
SeanceStateUnknown = 0, // Неизвестно
SeanceStateDialing = 12, // Наборномера
SeanceStateWaiting = 13, // Ожиданиеответа
SeanceStateTalking = 21, // Разговор двух абонентов
SeanceStateConference = 31, // Конференция
SeanceStateHold = 41, // Удержание
SeanceStateFinished = 100 // Завершен
};
enum SeanceResult
{
SeanceResultUnknown = 0, // Неизвестно
SeanceResultSuccessfull = 100, // Успешно
SeanceResultFirstOperator = 101, // Обработанпервымоператором
SeanceResultOperators = 102, // Обработаноператорами
SeanceResultExternal = 103, // Обработанвнешнимагентом
SeanceResultConference = 104, // Обработанвконференции
SeanceResultBusy = 111, // Занято
SeanceResultNoAnswer = 112, // Неподнялитрубку
SeanceResultBadNumber = 113, // Номернесуществует
SeanceResultIVR = 114, // Обработанв IVR
SeanceResultCanceled = 131, // Звонящий не дождался ответа и отбился
SeanceResultFax = 141, // Сработал факс
SeanceResultTooShort = 151, // Слишком короткий разговор
SeanceResultLostInWaiting = 191, // Потерян во время ожидания ответа
SeanceResultLostInHold = 192, // Потерянвовремяудержания
SeanceResultError = 200
};
enum SeanceAbonentType
{
SeanceAbonentTypeUnknown = 0,
SeanceAbonentTypeInner = 1,
SeanceAbonentTypeOuter = 2,
SeanceAbonentTypeIVR = 3,
SeanceAbonentTypeACD = 4,
};
enum CampaignContragentState
{
CampaignContragentStateUnknown, // 0
//Проверка
CampaignContragentStateChecking, //1
//[CxEnumerationItem("Некорректныеномерателефона")]
CampaignContragentStateBadNumbers, // 2
//[CxEnumerationItem("Пропущен")]
CampaignContragentStateSkipped, // 3
//[CxEnumerationItem("Наборномера...")]
CampaignContragentStateDialing, // 4
//[CxEnumerationItem("Ожидание...")]
CampaignContragentStateWaiting, // 5
//[CxEnumerationItem("Обрабатывается")]
CampaignContragentStateTalking, // 6
//[CxEnumerationItem("Обработан")]
CampaignContragentStateFinished, // 7
//[CxEnumerationItem("Ошибка")]
CampaignContragentStateError, // 8
//[CxEnumerationItem("Занято")]
CampaignContragentStateBusy, // 9
//[CxEnumerationItem("Нетответа")]
CampaignContragentStateNoAnswer, // 10
//[CxEnumerationItem("Нетсвободныхлиний")]
CampaignContragentStateNoLines, // 11
//[CxEnumerationItem("Потерян")]
CampaignContragentStateLost, // 12
//[CxEnumerationItem("Оператор отказался от звонка")]
CampaignContragentStateOperatorRefused, // 13
//Ожиданиеповтора(Занято)
CampaignContragentStateWaitingForReplayOnBusy, // 14
//Ожиданиеповтора(Нетответа)
CampaignContragentStateWaitingForReplayOnNoAnswer, // 15
//[CxEnumerationItem("Звонокперенесён")]
CampaignContragentStateRepeatCall, // 16
//[CxEnumerationItem("Отправка")]
CampaignContragentStateSending, // 17
//[CxEnumerationItem("Отправлено")]
CampaignContragentStateSent, // 18
//[CxEnumerationItem("Доставлено")]
CampaignContragentStateDelivered, // 19
//[CxEnumerationItem("Короткийразговор")]
CampaignContragentStateShortTalk, // 20
//[CxEnumerationItem("Факс")]
CampaignContragentStateFax, // 21
//[CxEnumerationItem("Недоступен")]
CampaignContragentStateUnavailable, // 22
//[CxEnumerationItem("Автоответчик")]
CampaignContragentStateVoiceMail, // 23
//[CxEnumerationItem("Некорректныйответабонента")]
CampaignContragentStateIncorrectContragentAnswer, // 24
Reserved_25,
Reserved_26,
Reserved_27,
Reserved_28,
Reserved_29,
Reserved_30,
// For ACD only
CampaignContragentStateTransfering = 101,
ACDStateGrabbed = 102,
};
enum CampaignState
{
CampaignStateUnknown, // 0
//[CxEnumerationItem("Остановлена", 1395)]
CampaignStateStoped, // 1
//[CxEnumerationItem("Остановка...", 1494)]
CampaignStateStopping, // 2
//[CxEnumerationItem("Запуск...", 1490)]
CampaignStateStarting, // 3
//[CxEnumerationItem("Работает", 1394)]
CampaignStateRunning, // 4
//[CxEnumerationItem("Ошибка", 1346)]
CampaignStateError // 5
};