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: подключение к VoIP оператору и настройка диалплана

        FreeSWITCH: подключение к VoIP оператору и настройка диалплана

        FreeSWITCH: подключение к VoIP оператору и настройка диалплана
        11 Декабря 2014

        В предыдущей статье мы рассказывали, как устанавливать FreeSwitch на CentOS 6.5  , сегодня же мы расскажем, как подключить FreeSWITCH к VoIP оператору и сделать входящую и исходящую маршрутизацию.

         

        Все конфигурационные файлы FreeSWITCH представлены в формате XML, что может отпугнуть начинающих администраторов, но, на самом деле, после первой настройки страх пропадет, и вы будете удивлены производительностью и гибкостью этой платформы.

        Сильными сторонами FreeSwitch являются:

        • Высокая производительность и гибкость
        • SIP-стек промышленного качества
        • Совместимость с обработкой широкополосного (HD) звука, в том числе, и в конференциях
        • Широкий диапазон поддерживаемых кодеков
        • Интеграции с языками программирования
        • Поддержка Multi-tenant
        • Поддержка  платформы Windows
         

        Углубляться в рассказы об архитектуре мы не будем, так как на просторах интернета есть множество книг и статей, которые помогут вам в освоении данной платформы. Приступим сразу к настройке.

         

        Добавим пару внутренних номеров

        По умолчанию в FS уже есть внутренние номера с 1000 по 1019, но мы решили завести два новых номера: 1234 и 1235 и объединить их в группу вызова voipnotes.

         

        Пример одного из номеров:

        <include>
         <user id="1234">
          <params>
           <param name="password" value="admin!123033 "/>
           <param name="vm-password" value="1234"/>
             <params>
          <variables>
           <variable name="callgroup" value="voipnotes"/>
             <variables>
            <user>
        <include>
         

        Подключение SIP gateway VoIP провайдера

        Первым делом нужно настроить sip gateway для подключения провайдера телефонии (в нашем случае это МТТ). По умолчанию добавление/изменение существующих шлюзов производится в  /usr/local/freeswitch/conf/sip_profiles/external. Создадим файл conf/sip_profiles/external/MTT.xml и поместим туда следующие данные:

         
        <include>
         <gateway name="mtt">
           <param name="username" value="74997099783"/>        - SIP ID( SIP аккаунт)
           <param name="password" value="***********"/>        - пароль от аккаунта
           <param name="realm" value="voip.mtt.ru"/>
           <param name="from-user" value="74997099783"/>       - имя пользователя для поля From
           <param name="from-domain" value="voip.mtt.ru"/>     - домен для поля From
           <param name="proxy" value="voip.mtt.ru"/>           - сервер регистрации
           <param name="expire-seconds" value="800"/>          - время регистрации в секундах
           <param name="register" value="true"/>               - false: не посылать запросы "Register". true: посылать запросы "Register"
           <param name="register-transport" value="udp"/>      - используемый транспортный протокол
          <param name="context" value="office"/>               - контекст диалплана, который обрабатывает вызовы для этого SIP профиля и соотнесенных с ним IP адресов и портов
             <gateway>
        <include>
         

        Сохраняем наш файл, переходим в консоль FS (/usr/local/freeswitch/bin/fs_cli) .

        В консоли перезагружаем  XML  командой reloadxml. Иногда перезагрузки XML  достаточно для того, чтобы изменения вступили в силу, но иногда следует воспользоваться командой  reload mod_sofia. Теперь проверяем регистрацию sofia status gateway mtt.

           

        Если все настройки были выполнены правильно, то в консоли вы увидите, что ваш шлюз зарегистрирован. Если шлюз не зарегистрировался, то в консоли вводим sofia global siptrace on и смотрим trace с логами, в поисках решения проблемы.

         

        Входящая маршрутизация

        Теперь можно перейти к настройке диалплана в conf/dialplan/*. Номерной план делится на контексты (context), которые обрабатывают вызовы для этого SIP профиля и соотнесенных с ним IP адресов и портов.

         

        Создадим диалплан conf/dialplan/office.xml и опишем простой контекст.

         
        <include>
         
         <context name="office">
          <extension name="from-mtt">
           
           <condition field="destination_number" expression="^(74997099783)$">
            
            <action application="bridge" data="user/1234@$${domain}"/>
            
            <action application="hangup"/>
           condition>
          extension>
         context>
        include>
         

        Небольшое пояснение про bridge и $${domain}.С помощью bridge можно установить соединение со шлюзом или другими пользователями.

        Общий вид:

        $${domain} это домен FreeSwitch по умолчанию, назначенный в vars.xml.

         

        Пример маршрутизации входящего вызова на 2 номера одновременно:

        <extension name="1234 and 1235">
         
         <condition field="destination_number" expression="^(74997099783)$">
           
           <action application="bridge" data="user/1234@$${domain},user/1235@$${domain}"/>
           
           <action application="hangup"/>
         
        <condition>
        <extension>

        Пример маршрутизации входящего вызова на группу:

        <extension name="group_dial_voipnotes">
         
         <condition field="destination_number" expression="^(74997099783)$">
          
          <action application="bridge" data="group/voipnotes@$${domain}"/>
         
        <condition>
        <extension>
         

        Примеры, указанные выше, довольно простые, потому что мы не хотели делать их сложными и нагружать лишним. Если хочется сделать более сложный диалплан с ivr, с маршрутизацией в зависимости от времени суток и т.д., то можно посмотреть примеры в conf/dialplan/default.xml, а мы перейдем к настройке исходящей связи.

         

        Исходящая маршрутизация

        Продолжаем настройки нашего диалплана в conf/dialplan/office.xml.Для маршрутизации вызова через шлюз используется выражение: sofia/gateway/имя_шлюза/номер.В нашем случае исходящие вызовы будут осуществляться через созданный нами выше gateway MTT

         
        <extension name="out-moskow">
         
         <condition field="destination_number" expression="^(84\d{9})$">
          
          <action application="bridge" data="sofia/gateway/mtt/$1"/>
          
          <action application="hangup"/>
         
        <condition>
        <extension>
         

        Небольшое пояснение по выражению ^(84\d{9})$

        ^ - Указывает на начало регулярного выражения (обязательно);

        (- Свидетельствует о начале регулярного блока выражения - в блоке важно определить внутренние выражения, чтобы на них можно было ссылаться на переменные $ 1, $ 2, $ 3, и т.д.;

        84 - соответствует символу '84';

        \ d - соответствует любой цифре;

        {9} - определяет число вхождений для предыдущего выражения, т.е. ровно 9 цифр

        ) - Закрывает внутренний блок;

        $ - Указывает на конец регулярного выражения (обязательно);

         

        В итоге наш контекст будет выглядеть следующим образом:

        <include>
         <context name="office">
          <extension name="from-mtt">
           <condition field="destination_number" expression="^(74997099783)$">
            <action application="bridge" data="user/1234@$${domain}"/>
            <action application="hangup"/>
           condition>
          extension>
          <extension name="out-moskow">
           <condition field="destination_number" expression="^(84\d{9})$">
            <action application="bridge" data="sofia/gateway/mtt/$1"/>
            <action application="hangup"/>
           condition>
          extension>
         context>
        include>
         

        Нам остается отредактировать файлы наших добавочных номеров conf/directory/1234.xml и 1235.xml и  вставить user_context со значением office.

        Тем самым, мы укажем FS, что звонки от пользователя надо обрабатывать в соответствии с нашим созданным контекстом office.Теперь перезагружаем XML из консоли FS и наслаждаемся проделанной работой.

         

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

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

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

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