Введение
В этой статье мы расскажем, как делать запросы к базе данных SQL Server из 3CX Call Flow Designer, используя компонент Database Access. Отметим, что компонент Database Access также может работать с базой PostgreSQL, которую использует 3CX Phone System.
Демо-проект этого голосового приложения поставляется вместе с дистрибутивом 3CX CFD и находится в папке Documents3CX Call Flow Designer Demos. Если вы захотите им воспользоваться – просто укажите расположение вашей базы данных и учетные данные доступа.
Наше голосовое приложения будет запрашивать ПИН пользователя (это может быть номер клиента, страхового полиса и т.п.), проверяет его в базе данных и переводит его на указанный добавочный номер (это может быть обслуживающий сотрудник, заранее подготовленное голосовое меню или другое голосовое приложение), если ПИН найден.
Создание проекта
Для создания проекта CFD перейдите в File > New > Project, укажите папку размещения проекта и его имя, например, DatabaseAccessDemo.
Запрос ПИН-кода у пользователя
ПИН пользователя запрашивается с использованием компонента User Input. Добавим компонент в голосовое приложение:
- Перетащите компонент User Input из набора компонентов слева в главный экран приложения. Выберите компонент и в окне Properties переименуйте его в requestPIN.
- Дважды кликните по компоненту, чтобы открыть окно конфигурации, и установите следующие свойства:
- Initial Prompts – укажите WAV файл, в котором у пользователя будет запрашиваться ПИН, например, “Введите ваш персональный идентификационный номер”. Формат WAV файла: PCM, 8 kHz, 16 bit, Mono.
- Subsequent Prompts – укажите WAV файл с более подробными пояснениями по вводу. Он проигрывается только, если пользователь сделал неверный ввод или вообще ничего не ввел. Например, “Введите ваш персональный идентификационный номер. Допускаются цифры от 0 до 9 и длина — от 3 до 6 цифр”.
- Timeout Prompts – укажите WAV файл с предупреждением о том, что ничего не было введено, например, “К сожалению, мы не получили ввод от вас”.
- Invalid Digit Prompts – укажите WAV файл с предупреждением о некорректном (слишком мало цифр или они недопустимы), например, “К сожалению, вы некорректно ввели ПИН”.
- Остальные опции настройте, как показано ниже, и нажмите OK для сохранения.
Проверка введенного ПИН в базе данных
После получения ПИН от пользователя, его следует проверить в базе данных. Для этого добавим компонент Database Access в ветвление компонента Valid Input, предполагающее верный ввод. Переименуйте компонент в validatePIN и дважды кликните на нем, чтобы установить свойства:
- Database Type — выберите SqlServer.
- Configure each property separately – выберите эту опцию, чтобы указать параметры подключения по отдельности. Однако, вы можете указать и строку подключения к базе данных.
- Server – имя или IP адрес сервера базы данных. Это поле может быть и выражением, поэтому, если вы указываете константу, возьмите ее в кавычки.
- Port – порт SQL сервера. При использовании стандартного номера порта, это поле можно оставить пустым.
- User Name и Password – учетные данные подключения к базе данных. Значения также могут переменными.
- Statement Type – укажите Scalar, т.к. требуется получить только одно значение из базы – количество записей о пользователе с данным ПИН.
- Timeout – оставьте по умолчанию 30 сек. или измените, при необходимости.
- SQL Statement – в этом поле указывается строка запроса к базе данных. Но предварительно добавим параметр в раздел Parameters, который используется в строке запроса. Параметр – это ПИН, введенный пользователем.
- id – имя переменной, requestPIN.Buffer – значение, т.е. буфер ввода в компоненте User Input (который мы ранее назвали requestPIN)
Теперь введем строку запроса к базе. Используйте небольшую кнопку справа от окна ввода, чтобы вставить значение переменной id. Наша строка имеет вид:
SELECT count(*) FROM customers WHERE id={0}
Окно свойств компонента Database Access должно выглядеть примерно так:
Проверка результата SQL запроса и выбор дальнейших действий
Настроив компонент Database Access, перейдем к проверке ПИН. Для этого добавим компонент Create a Condition с двумя условиями (ветвлениями) – успешная и неуспешная валидация.
Перетащите компонент из левой части и переименуйте в validateDatabaseResult. Переименуйте ветвления в success и error. Окно среды разработки должно выглядеть примерно так:
Чтобы выполнялось ветвление success, запрос к базе данных должен вернуть 1, что означает, то клиент с таким ПИН кодом найден (найдена одна запись). Для этого вручную или с помощью конструктора выражений введем условный оператор:
EQUAL(validatePIN.ScalarResult,1)
После того, как вы указали условия для ветвления success, добавьте компоненты Prompt Playback для всех возможных ветвлений голосового приложения: ПИН найден, ПИН не найден и ПИН введен неверно допустимое количество раз (у нас в компоненте User Input Max Retry Count=3). В параметрах компонентов укажите соответствующие WAV файл уведомлений.
После этого в ветвление success добавьте компонент Transfer, который будет переводить вызов на сотрудника. Голосовое приложение будет иметь примерно такой вид:
Компиляция и установка приложения на сервер 3CX
Голосовое приложение готово! Теперь его следует скомпилировать и загрузить на сервер 3CX. Для этого:
- Перейдите в меню Build > Build All, и CFD создаст файл DatabaseAccessDemo.tcxvoiceapp.
- Перейдите в интерфейс управления 3CX, в раздел Очереди вызовов. Создайте новую Очередь вызовов, укажите название и добавочный номер Очереди, а затем установите опцию Голосовые приложения и загрузите скомпилированный файл.
- Сохраните изменения в Очереди вызовов. Голосовое приложение готово к использованию.
Вы можете проверить работу приложения, позвонив на добавочный номер Очереди и введя ПИН для проверки. Если он будет найден в базе данных, вызов будет переведен на оператора.
Загрузки и документация
Автор: 3CX Ltd.