Voipnotes
Услуги
  • 3CX Phone System
    • Купить IP АТС - 3CX Phone System
Ещё
    Задать вопрос
    +7 (499) 113-65-73
    Заказать звонок
    sale@voipnotes.ru
    г. Москва 2-й Михайловский проезд 9
    +7 (499) 113-65-73
    Заказать звонок
    Voipnotes
    Услуги
    • 3CX Phone System
      • Купить IP АТС - 3CX Phone System
      Voipnotes
      Услуги
      • 3CX Phone System
        • Купить IP АТС - 3CX Phone System
        Voipnotes
        Voipnotes
        • Услуги
          • Назад
          • Услуги
          • 3CX Phone System
            • Назад
            • 3CX Phone System
            • Купить IP АТС - 3CX Phone System
        • +7 (499) 113-65-73
        sale@voipnotes.ru
        г. Москва 2-й Михайловский проезд 9
        • Главная
        • Блог
        • FreeSWITCH: Маршрутизация по времени или дню недели

        FreeSWITCH: Маршрутизация по времени или дню недели

        9 Июля 2015

        Сегодня трудно представить современный офис без АТС с функциями маршрутизации звонков в зависимости от времени суток или дня недели, поэтому сегодня мы расскажем, как реализовать этот функционал во FreeSWITCH. Давайте приступим.

         

        Доступные переменные:

        year  - Календарный год, 0-9999

        yday - День в году, 1-366

        mon  - Месяц , 1-12 (Январь = 1)

        mday - День в месяце, 1-31

        week - Неделя в году, 1-53

        mweek - Неделя в месяце, 1-6

        wday - День недели , 1-7 (Воскресенье = 1, Понедельник = 2) или "sun", "mon", "tue".

        hour  - Час, 0-23

        minute - Минута, 0-59

        minute-of-day - Minute of the day, (1-1440)

        time-of-day - Временой диапазон формата: hh:mm[:ss]-hh:mm[:ss]. Например: "08:00-17:00"

        date-time - Диапазон Дата/Время формата: YYYY-MM-DD hh: mm[:ss]~YYYY-MM-DD hh:mm[:ss]. Например: 2010-10-01 00:00:01~2010-10-15 23:59:59


        В основном все офисы работают с понедельника по пятницу с 9:00 до 18:00, так что перейдем в наш диалплан (dialplan) и в начало нашего контекста (context) добавим следующее:

        <extension name="Время работы офиса" continue="true">  
            <condition wday="2-6" hour="9-18" break="never">
            <!--С понедельника по пятницу с 9:00 до 18:00 -->
                <action application="set" data="office_status=open" inline="true"/>
                <anti-action application="set" data="office_status=closed" inline="true"/>
            </condition>
        </extension>

        Теперь в своем диалплане вы можете использовать переменную office_status, которая будет содержать значения “open” или “close”. Добавим в наш диалплан маршрутизацию вызовов в зависимости от времени и дня:

        <extension name="Входящий вызов на номер 74997099783">   
            <condition field="destination_number" expression="^(74997099783)$">
                <action application="execute_extension" data="74997099783_${office_status}"/>
                <!-- Проверяем время и день недели и возвращаем статус --> </condition></extension> 
                    <extension name="Рабочее время">
                        <condition field="destination_number" expression="^(74997099783_open)$">
                            <action application="answer"/> <action application="ivr" data="office-ivr"/>
                            <action application="set" data="ringback=$${hold_music}"/>
                            <action application="set" data="call_timeout=60"/>
                            <action application="bridge" data="user/100"/>
                            <action application="hangup"/>
                        </condition>
                    </extension>

                    <extension name="Офис закрыт">
                        <condition field="destination_number" expression="^(74997099783_closed)$">
                            <action application="answer"/>
                            <action application="sleep" data="1000"/>
                            <action application="playback" data="ivr/office-close.wav"/>
                            <action application="sleep" data="500"/>
                        </condition>
                    </extension>

        Сохраняем, переходим в консоль FreeSWITCH (fs_cli) и делаем reloadxml. Теперь входящие вызовы будут обрабатываться в зависимости от заданных вами правил.

        Теперь немного изменим наш диалплан, добавив следующее правило: с понедельника по пятницу, в рабочее время, вызовы будут уходить на офисный IVR, в нерабочее время будет проигрываться сообщение о том, что офис закрыт. В субботу с 10:00 до 18:00 вызовы будут переадресовываться на мобильный, а в воскресение будет проигрываться сообщение о том, что офис закрыт.

        Добавим в начало диалплана следующее:

         
        <extension name="Время работы офиса" continue="true">   
            <condition wday="2-6" hour="0-9" break="never">
                <action application="set" data="office_status=work-close" inline="true"/>
            </condition> <condition wday="2-6" hour="9-18" break="never">
                <action application="set" data="office_status=work-open" inline="true"/>
            </condition>
            <condition wday="2-6" hour="18-24" break="never">
                <action application="set" data="office_status=work-close" inline="true"/>
            </condition> <condition wday="7" hour="10-18" break="never">
                <action application="set" data="office_status=weekend-mobile" inline="true"/>
            </condition> <condition wday="1" break="never">
                <action application="set" data="office_status=weekend-close" inline="true"/>
            <
        /condition>
        </extension>

        Теперь в своем диалплане вы можете использовать переменную office_status, которая будет содержать значения “work-close”, “work-open”, “weekend-mobile” или “weekend-close”. Добавим в наш диалплан маршрутизацию вызовов в зависимости от времени и дня:

        <extension name="Входящий вызов от оператора">   
            <condition field="destination_number" expression="^(74997099783)$">
                <action application="execute_extension" data="74997099783_${office_status}"/>
            </condition>
            </extension> 

        <
        extension name="Будни рабочее время">
            <condition field="destination_number" expression="^(74997099783_work-open)$">
                <action application="answer"/>
                <action application="ivr" data="office-ivr"/>
                <action application="set" data="ringback=$${hold_music}"/>
                <action application="set" data="call_timeout=60"/>
                <action application="bridge" data="user/100"/>
                <action application="hangup"/>
            </condition>
        </extension>

        <extension name="Будни офис закрыт">
            <condition field="destination_number" expression="^(74997099783_work-close)$">
                <action application="answer"/>
                <action application="sleep" data="1000"/>
                <action application="playback" data="ivr/office-close.wav"/>
                <action application="sleep" data="500"/>
            </condition></extension><extension name="Суббота переадресация на мобильный">
            <condition field="destination_number" expression="^(74997099783_weekend-mobile)$">
                <action application="bridge" data="sofia/gateway/mtt/81234567891"/>
                <action application="hangup"/>
            </condition>
        </extension>

        <
        extension name="Воскресенье">
            <condition field="destination_number" expression="^(74997099783_weekend-close)$">
                <action application="answer"/>
                <action application="sleep" data="1000"/>
                <action application="playback" data="ivr/office-close.wav"/>
                <action application="sleep" data="500"/>
            </condition>
        <
        /extension>

        Сохраняем, переходим в консоль FreeSWITCH (fs_cli) и делаем reloadxml. Теперь все должно работать согласно описанной выше логике.

        В данной статье мы привели простые правила маршрутизации по времени или дню недели, хотя, на самом деле, можно создавать правила намного сложнее.

        Если вы в статье нашли ошибки или несоответствия, мы будем благодарны, если вы напишите нам о них в комментариях.

        Нужна консультация?

        Наши специалисты ответят на любой интересующий вопрос

        Задать вопрос
        Поделиться
        Назад к списку
        © 2021 Все права защищены.
        +7 (499) 113-65-73
        Заказать звонок
        sale@voipnotes.ru
        г. Москва 2-й Михайловский проезд 9
        Политика конфиденциальности
        Версия для печати
        © 2021 Все права защищены.
        Заказать звонок
        Написать сообщение