• Установка FreePBX 14 с Asterisk 18 на Debian 10 Buster

    ИНФОРМАЦИЯ. Немного актуализировал статью под новую версию Debian, чтобы установка из статьи проходила в режиме copy-paste без ошибок.

    Рассмотрим как установить FreePBX 14 в связке с Asterisk 18 на Debian 10 Buster.

     

    Подготовка системы

    Перед началом установки обновляем систему до актуального состояния:

    apt-get update && apt-get upgrade -y

    Устанавливаем необходимые зависимости:

    apt-get install build-essential linux-headers-`uname -r` apt-transport-https bison flex curl sox libncurses5-dev libssl-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev libical-dev libneon27-dev libspandsp-dev subversion libtool-bin python-dev unixodbc dirmngr sudo apache2 mariadb-server mariadb-client default-libmysqlclient-dev -y
    ВНИМАНИЕ. Обязательно перезагружаем систему и после этого продолжаем установку.

     

    Устанавливаем PHP версии 5.6 (для корректной работы FreePBX fwconsole):

    curl https://packages.sury.org/php/apt.gpg | apt-key add -
    echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/deb.sury.org.list
    apt-get update && apt-get install php5.6 php5.6-curl php5.6-cli php5.6-mysql php5.6-mbstring php5.6-gd php5.6-xml php-pear -y

    Устанавливаем NodeJS :

    curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
    apt-get install nodejs -y
    pear install Console_Getopt

    Устанавливаем поддержку MariaDB ODBC

    wget https://downloads.mariadb.com/Connectors/odbc/latest/mariadb-connector-odbc-3.1.9-debian-buster-amd64.tar.gz
    tar -zxvf mariadb*
    cp -v mariadb-connector-odbc-3.1.9-debian-buster-amd64/lib/mariadb/libmaodbc.so /usr/lib/x86_64-linux-gnu/odbc/
    
    ВНИМАНИЕ. На момент написание статьи версия MariaDB ODBC — 3.1.9, поэтому обращаем внимание на случай ошибок и при необходимости корректируйте версионность. Последние версии можно посмотреть на оф. сайте — https://downloads.mariadb.com/Connectors/odbc/latest/.

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (3 голос(ов), в среднем: 3,33 из 5)
    Загрузка...
  • Как настроить HTTPS для FreePBX на Debian 9 Stretch

    Рассмотрим как реализовать доступ к FreePBX GUI через HTTPS. Все действия производились на FreePBX установленный на Debian 9 Stretch (как установить можно почитать тут) и Apache.

     

    Любым удобным вам способом копируем сертификат, закрытый ключ, промежуточные + корневой сертификат в систему (как это сделать через SSH можно почитать тут). Так как сертификатом будет пользоваться веб-сервер Apache, то не забываем прописать на файлы сертификатов соответствующие права. Я выставляю такие права доступа на файлы сертификатов:

    chown root:www-data {путь к файлу}
    chmod 640 {путь к файлу}

     

    Включаем модуль SSL в Apache:

    a2enmod ssl

     

    Конфигурация виртуального хоста. Приводим дефолтный вирт. хост /etc/apache2/sites-available/000-default.conf к виду:

    <VirtualHost *:80>
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/html
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    
    <VirtualHost *:443>
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/html
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    
            SSLEngine On
            SSLCertificateFile /etc/ssl/crt.crt
            SSLCertificateKeyFile /etc/ssl/key.key
            SSLCACertificateFile /etc/ssl/crt-ca.crt
    </VirtualHost>
    ВНИМАНИЕ. Обращаю внимание что в SSLCertificateFileSSLCertificateKeyFileSSLCACertificateFile указываем свой путь к файлам.

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
    Загрузка...
  • Использование режима DND с возможностью переадресации на Asterisk 16 + FreePBX 14

    Многие пользователи просили сделать возможность переадресации вызовов на мобильный при установке DND (do not disturb) режима на рабочем телефоне. Так как DND режим не предполагает переадресации, то пришлось свою обработку для этого режима.

     

    Все ниже описанные действия производились на Asterisk 16 + FreePBX 14.

     

    В итоге добавлена возможность активации\де-активации DND режима по звонку самому себе (на всякий слушай, вдруг кому будет так удобней), возможность задание переадресации для конкретных внутренних номеров (не всем пользователям нужно такое поведение DND режима).

     

    В файл /etc/asterisk/extentions_custom.conf добавляем (постарался подробно описать что делает и как работают секции):

    [from-internal-custom]
    include => dnd-on-off
    include => dnd-transfer-check
    
    exten => _XXXX,1,GoSub(dnd-on-off,s,1,(${EXTEN}))
    exten => _XXXX,n,GoSub(dnd-transfer-check,s,1,(${EXTEN}))
    exten => _XXXX,n,Goto(from-internal-additional,${EXTEN},1)
    
    
    [dnd-on-off]
    ; --------------------------------------------------------------------------
    ; Включение\Отключение режима DND по звонку самому себе
    ;
    ; -- Инструкция:
    ; При звонке на свой внутренний номер, включается или отключается режим DND.
    ; --------------------------------------------------------------------------
    ;
    exten => s,1,NoOp(DND - Activate\Deactivate)
    exten => s,n,ExecIf($["${CALLERID(number)}" = "${ARG1}"]?Goto(app-dnd-toggle,*76,1))
    exten => s,n,Return()
    
    
    [dnd-transfer-check]
    ; --------------------------------------------------------------------------------------------
    ; Задание необходимой переадресации на мобильный телефон в DND режиме.
    ;
    ; -- Инструкция:
    ; В условии REGEX("^()" в () указываем внутренние номера для которых необходимо перенаправлять
    ; входящие на мобильные при активном режиме DND. Прим. - REGEX("^(1100|1101)"
    ; --------------------------------------------------------------------------------------------
    ;
    exten => s,1,NoOp(DND transfer call)
    exten => s,n,ExecIf($[${REGEX("^(1100)" ${ARG1})}]?GoSub(dnd-transfer-call,s,1(${ARG1})))
    exten => s,n,Return()
    
    
    [dnd-transfer-call]
    ; ------------------------------------------------------------------------------------------------
    ; Проверка на включенный режим DND и указание номера для переадресации.
    ;
    ; -- Инструкция:
    ; Под указателем "insert DND transfer rule below" добавляем строку вида:
    ; exten => s-XXXX,1,Goto(outbound-allroutes,8XXXXXXXXXX,1), где вместо s-XXXX указываем внутренний 
    ; номер абонента, а вместо 8XXXXXXXXXX номер мобильного для переадресации.
    ;
    ; Прим. - exten => s-1100,1,Goto(outbound-allroutes,8800000000,1)
    ; ------------------------------------------------------------------------------------------------
    ;
    exten => s,1,NoOp(Transfer Call on DND activate)
    exten => s,n,GotoIf($["${DB(DND/${ARG1})}" != ""]?s-${ARG1},1)
    exten => s,n,Return()
    
    ; insert DND transfer rule below
    ;exten => s-XXXX,1,Goto(outbound-allroutes,8XXXXXXXXXX,1)

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
    Загрузка...
  • Динамические конференции на Asterisk 16 + FreePBX 14

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

     

    В интернете есть несколько примеров реализации подобного рода задачи, но я решил реализовать по своему и так как мне нужно. Итак все ниже описанные действия производились на Asterisk 16 + FreePBX 14 + phpAGI.

    ИНФОРМАЦИЯ. По-умолчанию phpAGI задействован в FreePBX и дополнительных манипуляций по его настройки не требуется. Если ниже описанные действия будут применяться к голому Asterisk, то как настроить на нем phpAGI можно прочитать из этой статьи.

     

    — Техническое задание:
    • В активном разговоре нажать *7 — создание и перевод участников разговора в конференцию.
    • В конференции нажать *7 — после гудка набрать номер кого хотим пригласить в конференцию и нажимаем #.
    • Набрать внутренний номер с префиксом *7 (прим. *71100) — если конференция с набранным номером (прим. 1100) существует, то будет присоединение к ней, в противном случае будет создана новая конференция.

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (3 голос(ов), в среднем: 3,67 из 5)
    Загрузка...
  • Подключение SIP транка от Ростелеком (Виртуальная АТС) к FreePBX 14 в связке с Asterisk 16

    Понадобилось недавно подключить SIP-транк от Ростелекома к FreePBX 14 в связке с Asterisk 16. В качестве памятки опишу порядок действий, для того чтобы иметь возможность на FreePBX принимать\звонить через SIP-транк Ростелекома.

     

    В личном кабинете Виртуальной АТС (Ростелеком) переходим в «Пользователи» и заходим в «user1» (можно создать нового, кому как удобней).

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
    Загрузка...
  • Уведомление о занятости абонента при входящем звонке на занятую линию с включенным Call Waiting в FreePBX 14

    В качестве памятки опишу способ доработки функции второй линии (Call Waiting) в FreePBX 14.

     

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

     

    Было бы куда информативнее проигрывать звонящему информационное сообщение, о том что абонент разговаривает, оставайтесь на линии или перезвоните позднее..

     

    Как оказалось в FreePBX есть определенная обработка macro-dialout-one-predial-hook описанная в /etc/asterisk/extensions.conf и которая срабатывает до момента непосредственного звонка абоненту. В этой обработке можно проверить статус выдываемого абонента и в случае если статус линии занят, то проигрывать звонящему сообщение и продолжить вызов.

     

    В файл конфигурации /etc/asterisk/extensions_custom.conf в секцию [from-internal-custom] добавляем:

    [from-internal-custom]
    
    ;----- Playback Wait for answer in INUSE line -----
    [macro-dialout-one-predial-hook]
    exten => s,1,Noop(DEVICE STATE - ${DEVICE_STATE(${DSTRING})})
    exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "INUSE"]?Playback(custom/wait_for_answer))
    exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "INUSE"]?Set(D_OPTIONS=Ttm))
    ПОЯСНЕНИЕ. Возможные варианты состояния линии (DEVICE_STATE) — UNKNOWN, NOT_INUSE, INUSE, BUSY, INVALID, UNAVAILABLE, RINGING, RINGINUSE, ONHOLD (более подробно можно почитать в оф. документации)
    ИНФОРМАЦИЯ. По-умолчанию FreePBX смотрит каталог со звукам по пути — /var/lib/asterisk/sounds/ru

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (1 голос(ов), в среднем: 4,00 из 5)
    Загрузка...
  • Блокировка исходящих звонков на определенные номера или номера из заданного списка в FreePBX 14

    От коллеги по цеху поступила просьба помочь с реализацией интересной задачи, которая заключается во исполнении №152-ФЗ (Федеральный закон «О персональных данных») по которому необходимо блокировать исходящие звонки на номера клиентов, который дали отказ на них.

     

    Но нужно не просто блокировать исходящий звонок на определенный номер, но перед этим необходимо оператору проиграть сообщение и если после или в процессе сообщения нажать кнопку 1, то все же совершить звонок клиенту.

     

    Я увидел решение задачи несколькими способами, рассмотрим этим варианты реализации.

     

    Исходные данные:

    • Debian 9 Strech
    • Asterisk 16 + FreePBX 14
    • Номерная маска операторов — _146XX

     

    Вариант #1

    В файл конфигурации /etc/asterisk/extensions_custom.conf добавляем следующую обработку:

    [from-internal-custom]
    exten => _89858887766/_146XX,1,GoSub(sub-marketing-block,s,1)
    exten => _89855554433/_146XX,1,GoSub(sub-marketing-block,s,1)
    exten => _89852221100/_146XX,1,GoSub(sub-marketing-block,s,1)
    ; -- УКАЗЫВАЕМ ОСТАЛЬНЫЕ НОМЕРА КОТОРЫЕ ПОД ЗАПРЕТОМ --
    
    [sub-marketing-block]
    exten => s,1,Background(custom/message)
    exten => s,2,WaitExten(3)
    exten => 1,1,Goto(s,5)
    exten => i,1,Goto(s,6)
    exten => t,1,Goto(s,6)
    exten => s,5,Return()
    exten => s,6,Hangup()

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
    Загрузка...
  • В FreePBX 14 Dashboard ошибка Mail Queue — exim: permission denied

    В FreePBX 14 Dashboard в Mail Queue висит ошибка:

    Mail Queue: Unknown output from mailq: [[“exim: permission denied”], 1]

     

    Данная ошибка означает что нет доступа списку очереди exim. Чтобы исправить эту ошибку в файле конфигурации (/etc/exim4/exim4.conf.template) в секцию MAIN CONFIGURATION SETTINGS добавим параметр:

    queue_list_requires_admin = false

     

    Обновим конфигурацию exim:

    update-exim4.conf

     

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
    Загрузка...
  • Установка FreePBX 14 в связке с Asterisk 16 на Debian 9 Stretch

    Рассмотрим как установить FreePBX 14 в связке с Asterisk 16 на Debian 9 Stretch.

     

    Подготовка системы

    Перед началом установки обновляем систему до актуального состояния:

    apt-get update && apt-get upgrade -y

    Устанавливаем необходимые зависимости:

    apt-get install build-essential linux-image-amd64 linux-headers-* apt-transport-https bison flex curl sox libncurses5-dev libssl-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp0-dev libspandsp-dev subversion libtool-bin python-dev unixodbc dirmngr sudo apache2 mariadb-server mariadb-client default-libmysqlclient-dev -y
    ВНИМАНИЕ. Обязательно перезагружаем систему и после этого продолжаем установку.

     

    Устанавливаем PHP версии 5.6 (для корректной работы FreePBX fwconsole):

    curl https://packages.sury.org/php/apt.gpg | apt-key add -
    echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/deb.sury.org.list
    apt-get update && apt-get install php5.6 php5.6-curl php5.6-cli php5.6-mysql php5.6-mbstring php5.6-gd php5.6-xml php-pear -y

    Устанавливаем NodeJS :

    curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
    apt-get install nodejs -y
    pear install Console_Getopt

    Устанавливаем поддержку MariaDB ODBC

    wget https://downloads.mariadb.com/Connectors/odbc/connector-odbc-2.0.15/mariadb-connector-odbc-2.0.15-ga-debian-x86_64.tar.gz
    tar -zxvf mariadb*
    cp -v mariadb-connector-odbc-2.0.15-ga-debian-x86_64/lib/libmaodbc.so /usr/lib/x86_64-linux-gnu/odbc/
    

     

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
    Загрузка...
  • Маршрутизация входящего вызова в другой транк. Перенаправление звонков между транками в FreePBX 14

    Столкнулся недавно с задачей по маршрутизации звонков между несколькими FreePBX соединенными SIP-транками. Необходимо вызов пришедший из одного SIP-транка на определенный номерной план передать в другой SIP-транк.

     

    Имеется три АТС на базе FreePBX (13, 14) — FreePBX «A» (номерной план 1ХХ), FreePBX «B» (номерной план 2ХХ), FreePBX «C» (номерной план 3ХХ). Которые соединены между собой SIP-транками следующим образом:

    FreePBX «A» <—-SIP TRUNK «A»—-> FreePBX «B» <—-SIP TRUNK «B»—-> FreePBX «C»

     

    Для наглядности рассмотрим к примеру ситуацию когда необходимо дозваниваться с FreePBX «A» (1ХХ) до абонентов находящихся в FreePBX «С» (3ХХ) и в обратном направлении.

     

    Можно конечно решить задачу соединив отдельным SIP-транком  FreePBX «A» и FreePBX «С», но рассмотрим другой вариант, когда к примеру нет возможности соединить их на прямую, тогда в этом случае посредником для звонков будет выступать FreePBX «B», т.к. он имеет связь по SIP-транку с FreePBX «С» и FreePBX «A».

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
    Загрузка...
© IT-блог Жаконды All Rights Reserved.
Яндекс.Метрика