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

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

Таблица нужна не только для обзвона Во входящей задаче она тоже работает, и в трёх режимах: создавать новую запись на каждый звонок, искать существующую по определившемуся номеру для просмотра и правки, либо вовсе отклонять звонки от абонентов, которых нет в списке. Что именно произойдёт — определяют сценарий и настройки задачи.

Модуль доступен администраторам базы и пользователям с соответствующим правом при регистрации в call-центре. Таблицы подчиняются политике прав доступа с привилегиями чтения и изменения.

В двойном списке слева выбирается проект, справа отображаются его таблицы.

Локальные таблицы

Создаются автоматически внутри оперативной базы Октелл. Вы задаёте столбцы и заполняете данными — вставкой из буфера обмена или импортом из файлов MS Excel.

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

Столбцы и типы данных

По умолчанию все столбцы строковые — nvarchar с авторазмерностью до 2000. Тип можно поменять, система попытается преобразовать данные автоматически.

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

Столбец Id есть всегда — это идентификатор абонента. Поэтому в локальной таблице, в отличие от внешней, каждая строка гарантированно соответствует одному абоненту.

Имя таблицы в базе

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

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

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

При удалении локального списка система спросит, удалять ли физическую таблицу: её можно оставить в базе.

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

Внешние таблицы

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

Способ подключения

Доступны механизмы ADO, OLE, ODBC, Oracle. По умолчанию — подключение к собственной базе Октелл.

Лучше, чем линковка Прямое подключение к внешней базе с указанием строки подключения — более оптимальная альтернатива линковке базы к серверу базы данных.

Строка подключения

Требуется, если выбран способ, отличный от собственной базы. Строка не должна содержать название провайдера — он указывается отдельно и подставляется автоматически, поскольку строка используется как параметр команды OPENROWSET в хранимых процедурах MS SQL Server.

Excel:      Excel 8.0;Database=D:\monitor.xls;
MS SQL:     server=DOMAIN;database=databasename;uid=login;pwd=password;

Провайдер данных

Нужен для OLE, ODBC и Oracle. Имя подставляется аргументом в OPENROWSET и дополняет строку подключения для доступа из службы сервера телефонии. Например Microsoft.Jet.OLEDB.4.0 или SQLOLEDB.

Ограничения драйверов без поддержки T-SQL Часть функций перестаёт работать. При подключении файлов Microsoft Excel недоступно распределение абонентов по операторам с указанием начальных символов имён — нет команд Substring и Cast. Без поддержки like и символа % становится невозможен поиск по номерам.
Большие внешние таблицы работают медленно Задачи с ручным выбором абонентов, с распределением по операторам и работающие через кэш в базе требуют полного перекачивания данных с удалённого сервера на локальный при каждой синхронизации. На больших таблицах это заметно по времени.

Таблица и запрос

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

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

Запрос — живая выборка Со временем он может возвращать разные данные. В исходящей задаче при каждой синхронизации перечень абонентов будет корректироваться в соответствии с текущей выборкой. Это можно использовать: задача сама подхватит новых должников, как только они появятся в базе.
Ограничения на текст запроса Ваш запрос будет обёрнут в другой: select * from ([ваш запрос]). Поэтому операторы declare и set не допускаются, а ORDER BY разрешён только вместе с TOP. Если базовая таблица с идентификаторами абонентов не указана в дополнение к запросу, сохранение вводимых данных будет невозможно.

Флаг «Запрашивать данные только из прикреплённой таблицы»

Доступен, когда указаны и таблица, и запрос. Система кэширует только идентификаторы абонентов, остальное берёт из базы по мере надобности — при выводе в диалоговых формах, в уведомлениях о входящем вызове и в других местах.

Держите флаг включённым Без него выборка одной записи идёт через ваш запрос, который часто носит фильтрующий характер: поиск по нему бессмысленен, а сервер базы нагружается значительно сильнее. Исключение — случай, когда запрос собирает отображаемые данные из нескольких таблиц, например когда телефоны лежат отдельно от названий.

Локальная или внешняя

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

Практическое правило: локальная подходит для разовых списков и небольших задач, внешняя — когда данные живут в вашей учётной системе и должны оставаться там.