Новости
- Вступ
- створення таблиці
- Створення таблиці вручну
- Використання SQL-запитів в сценаріях
- Результати роботи
- Запитання і завдання
У цьому уроці розбирається компонент роботи з базами даних "SQL-запит".
Вступ
При масовому прийомі дзвінків часто виникає задача отримання статистики по з'єднаннях. Наприклад, потрібно зберігати дані по вхідних з'єднань, а потім вивести кількість дзвінків в залежності від часу доби. Іноді необхідно виводити деталізацію вихідних розмов по кожному оператору. Подібних завдань можна придумати дуже багато, але для вирішення кожного з них потрібна робота з базами даних.
Бази даних застосовуються для зберігання відомостей по абонентам, інформації по комутації і різних системних налаштувань. У своїй роботі Oktell використовує Microsoft SQL Server. Коли ви встановлюєте програму, автоматично створюються 3 системні бази даних:
- oktell - основна БД для зберігання оперативної статистики та статистики АТС.
- oktell_settings - БД для зберігання налаштувань комплексу, використовуваних для завантаження сервера.
- oktell_cc_temp - БД для зберігання статистики роботи call-центру в просторових таблицях.
Звернення сервера Oktell до БД завжди здійснюється через основну базу oktell.
Для створення і використання власної таблиці існують два способи:
1) Використовувати модуль "Таблиці абонентів" в розділі "Call-центр". Створена таблиця буде розташовуватися в БД Oktell
2) Вручну створити таблицю в будь-якій базі даних за допомогою SQL Server Management Studio
Після створення таблиці ви зможете звертатися до неї, записувати і зчитувати дані в ході роботи сценаріїв за допомогою компонента "SQL-запит".
Компонент дозволяє працювати:
- з локальними таблицями, які розташовуються в базі даних Oktell
- з таблицями в інших базах даних Microsoft SQL Server
- з таблицями іншого Microsoft SQL-сервера (ADO-підключення)
- з таблицями MySQL, Oracle, Firebird і т.д. (ODBC підключення, Підключення до Oracle)
- з базами даних Microsoft Access і документами Microsoft Excel (OLE підключення)
- з іншими базами даних, які можна пов'язати з SQL Server
Розглянемо описаний процес детальніше.
створення таблиці
За допомогою модуля "Таблиці абонентів"
УВАГА: Для того, щоб ви могли використовувати цей модуль, у вашій системі повинна бути придбана хоча б одна ліцензія оператора Call-центру.
Щоб створити таблицю в базі даних Oktell:
- Перейдіть в модуль "Проекти". Натисніть Додати. Створіть проект.
- Перейдіть в модуль "Таблиці абонентів". Натисніть Додати.
- На вкладці "Підключення" введіть назву таблиці. У прикладі назва таблиці "Lesson20". Натисніть "Далі".
- На вкладці "Дані" додайте стовпці для зберігання даних. У прикладі додані наступні стовпчики:
- CallerId - поле для зберігання телефону абонента. Тип Nvarchar (auto)
- CalledId - поле для зберігання набраного номера. Тип Nvarchar (auto)
- Datetime - поле для зберігання часу дзвінка. Тип Datetime
- Натисніть "Зберегти".
Створена таблиця буде доступна в базі даних Oktell і до неї можна буде звертатися в сценаріях. За допомогою модуля "Таблиці абонентів" ви можете в будь-який момент часу подивитися знаходяться записи в таблиці, змінити їх значення, видалити рядки або очистити таблицю.
Створення таблиці вручну
Якщо у вас немає модуля Call-центру, ви можете створити таблиці абонентів вручну, користуючись програмою SQL Server Management Studio (SSMS). Для кожної версії Microsoft SQL Server встановлюється відповідна версія SSMS.
Програма доступна доступна на сайті http://www.microsoft.com/ .
Щоб створити таблицю вручну:
- Зайдіть в SSMS, натисніть на кнопку "Створити запит". Введіть наступний запит: (приклад для таблиці Lesson20 (див.вище))
Шляхом дублювання і зміни рядків ви можете створювати різні таблиці.
- Натисніть F5 або кнопку "Виконати". Таблиця Lesson20 буде створена в БД Oktell і до неї можна буде звертатися в сценаріях.
Використання SQL-запитів в сценаріях
Завдання: При вхідному дзвінку записувати інформацію про абонента (CallerId, CalledId і час дзвінка). Вивести повідомлення оператору з яким з'єднається даний абонент.
Сценарій виглядає наступним чином:
Розберемо компоненти сценарію детальніше.
- Компонент "Дані абонента". Визначаються основні параметри дзвінка - час, номер абонента і набраний номер.
- Змінної Datetime (дата / час) присвоюється значення функції "Поточні дата і час"
- Змінної CalledId (строкова) присвоюється значення функції "Зовнішній номер (CalledId)"
- Змінної CallerId (строкова) присвоюється значення функції "Номер абонента (CallerId)"
- Змінної Line (строкова) присвоюється значення функції "Guid-ідентифікатор лінії"
- Компонент "INSERT". Виконує SQL-запит додавання даних в таблицю Lesson20.
Компонент SQL-запит налаштовується в 3 етапи. 1 етап: Налагодження підключення до бази даних. Використовується вкладка "Підключення".
За замовчуванням, компонент працює з власної БД Oktell.
- Якщо вказати назву таблиці, SQL-запит буде шукати її в БД Oktell. Наприклад, назва table позначає таблицю [oktell]. [Dbo]. [Missed].
- Для звернення до таблиці в іншій базі SQL-сервера OKTELL використовуйте назву, наприклад [oktell_cc_temp]. [Dbo]. [A_Cube_CC_Cat_OperatorInfo]
Для звернення до таблиць інших серверів на вкладці необхідно вибрати тип підключення і ввести рядок підключення до БД.
- ADO підключення - підключення до іншого Microsoft SQL Server
- OLE підключення - наприклад, підключення до Microsoft Access або Microsoft Excel.
- Підключення до Oracle
- ODBC підключення - наприклад, підключення до серверів MySQL або Firebird
Для кожного типу показуються приклади рядки підключення. Додаткову інформацію ви можете знайти на сайті http://www.connectionstrings.com
Використовувати інші бази даних можна за допомогою лінковки їх до SQL-сервера OKTELL. Більш докладно написано в статті Підключення зовнішніх БД
2 етап: Введення тексту запиту. Використовується вкладка "Запит".
Для того щоб вказати параметри використовуються службові символи. Наприклад, щоб задати параметр x використовуйте наступні вираження:
- @x (для SQL серверів)
- ? (Для ADO і ODBC підключень)
- : (Для Oracle)
УВАГА: За допомогою службових символів? і: можна задати тільки вхідні параметри. Вихідні параметри записуються відразу в змінні сценарію з ідентичною назвою. Наступний запит повертає значення стовпців callerid і calledid в змінні сценарію name і number.
select callerid as [name], calledid as number from maintable where dtime =?Зверніть увагу на підказки в нижній частині вкладки.
3 етап: Призначення змінних параметрах запиту. Використовується вкладка "Параметри".
Призначте кожному параметру запиту відповідну змінну в сценарії. Параметри діляться на два типи:
- Вхідні - параметри, від яких залежить запит.
- Вихідні - параметри, в які записується результат запиту
У нашому сценарії використовується запит таблицю Lesson20 в БД Oktell, тому на вкладці Підключення все залишається за замовчуванням.
На вкладці "Запит" пишеться вводиться наступний SQL-запит
insert into lesson20 (callerid, calledid, [datetime]) values (@ callerid, @ calledid, @ datetime) select @id = @@ IDENTITYЗапит вносить в таблицю Lesson20 в поля callerid, calledid, datetime параметри @callerid, @calledid і @datetime. Після цього за допомогою службового слова @@ IDENTITY визначається номер введеного рядка.
У запиті вхідними параметрами є змінні @callerid, @calledid і @datetime, так як вони записуються в поля таблиці і отже від них залежить результат SQL-запиту. Вихідним параметром є @id, так як його значення обчислюється в ході виконання запиту.
УВАГА: Якщо SQL-таблиця має поле типу дата / час (datetime), то в це поле рекомендується записувати змінну також типу дата / час. Неявне перетворення типів з рядка під час не завжди виходить коректним.
На вкладці Параметри параметрам запиту зіставляються змінні сценарію:
- @calledid - змінна calledid
- @callerid - змінна callerid
- @datetime - змінна Datetime
- @id - мінлива id.
- Компонент "На групу". Перемикає абонента на груповий номер.
- Призначення: Всередину
- Номер: 105
- Тип виклику: Звичайний
- Компонент "500мс". Після того як абонент з'єднається з будь-яким оператором з групового номера, відбудеться запис інформації про комутації в таблиці БД Oktell. Необхідно останавіть виконання сценарію на 500мс, для того, щоб запис про комутації потрапила в потрібні таблиці і вважати її.
- Час затримки: 500
- Компонент "Скоммутірованная лінія". Визначає номер скоммутірованной лінії. Використовується компонент "Статус об'єкта".
Компонент "Статус об'єкта" - це багатофункціональний компонент сценанріев, за допомогою якого можливо зробити різні дії над основними об'єктами системи (користувач, лінія, завдання, номер і ін.). Має безліч функцій, повний перелік можна знайти в статті: Загальні компоненти сценаріїв: Статус об'єкта
У нашому сценарії використовуються наступні настройки:
- Дія: Визначити
- Тип об'єкта: Лінія
- Ключ лінії: змінна "Line"
- Функції: Номер скоммутірованной лінії / конференції
- Значення в змінну: змінна Chained (строкова)
- Компонент "Ідентифікатор користувача". За номером лінії визначає прив'язаного до неї користувача в поточний момент. В налаштуваннях компонента "Статус об'єкта" наступні поля:
- Дія: Визначити
- Тип об'єкта: Лінія
- Ключ лінії: змінна "Chained"
- Функція: Ідентифікатор користувача
- Значення в змінну: змінна "IdUser" (строкова)
- Компонент "Отладочная повідомлення". Виводить значення основних змінних адміністратору.
- Компонент "Повідомлення користувачеві". Виводить повідомлення користувачу Oktell, який скоммутіровался з даними абонентом.
- Ключ одержувача: змінна IdUser
- текст:
Результати роботи
У таблиці Lesson20 формується наступна інформація:
При бажанні в таблицю можна заносити абсолютно різні дані - ім'я з'єднати оператора, час очікування в черзі, час в розмові і так далі. Подібне завдання вирішується в статті Завдання з обробки пропущених . Стаття підходить навіть, якщо у вас немає Call-центру, так як дані обчислюються в головному сценарії.
Завантажити сценарій: Урок20.zip
Вітаємо! Ви навчилися використовувати ще кілька компонентів сценаріїв. Можете переходити до наступного уроку.
Технічна документація: Загальні компоненти сценаріїв і Компоненти сценаріїв IVR
Запитання і завдання
- Модифікуйте сценарій цього уроку. Необхідно також записувати в таблицю ім'я оператора і час початку з'єднання абонента з оператором.
- Реалізуйте сценарій збору статистики по пропущених дзвінків, користуючись статтею: Завдання з обробки пропущених
- Створіть IVR-сценарій, при дзвінку на який вам на пошту буде відправлятися інформація з таблиці по всіх з'єднаннях за день. Скористайтеся статтею Построковая обробка sql вибірки в сценарії
- Модифікуйте сценарій виходить маршрутизації. Необхідно записувати всю інформацію по вихідні дзвінки (час дзвінка, що набирається номер, ім'я користувача, внутрішній або зовнішній номер).