Управление вводом пользователя в 3CX Call Flow Designer

Введение
В этой статье мы рассмотрим создание голосового приложения, которое считывает последовательность цифр, введенных пользователем через номеронабиратель, а затем подтверждает корректность ввода, проигрывая абоненту введенные цифры. Согласитесь, это довольно частая задача в порталах телефонного самообслуживания. Наше приложение будет выполнять эту задачу, используя 3CX Call Flow Designer. Приложение работает следующим образом:- 3CX CFD сообщает : Введите ваш номер пользователя
- Пользователь набирает 1234
- 3CX CFD сообщает: Введенный номер пользователя 1234. Для подтверждения нажмите 1, для повторного ввода нажмите 2.
Поскольку воспроизведение цифр может потребоваться в различных частях нашего приложения, вынесем его в отдельный пользовательский компонент. CFD позволяет создавать такие пользовательские компоненты.
Обратите внимание - среда разработки 3CX CFD поставляется бесплатно. Но голосовые приложения будут выполняться только на 3CX редакции Pro и Enterprise. Скачать CFD можно отсюда. Демо-проект этого голосового приложения поставляется вместе с дистрибутивом 3CX CFD и находится в папке Documents\3CX Call Flow Designer Demos. Приступим.
Создание проекта
Для создания проекта CFD перейдите в File → New → Project, укажите папку размещения проекта и его имя, например, "PlayDigitsDemo".
Создание пользовательского компонента
Создаваемый компонент будет получать последовательность цифр от пользователя и последовательно проигрывать их. Для создания компонента в окне Project Explorer кликните правой кнопкой мыши на имени проекта, выберите New Component и назовите его PlayDigits.
Затем кликните на компоненте PlayDigits.comp и в разделе Properties Window нажмите кнопку рядом с коллекцией Variables. Добавьте две переменные - Digits и Index. Переменная Digits - принимает цифры, которые компонент затем проигрывает. Переменная Index - внутренняя, она позволяет компоненту переходить от цифры к цифре.
Для добавления переменных нажмите кнопку Add, чтобы добавить переменную и измените ее имя (свойство Name) на Digits. Переменная Digits должна иметь следующие свойства: Accessibility: ReadWrite, Initial Value: . Такая конструкция позволит последовательно воспроизвести все цифры, введенные пользователем.Index, который будет увеличивать значение переменной Increment Variable добавим компонент Loopдля воспроизведения очередной цифры в последовательности. В этот же компонент Prompt Playback добавим компонент Loop для перебора последовательности цифр (цикла). В компонент Loop. Переменная Index должна иметь следующие свойства: Accessibility: ReadWrite, Initial Value: 0, Scope: Private Теперь займемся архитектурой компонента. Мы будем использовать компонент Index, добавьте новую переменную и измените ее имя на Add, Scope: Public. Еще раз нажмите кнопку
Создание цикла
- Перетащите компонент Loop в основное окно среды разработки.
- В окне Properties измените имя компонента на digitsLoop
- Выберите компонент digitsLoop и в его свойстве Condition укажите строку LESS_THAN(callflow$.Index,LEN(callflow$.Digits)). Это выражение повторяет цикл до тех пор, пока переменная Index (callflow$.Index) меньше количества введенных пользователем цифр LEN(callflow$.Digits).
Воспроизведение сообщений
- Прежде всего нам необходимы звуковые файлы, соответствующие каждой цифре. Подготовьте и скопируйте файлы 0.wav, 1.wav и т.д. до 9 в папку Audio вашего проекта.
- Перетащите компонент Prompt Playback в основное поле приложения на компонент Loop.
- Измените имя компонента на playDigit.
- Выберите этот компонент и в окне свойств нажмите на кнопку возле коллекции Prompts, чтобы открыть редактор набора звуковых сообщений Prompt Collection Editor.
- Нажмите кнопку Add и измените тип на Dynamic Audio File Prompt
- В поле Audio File Expression введите строку CONCATENATE(MID(callflow$.Digits,callflow$.Index,1),".wav"). Выражение использует цифру текущей итерации и объединяет ее с расширением файла (строкой) .wav. Таким образом, абоненту воспроизводится соответствующая цифра.
Компонент увеличения номера переменной
- Перетащите компонент Increment Variable на компонент Loop, ниже компонента playDigit
- Измените имя компонента на incrementIndex
- Для свойства VariableName укажите выражение callflow$.Index
Цикл выполнения будет иметь следующий вид:
Наш компонент готов. Теперь мы будем вызывать его из основного приложения.
Вызов компонента для воспроизведения цифр
После того, как пользовательский компонент готов, задействуем его в нашем приложении:- В окне Project Explorer кликните Main.flow, чтобы открыть основное приложение
- Добавьте компонент User Input, который будет запрашивать ввод от пользователя. Переименуйте его в requestInput и добавьте заранее подготовленное сообщение пользователю о необходимости ввода.
- В ветвлении Valid Input из окна User Defined Components добавьте созданный пользовательский компонент PlayDigits
- Переименуйте его в playEnteredDigits
- Выберите его и в свойстве Digits укажите следующее выражение requestInput.Buffer
Запрашиваемые цифры будут сперва помещаться в буфер, а затем проигрываться пользователю. Готовое приложение будет иметь примерно такой вид:
Компиляция и установка приложения на сервер 3CX
Голосовое приложение готово! Теперь его следует скомпилировать и загрузить на сервер 3CX. Для этого:- Перейдите в меню Build > Build All, и CFD создаст файл PlayDigitsDemo.tcxvoiceapp.
- Перейдите в интерфейс управления 3CX, в раздел Очереди вызовов. Создайте новую Очередь вызовов, укажите название и добавочный номер Очереди, а затем установите опцию Голосовые приложения и загрузите скомпилированный файл.
- Сохраните изменения в Очереди вызовов. Голосовое приложение готово к использованию.
Заключение
Наше приложение решает конкретную задачу, однако важно отметить возможность инкапсулировать определенную логику работы в отдельный пользовательский компонент. Это весьма мощный механизм, предлагающий ряд преимуществ:- Ускорение разработки приложения благодаря повторному использованию уже созданных компонентов.
- Упрощение структуры основного приложения и предотвращение разрастания архитектуры приложения до размера, которым уже будет сложно управлять.
- Голосовое приложения получается понятным и легко изменяемым.
ИИ‑аналитика в 3CX — это не просто отчёты, а инструмент для управления качеством сервиса в реальном времени. Узнайте подробнее, как использовать анализ звонков с помощью искусственного интеллекта и преобразования речи в текст - транскрипция, краткое резюме вызова, оценка настроения (Sentiment).
Logitech предлагает универсальные решения для переговорных комнат любого размера — от небольших офисов до крупных конференц-залов. Линейка Rally Bar сертифицирована для Zoom Rooms, Microsoft Teams Rooms и Google Meet, обеспечивая стабильную работу, высокое качество изображения и звука, а также простоту установки.
