Введение
В этой статье мы покажем, как создавать голосовое приложение 3CX Call Flow Designer, которое маршрутизирует входящие вызовы с 3CX в зависимости от времени суток.
Такая функция весьма востребована, если нужно сообщать звонящим разные приветственные сообщения в зависимости от времени суток, либо направлять абонентов в Очереди обслуживания на разных языках, в зависимости от времени звонка.
Это простое приложение поможет вам освоиться в среде разработки и получить базовые навыки использования CFD.
Обратите внимание — утилита 3CX CFD бесплатно доступна для пользователей 3CX Phone System Pro.
Для вашего удобства, 3CX включила это приложение в набор демо-приложений CFD. Вы можете открыть и изучить его более детально. Готовый рабочий проект приложения размещается в папке Documents\3CX Call Flow Designer Demos при установке CFD.
Создание проекта
Создадим новый проект CFD. Откройте среду разработки, перейдите в File > New > Project, укажите папку, где будет сохранен проект, и укажите имя проекта, например, TimeBasedRouting.
Добавьте компонент Create a condition
Чтобы добавить компонент:
- Перетащите компонент Create a condition из Панели компонентов слева в рабочую область под зеленую стрелку, оборзачающую начало работы голосового приложения. Дайте компоненту понятное название, например, selectTimeRange. Для этого кликните по компоненту и измените название в правом нижнем окне Properties Window.
- Создайте 4 ветвления приложения и назовите их from0to9, from9to12, from12to18 и from18to0. Для этого кликните по компоненту правой кнопкой мыши и выберите Add branch.
- Теперь для каждого ветвления следует создать соответствующие условия. Условия — это логические выражения на C#, которые должны вернуть ИСТИНУ, чтобы сработал компонент, находящийся внутри ветвления (визуально — под условием). Условия проверяются слева направо, т.е. если первое условие вернуло ЛОЖЬ, проверяется второе условие и т.д. Определим условия:
- Для ветвления from0to9: DateTime.Now.Hour < 9
- Для ветвления from9to12: DateTime.Now.Hour >= 9 && DateTime.Now.Hour < 12
- Для ветвления from12to18: DateTime.Now.Hour >= 12 && DateTime.Now.Hour < 18
- Для ветвления from18to0: оставляем пустым. Это ветвление будет выполняться, если не “сработали” другие ветвления.
Добавьте компоненты Transfer
Создав условия для ветвлении, добавим в каждое ветвление компонент Transfer. Таким образом, при “срабатывании” условия, вызов будет переводиться на соответствующий добавочный номер.
Для этого перетащите компонент Transfer в каждое из ветвлений. Настройте каждый компонент для перевода вызова на разный добавочный номер. Для этого кликните на компоненте и установите свойство Destination на добавочные номера 101, 102, 103 и 104, соответственно.
Свойство Destination — это выражение, поэтому, если вы указываете здесь константу, она должна быть взята в скобки. Обратите внимание, что в Destination можно указывать и переменные, и вычисляемые выражения.
Компиляция и установка приложения на сервер 3CX
Голосовое приложение готово! Теперь его следует скомпилировать и загрузить на сервер 3CX. Для этого:
- Перейдите в меню Build > Build All,и CFD создаст файл TimeBasedRouting.tcxvoiceapp.
- Перейдите в интерфейс управления 3CX, в раздел Очереди вызовов. Создайте новую Очередь вызовов, укажите название и добавочный номер Очереди, а затем установите опцию Голосовые приложения и загрузите скомпилированный файл.
- Сохраните изменения в Очереди вызовов. Голосовое приложение готово к работе. Теперь, при поступлении вызова на эту Очередь, он будет переведен на соответствующий добавочный номер в зависимости от времени суток.
Вы можете проверить работу приложения, позвонив на добавочный номер Очереди, либо направив на эту Очередь вызовы с внешних транков.
Загрузки и документация
Комментарии (6)
Bronekalmar
24.07.2017 20:26В базовой поставке FreePBX это решается заданием мышкой timecondition, которое на голом астериске выглядит как gotoiftime.
В Вашем решении получается то же самое?snezhko
25.07.2017 19:06У нас, как вы видите, разнесены сервер и среда разработки приложений. На сервере можно делать много базовых настроек обработки вызовов. Но если вам нужно «немного больше», на Windows ПК устанавливается отдельное приложение, в котором вы визуально «собираете» алгоритм прохождения вызова, потом его компилируете (чтобы готовая программа быстрее работала), а потом заливаете на сервер. В основе там используется код C#. Т.е., зная C# вы можете творить чудеса. Не нужно изучать специфический синтаксис Asterisk и т.п.
manchelsi
Добавьте, перетащите, создайте, скомпилируйте и установите приложение… Как все сложно… А в системах здорового человека решается все это дело одной строкой вроде , или чем-нибудь вроде gotoiftime
snezhko
Перетащить, при наличии качественной мыши, совсем не сложно. А вот если здоровый человек уволится — мы получим систему с непонятной строкой, но без здорового человека.
Я уж не говорю о том, что скомпиливованные приложения гораздо производительнее интерпретируемых «строк».
manchelsi
Ну это далеко не факт. Неграмотно написанный код на C можно работать в n раз медленнее грамотно написанного кода на Perl. Покажите промежуточные файлы компиляции.
Если уволится, астериск инженеров — тысячи.
snezhko
Да, тысячи, но в данном случае он просто не нужен. Подправить приложение может штатный сисадмин или даже неайтишник. Это же касается и кода — пользователям важно предельно просто и недорого решить проблему, а не вдаваться в ньюансы кода.