Введение


В этой статье мы покажем, как создавать голосовое приложение 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.

3CX Call Flow Designer

Добавьте компонент Create a condition


Чтобы добавить компонент:


  1. Перетащите компонент Create a condition из Панели компонентов слева в рабочую область под зеленую стрелку, оборзачающую начало работы голосового приложения. Дайте компоненту понятное название, например, selectTimeRange. Для этого кликните по компоненту и измените название в правом нижнем окне Properties Window.
  2. Создайте 4 ветвления приложения и назовите их from0to9, from9to12, from12to18 и from18to0. Для этого кликните по компоненту правой кнопкой мыши и выберите Add branch.
  3. Теперь для каждого ветвления следует создать соответствующие условия. Условия — это логические выражения на 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: оставляем пустым. Это ветвление будет выполняться, если не “сработали” другие ветвления.


Создание ветвлений в 3CX Call Flow Designer

Добавьте компоненты Transfer


Создав условия для ветвлении, добавим в каждое ветвление компонент Transfer. Таким образом, при “срабатывании” условия, вызов будет переводиться на соответствующий добавочный номер.


Для этого перетащите компонент Transfer в каждое из ветвлений. Настройте каждый компонент для перевода вызова на разный добавочный номер. Для этого кликните на компоненте и установите свойство Destination на добавочные номера 101, 102, 103 и 104, соответственно.


Добавление элементов Transfer в Call Flow Designer

Свойство Destination — это выражение, поэтому, если вы указываете здесь константу, она должна быть взята в скобки. Обратите внимание, что в Destination можно указывать и переменные, и вычисляемые выражения.


Добавление добавочного номера для перевода вызова


Компиляция и установка приложения на сервер 3CX


Голосовое приложение готово! Теперь его следует скомпилировать и загрузить на сервер 3CX. Для этого:


  1. Перейдите в меню Build > Build All,и CFD создаст файл TimeBasedRouting.tcxvoiceapp.
  2. Перейдите в интерфейс управления 3CX, в раздел Очереди вызовов. Создайте новую Очередь вызовов, укажите название и добавочный номер Очереди, а затем установите опцию Голосовые приложения и загрузите скомпилированный файл.
  3. Сохраните изменения в Очереди вызовов. Голосовое приложение готово к работе. Теперь, при поступлении вызова на эту Очередь, он будет переведен на соответствующий добавочный номер в зависимости от времени суток.

Загрузка голосового приложения на сервер 3CX

Вы можете проверить работу приложения, позвонив на добавочный номер Очереди, либо направив на эту Очередь вызовы с внешних транков.


Загрузки и документация


Поделиться с друзьями
-->

Комментарии (6)


  1. manchelsi
    24.07.2017 09:39

    Добавьте, перетащите, создайте, скомпилируйте и установите приложение… Как все сложно… А в системах здорового человека решается все это дело одной строкой вроде , или чем-нибудь вроде gotoiftime


    1. snezhko
      24.07.2017 09:42

      Перетащить, при наличии качественной мыши, совсем не сложно. А вот если здоровый человек уволится — мы получим систему с непонятной строкой, но без здорового человека.
      Я уж не говорю о том, что скомпиливованные приложения гораздо производительнее интерпретируемых «строк».


      1. manchelsi
        24.07.2017 10:23

        скомпиливованные приложения гораздо производительнее интерпретируемых «строк»

        Ну это далеко не факт. Неграмотно написанный код на C можно работать в n раз медленнее грамотно написанного кода на Perl. Покажите промежуточные файлы компиляции.
        Если уволится, астериск инженеров — тысячи.


        1. snezhko
          24.07.2017 10:27

          Да, тысячи, но в данном случае он просто не нужен. Подправить приложение может штатный сисадмин или даже неайтишник. Это же касается и кода — пользователям важно предельно просто и недорого решить проблему, а не вдаваться в ньюансы кода.


  1. Bronekalmar
    24.07.2017 20:26

    В базовой поставке FreePBX это решается заданием мышкой timecondition, которое на голом астериске выглядит как gotoiftime.
    В Вашем решении получается то же самое?


    1. snezhko
      25.07.2017 19:06

      У нас, как вы видите, разнесены сервер и среда разработки приложений. На сервере можно делать много базовых настроек обработки вызовов. Но если вам нужно «немного больше», на Windows ПК устанавливается отдельное приложение, в котором вы визуально «собираете» алгоритм прохождения вызова, потом его компилируете (чтобы готовая программа быстрее работала), а потом заливаете на сервер. В основе там используется код C#. Т.е., зная C# вы можете творить чудеса. Не нужно изучать специфический синтаксис Asterisk и т.п.