Новости

Урок 20 Робота з SQL-запитом

  1. Вступ
  2. створення таблиці
  3. Створення таблиці вручну
  4. Використання SQL-запитів в сценаріях
  5. Результати роботи
  6. Запитання і завдання

У цьому уроці розбирається компонент роботи з базами даних "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 (див.вище))
USE [oktell] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo]. [Lesson20] ([Id] [int] IDENTITY (1,1) NOT NULL, [CallerId] [nvarchar] (2000) NULL, [ CalledId] [nvarchar] (2000) NULL, [Datetime] [datetime] 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

Шляхом дублювання і зміни рядків ви можете створювати різні таблиці.

  • Натисніть 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" (строкова)
  • Компонент "Отладочная повідомлення". Виводить значення основних змінних адміністратору.
[Line] + endline + [Chained] + endline + [IdUser] + endline + [id]
  • Компонент "Повідомлення користувачеві". Виводить повідомлення користувачу Oktell, який скоммутіровался з даними абонентом.
  • Ключ одержувача: змінна IdUser
  • текст:
'Номер дзвінка' + [id] + endline + 'CallerId' + [CallerId] + endline + 'CalledId' + [CalledId] + endline + 'Час' + [Datetime]

Результати роботи

У таблиці Lesson20 формується наступна інформація:


При бажанні в таблицю можна заносити абсолютно різні дані - ім'я з'єднати оператора, час очікування в черзі, час в розмові і так далі. Подібне завдання вирішується в статті Завдання з обробки пропущених . Стаття підходить навіть, якщо у вас немає Call-центру, так як дані обчислюються в головному сценарії.


Завантажити сценарій: Урок20.zip

Вітаємо! Ви навчилися використовувати ще кілька компонентів сценаріїв. Можете переходити до наступного уроку.

Технічна документація: Загальні компоненти сценаріїв і Компоненти сценаріїв IVR

Запитання і завдання

  • Модифікуйте сценарій цього уроку. Необхідно також записувати в таблицю ім'я оператора і час початку з'єднання абонента з оператором.
  • Реалізуйте сценарій збору статистики по пропущених дзвінків, користуючись статтею: Завдання з обробки пропущених
  • Створіть IVR-сценарій, при дзвінку на який вам на пошту буде відправлятися інформація з таблиці по всіх з'єднаннях за день. Скористайтеся статтею Построковая обробка sql вибірки в сценарії
  • Модифікуйте сценарій виходить маршрутизації. Необхідно записувати всю інформацію по вихідні дзвінки (час дзвінка, що набирається номер, ім'я користувача, внутрішній або зовнішній номер).
Select callerid as [name], calledid as number from maintable where dtime =?

Уважаемые партнеры, если Вас заинтересовала наша продукция, мы готовы с Вами сотрудничать. Вам необходимо заполнить эту форму и отправить нам. Наши менеджеры в оперативном режиме обработают Вашу заявку, свяжутся с Вами и ответят на все интересующее Вас вопросы.

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: