Asterisk для дома

Asterisk для дома Хостинг

Установка NodeJS

Для работы Freepbx требуется сервер NodeJS. Установим его на Centos 7. Подключаем репозиторий NodeJS с помощью скрипта автоматизации от разработчика.

 # curl -sL https://rpm.nodesource.com/setup_10.x | bash - 

Обновляем кэш yum.

 # yum clean all && sudo yum makecache fast 

Устанавливаем NodeJS и некоторые зависимости.

 # yum install gcc-c++ make nodejs 

Проверяем на всякий случай версию:

 # node -v 

Установка NodeJS на Centos 7

Если видите номер версии, значит установка прошла успешно. Продолжаем подготовку к установке Freepbx.

Установка Asterisk 16

Я буду устанавливать LTS версию Asterisk 16. Советую для долгосрочного использования всегда использовать LTS версии. Они в целом стабильнее и дольше срок поддержки. Идем на страницу https://www.asterisk.org/downloads/asterisk/all-asterisk-versions
и копируем ссылку на нужную версию. Загружаем ее на сервер.

 # cd ~
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
# tar xfz asterisk-16-current.tar.gz
# cd asterisk-16*/
# contrib/scripts/install_prereq install
# contrib/scripts/get_mp3_source.sh 

Устанавливаем на centos 8 пакет libedit-devel
.

 # dnf config-manager --set-enabled powertools
# dnf install libedit-devel 
 # ./configure --libdir=/usr/lib64
# make menuselect 

Установка Asterisk 16 на Centos 8

Выбирайте необходимые модули и звуки, в зависимости от того, что вам нужно. Я в общем случае указываю:

  • Add-ons
    : format_mp3, res_config_mysql.
  • Core Sound Packages
    : русские звуки RU-WAV.
  • Music On Hold File Packages
    : звук WAV.
  • Extras Sound Packages
    : английский EN-WAV, русского к сожалению нет.

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

 # make && make install && make samples && make config
# ldconfig 

1
Feature Codes — List


Asterisk для дома

Быстрая установка из репозитория

У asterisk не существует официального репозитория пакетов, поэтому предпочтительным способом установки свежей версии является сборка из исходников. Но если вы хотите быстро установить и потестить систему, то можно использовать один из сторонних репозиториев asterisk. К примеру —  Tuncy
. Я не знаю, кто ведет этот репозиторий, как часто он обновляется и насколько там актуальные версии. На момент актуализации этой статьи (март 2020 года) в репозитории не было свежих пакетов для Centos 8, только для 7-й.

Добавляем репозиторий астериск в систему. Для этого создаем файл  /etc/yum.repos.d/ tuncy-asterisk-16.repo

следующего содержания.

 [asterisk-common]
name=Asterisk Common Requirement Packages @ tucny.com
baseurl=https://ast.tucny.com/repo/asterisk-common/el\$releasever/\$basearch/
enabled=1
gpgcheck=1
gpgkey=https://ast.tucny.com/repo/RPM-GPG-KEY-dtucny
[asterisk-16]
name=Asterisk 16 Packages @ tucny.com
baseurl=https://ast.tucny.com/repo/asterisk-16/el\$releasever/\$basearch/
enabled=1
gpgcheck=1
gpgkey=https://ast.tucny.com/repo/RPM-GPG-KEY-dtucny 

Обновляем информацию о репозиториях и устанавливаем астериск.

 # yum install asterisk 

Установка asterisk из репозитория

1
Soft phones

Soft Phones run on a host computer and use the computer speaker and mic or a
headset for voice. Soft phones are available for most operating system.


4.1.1
X-Ten

One of the easiest to setup is X-Lite. X-Lite is available for free from
http://www.xten.com
. Asterisk для дома

If X-Lite cannot connect, the setup screen should open, if not, click on the
«drop down» icon just to the left of the green Off-Hook icon.


4.1.2
sipXphone

The sipXphone project
,
formerly known as Pingtel
‘s instant xpressa
soft phone, is a fully functional SIP soft phone that runs on Microsoft Windows
and Linux. The Pingtel’s xpressa phone (no longer a Pingtel product) is based on
this same source base. Windows Download from
http://www.sipfoundry.org/pub/sipXphone/win32/

Очереди (queues) входящих звонков

С помощью очередей в астериске можно управлять потоком входящих звонков, перераспределяя их по определенным правилам. В нашей конфигурации asterisk мы настроим очередь (queue) для направления звонка двум секретарям одновременно. Кто первый ответит, тот и будет разговаривать со звонящим. Если один секретарь уже разговаривает, новый звонок поступит к другому. Если оба секретаря будут заняты, звонящий будет слушать мелодию и ожидать, пока кто-нибудь не освободится. Как только один из секретарей освободится, звонящего из очереди направит на освободившийся номер.

Номер первого секретаря — 100, второго — 130. Я настраиваю простейшую конфигурацию очереди в астериск для понимания принципа работы. Более сложный вариант настройки это сделать 3 очереди для каждого отдела и в голосовом меню-приветствии сделать возможность позвонить в конкретный отдел. Эту конфигурацию я рассмотрю в отдельной статье, хотя в нем и нет ничего сложного. Делается по аналогии с приведенным примером.

Открываем файл queues.conf
и добавляем в самый конец:

 [secretary]
strategy = ringall
member => SIP/100
member => SIP/130 

Все остальные настройки оставляю по-умолчанию. Параметр strategy
может принимать следующие значения:

 exten => t,1,Dial(SIP/100,15) 
 exten => t,1,Queue(secretary,t) 

Если раньше при звонке на внешний номер, звонящий не набирал внутренний номер абонента, то через 5 секунд он перенаправлялся к секретарю с номером 100. Теперь он будет отправляться в очередь secretary, в которую мы завели 2 номера — 100 и 130. Можно добавить и больше номеров, если есть необходимость.

Перечитываем полностью конфигурацию asterisk:

 CLI> reload 

Состояние созданной очереди:

 CLI> queue show secretary
secretary has 0 calls (max unlimited) in 'ringall' strategy (0s holdtime, 0s talktime), W:0, C:0, A:0, SL:0.0% within 0s
Members:
SIP/100 (ringinuse enabled) (Not in use) has taken no calls yet
SIP/130 (ringinuse enabled) (Not in use) has taken no calls yet
No Callers 

Теперь можете позвонить на внешний номер и дождаться перенаправления на секретаря. Зазвонят оба аппарата. Если оба заняты, звонок будет висеть в очереди и ждать освобождения. После звонка статистика очереди изменится:

 CLI> queue show secretary
secretary has 0 calls (max unlimited) in 'ringall' strategy (0s holdtime, 2s talktime), W:0, C:1, A:1, SL:0.0% within 0s
Members:
SIP/100 (ringinuse enabled) (Not in use)  has taken 1 calls  (last was 63 secs ago)
SIP/130 (ringinuse enabled) (Not in use) has taken no calls yet
No Callers 

Вот так легко организовать простую queue (очередь) в asterisk. Более сложные примеры я буду рассматривать в отдельных статьях.

2
PSTN interface cards

There are may type’s of PSTN interface cards. These can include a single FXO
card the allow 1 home telephone line to be connected to Asterisk, or a T1 card
that allows a digital trunk to be connected to Asterisk. All of these cards
allow you to make calls directlly on the Public Switch Telephone Network without
have to use a VOIP phone service provider.

PSTN cards and also be used to connect PSTN (Non VOIP) phone to Asterisk. 
These can include a single FXS card the allow 1 home telephone to be connected
to asterisk, or a T1 card that allows a Channel bank with 24 phones or a tie
line to a PBX to be connected to Asterisk.


3.2.1
FXO Cards


3.2.1.1
Digium Wildcard X100P OEM
FXO PCI Card

Type genzaptelconf -s -d
from the command line (if the card was in the
system when you installed aah this already done)

Next go into the AMP web interface and create a trunk.

Уже существует транк под названием ZAP/g0, отредактируйте это

Введите номер телефона
строка для ваших потов в поле Caller ID

Введите 1
для Максимальное количество каналов

Установите правило набора, если хотите, для этого транка

Выберите исходящий префикс для выбора этой соединительной линии при наборе номера

Установите идентификатор Zap
до 1
(по умолчанию g0)

Этот транк теперь настроен

необходимо добавить маршрут для входящих звонков или
звездочка не ответит на эту строку

нажать на входящие звонки
в amp и настроить входящий маршрут.

для совершения исходящих вызовов вам потребуется исходящий маршрут. настроить один в AMP


3.2.2
Карты FXS


3.2.2.1
Карта Digium TDM400P FXO/FXS

Канал 1

верхний RJ-45


ТДМ400П

Тип genzaptelconf -s -d
из командной строки (если карта находилась в
система, когда вы установили, ааа, это уже сделано)

Далее, используя редактирование конфигурации, загляните в zapata-auto.conf
файл вы увидите список всех ваших каналов.
Настройте магистрали как магистрали и расширения как расширения в AMP.

Например, если ваш файл zapata-auto.conf выглядит так

 ; Диапазон 1: WCTDM/0 "Шаблоны TDM400P REV E/F Board 1"
сигнализация = fxo_ks
; Примечание: это расширение. Создайте расширение ZAP в AMP для канала 1.
канал => 1
сигнализация = fxs_ks
; Примечание: это багажник. Создайте магистраль ZAP в AMP для канала 2
контекст = из-pstn
канал => 2 

, затем добавьте расширение zap для канала 1 и ствол zap для канала 2

возможно, вам придется перезагрузить систему, чтобы все заработало.

необходимо добавить маршрут для входящих звонков иначе астериск не будет отвечать на ваши
ствол

нажмите на входящие вызовы
в amp и настроить входящий маршрут.

для совершения исходящих звонков вам понадобится исходящий маршрут. Настройте один в AMP.


3.2.3
Карты T1/PRI

Подготовка к
Дигиум Т100П

и PRI

войдите в CLI как root

Добавьте эти строки в /etc/zaptel.conf

span=1,1,0,esf,b8zs

bchan=1-23 # установите значение 1-15,17-31 для E1

dchan=24 # установите значение 16 для E1

Добавьте # перед fxsks=1, чтобы это выглядело так:

span=1,1,0,esf,b8zs

bchan=1-23 # установите значение 1-15,17-31 для E1

dchan=24 # установите значение 16 для E1

#fxsks=1

зона нагрузки = мы

defaultzone=нас

Control-X, затем Y, чтобы сохранить zaptel.conf

Закомментируйте с помощью ; к signalling=fxs_ks:

Затем скопируйте чуть ниже:

сигнализация = pri_cpe ; pri_cpe = ведомое устройство PRI; pri_net = мастер PRI

switchtype=национальный

Затем добавьте этот callerid=asreceived в ;usedistinctiveringdetection=yes

в конце файла скопировать и вставить:

канал => 1-23 ; Установите это на 1-15,17-31 для E1

Нажмите «Обновить» и нажмите «Перечитать конфигурацию»

.

Вернитесь к корню SSH

Выключите и перезапустите систему

Вам просто нужно войти через Интернет и выполнить настройку.

Установка из исходников

Вопроса установки звездочка
я уже касался ранее в одной из прошлых статей. Но там я использовал связку с панелью управления freepbx. Здесь же мы будем использовать голый астериск, без обвязок. Более того, я не буду использовать никаких дополнительных плат расширения и модемов. Только софтовая АТС, которая легко переносилась с одного сервера на другое прибытие. Считаю, что такой подход наиболее эффективен и к нему не стоит стремиться. Настроив виртуальную машину, вы навсегда будете отвязаны от железа и спокойно можете перенастроить свой сервер только в любом месте, заменив сетевые.

Таким образом, нам необходимо установить asterisk и pjproject с jansson. Наблюдением этого достаточно. Если вы предпочитаете сервер debian, то назначается специальная инструкция по установке asterisk 16 на debian 10
. После этого можно сразу же перейти на следующий этап. Приступим.

Первым делом обновляем систему и отключаем SELinux, как рассказано в статье про настройку centos
. Установим теперь пакеты, которые нам понадобятся для сборки. В первую очередь подключим репозиторий epel.

 # dnf install epel-release 

Дальше идет мета пакет Development Tools
со всем необходимым для сборки из исходников.

 # dnf groupinstall "Development Tools" 

Установка Development tools

И еще некоторые зависимости, которые будут нужны.

 # dnf install git wget net-tools sqlite-devel psmisc ncurses-devel libtermcap-devel newt-devel libxml2-devel libtiff-devel gtk2-devel libtool libuuid-devel subversion kernel-devel kernel-devel-$(uname -r) crontabs cronie-anacron mariadb mariadb-server 

Установка зависимостей asterisk 16

Настройте mysql сервер, задав пароль для root.

 # systemctl start mariadb
# systemctl enable mariadb
# /usr/bin/mysql_secure_installation 

На этом подготовка закончена. Устанавливаем Jansson и pjsip.

 # cd ~
# git clone https://github.com/akheron/jansson.git
# cd jansson
# autoreconf -i
# ./configure --prefix=/usr/
# make && make install 

Установка Jansson

 # cd ~
# git clone https://github.com/pjsip/pjproject.git
# cd pjproject
# ./configure CFLAGS="-DNDEBUG -DPJ_HAS_IPV6=1" --prefix=/usr --libdir=/usr/lib64 --enable-shared --disable-video --disable-sound --disable-opencore-amr
# make dep && make && make install
# ldconfig 

Установка pjsip

Все готово к установке непосредственно Astersik

Читайте также:  IT-блог о веб-технологиях, серверах, протоколах, базах данных, СУБД, SQL, компьютерных сетях, языках программирования и создание сайтов

Я буду устанавливать LTS версию Asterisk 16. Советую для долгосрочного использования всегда использовать LTS версии. Они в целом стабильнее и дольше срок поддержки. Идем на страницу https://www.asterisk.org/downloads/asterisk/all-asterisk-versions
и копируем ссылку на нужную версию. Загружаем ее на сервер.

 # cd ~
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
# tar xfz asterisk-16-current.tar.gz
# cd asterisk-16*/
# contrib/scripts/install_prereq install
# contrib/scripts/get_mp3_source.sh 

Устанавливаем на centos 8 пакет libedit-devel
.

 # dnf config-manager --set-enabled powertools
# dnf install libedit-devel 
 # ./configure --libdir=/usr/lib64
# make menuselect 

Установка Asterisk 16 на Centos 8

Выбирайте необходимые модули и звуки, в зависимости от того, что вам нужно. Я в общем случае указываю:

  • Add-ons
    : format_mp3, res_config_mysql.
  • Core Sound Packages
    : русские звуки RU-WAV.
  • Music On Hold File Packages
    : звук WAV.
  • Extras Sound Packages
    : английский EN-WAV, русского к сожалению нет.

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

 # make && make install && make samples && make config
# ldconfig 

По-умолчанию, asterisk установлен от root и будет запускаться от него же. Я предлагаю для этого создать отдельного пользователя и запускать астериск от него. Для этого создаем пользователя и добавляем его в некоторые группы.

 # groupadd asterisk
# useradd -r -d /var/lib/asterisk -g asterisk asterisk
# usermod -aG audio,dialout asterisk
# chown -R asterisk.asterisk /etc/asterisk /var/{lib,log,spool}/asterisk /usr/lib64/asterisk 

Настраиваем Asterisk на запуск под этим пользователем. Для этого добавляем в конфиг  /etc/sysconfig/asterisk
параметры:

 AST_USER="asterisk"
AST_GROUP="asterisk" 

Теперь добавим примерно то же самое в сам конфиг астера /etc/asterisk/asterisk.conf
.

 runuser = asterisk
rungroup = asterisk 

Пробуем запустить asterisk:

 # systemctl start asterisk 

Если нет сообщений об ошибке, скорее всего все в порядке. Проверяем статус службы.

 # systemctl status asterisk 

Запуск asterisk

Asterisk запустился, но есть небольшие ошибки.

 radcli: rc_read_config: rc_read_config: can't open /etc/radiusclient-ng/radiusclient.conf: No such file or directory 

Связаны с тем, что в конфигах неверно указан путь к radiusclient. Сейчас исправим это.

 # sed -i 's";\[radius\]"\[radius\]"g' /etc/asterisk/cdr.conf
# sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cdr.conf
# sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cel.conf 

Перезапускаем asterisk и убеждаемся, что ошибок нет. Проверим, все ли в порядке, зайдя в консоль:

 # asterisk -r 

Проверка работы

Если получили такой же вывод команды, значит все в порядке, астериск 16 установлен. Добавим его теперь в автозагрузку.

 # systemctl enable asterisk 

Для тех, у кого что-то не получается или не понятно, как сделать, записал видео по приведенной инструкции. Видео подтверждает, что материал актуален и если делать по нему, то все получится. https://youtu.be/9q9RGqBVQbA

Если вы хотите использовать для настройки Asterisk предыдущую версию системы, то смотрите мою статью по установке Asterisk 16 на Centos 7
. Там нет принципиальных отличий, но имейте ввиду, что все дальнейшие действия были проделаны и проверены на 8-й вверсии Центос, так что я не ручаюсь, что это так же заработает и на 7-й. Полную проверку и адаптацию материала я сделал для CentOS 8.

2
Hard phones


4.2.1
Cisco 7960/7940

Type setup-cisco
from the command line to set up
a basic SIPDefault.cnf in the /tftpboot directory.

Copy your Cisco 7.4 SIP firmware into the /tftpboot
directory using WinSCP
.

using the Cisco config
tool in the maint menu to set up
your phone.


4.2.1.1
Setting up a Cisco phone step by step

Power on your phone and connect it to your network. You will need to change the IP address of your phone to a free one on your network or enable DHCP is you have a DHCP server.

Unlock your phone
by pressing **#
(for old firmware) or selecting
unlock config
from the config menu
and type in the password
(default is ‘ cisco
‘)

 setup-cisco
chmod 777 /tftpboot/* 

Add a Cisco config file for your phone. Use the wed GUI and click maintenance -> Cisco Config -> Create

a new phone configuration file.

Type in the mac address
of your phone. It’s located on the bottom of your phone. (starts with 00)
Enter a name for your phone in the Phone Label box. Enter
200
in the Line Name
and the Display Name
fields for Line 1
. Click
add
.

Click on Edit phone configuration files
and click edit
next to your phone. Go to
Line 1

and type 200 in the Auth Name
box. Then enter a password like abc123 in the
password box
. Click change
.

Create extension 200. setup -> extensions
use abc123
for the extension password
.

Reboot your phone by disconnecting the power or pressing *-6-settings.

Your phone should upload the new firmware and extension. Make a test call like *65.

Trouble shooting

: The Cisco phone can be difficult to upgrade. If your phone does not seem to upload the firmware try this. From command line.

 cp /tftpboot/cisco_util/* /tftpboot 
 rm /tftpboot/xmlDefault. CNF. XML
rm /tftpboot/XMLDefault.cnf.xml 


4.2.2
Polycom

http://www.voip-info.org/wiki-Polycom+Phones

Учет и просмотр статистики звонков (cdr viewer)

Важной и нужной возможностью современной АТС на базе asterisk является сбор и просмотр статистики звонков. По умолчанию, астериск ведет статистику в файле  /var/log/asterisk/cdr-csv/Master.csv
. Разобрать этот файл и передать куда-то в обработку не очень сложно, если у вас есть что-то или кто-то, кто способен написать на каком-нибудь языке программирования обработку.

Мы будем использовать готовые бесплатные инструменты для просмотра статистики звонков. Все необходимое для этого мы установили в самом начале. Перенесем сбор статистики в mysql базу. Для этого запускаем mariadb сервер, добавляем в автозагрузку и устанавливаем пароль администратора:

 # systemctl start mariadb
# systemctl enable mariadb.service
# /usr/bin/mysql_secure_installation 

Подключаемся к mysql и создаем пользователя и базу данных:

 # mysql -uroot -p
MariaDB [(none)]> create database asterisk;
MariaDB [(none)]> use asterisk;
MariaDB [asterisk]> CREATE TABLE `cdr` (   `id` int

unsigned NOT NULL auto_increment,   `calldate` datetime NOT NULL default '0000-00-00 00:00:00',   `clid` varchar(80) NOT NULL default '',   `src` varchar(80) NOT NULL default '',   `dst` varchar(80) NOT NULL default '',   `dcontext` varchar(80) NOT NULL default '',   `channel` varchar(80) NOT NULL default '',   `dstchannel` varchar(80) NOT NULL default '',   `lastapp` varchar(80) NOT NULL default '',   `lastdata` varchar(80) NOT NULL default '',   `duration` int NOT NULL default '0',   `billsec` int NOT NULL default '0',   `disposition` varchar

NOT NULL default »,   `amaflags` int NOT NULL default ‘0’,   `accountcode` varchar

NOT NULL default »,   `uniqueid` varchar

 NOT NULL default '',   `userfield` varchar(255) NOT NULL default '',   PRIMARY KEY  (`id`),   KEY `calldate` (`calldate`),   KEY `accountcode` (`accountcode`),   KEY `uniqueid` (`uniqueid`),   KEY `dst` (`dst`),   KEY `src` (`src`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
MariaDB [asterisk]> grant all on asterisk.* to 'asterisk_user'@'localhost' identified by '12345678'; 

Теперь нам надо установить odbc коннектор для mysql — mysql-connector-odbc
. С этим в Centos 8 есть некоторые трудности, так как нужных пакетов нет в базовых репозиториях. Я в итоге его взял из официальной репы mysql. Для этого скачиваем
и подключаем их репозиторий.

 # wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
# dnf localinstall mysql80-community-release-el8-1.noarch.rpm
# dnf makecache 

Тут я получил ошибку:

 Failed to download metadata for repo 'mysql-tools-community'
Error: Failed to download metadata for repo 'mysql-tools-community' 

Не стал разбираться, почему этот репозиторий недоступен, так как он мне не нужен. Просто зашел в /etc/yum.repos.d/mysql-community.repo и закомментировал строки с этим репозиторием.

 #[mysql-tools-community]
#name=MySQL Tools Community
#baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/8/$basearch/
#enabled=1
#gpgcheck=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 

После этого благополучно обновил кэш пакетов и установил mysql-connector-odbc на centos 8.

 # dnf install mysql-connector-odbc 

Теперь редактируем файлы конфигурации. Добавляем в самый конец /etc/asterisk/res_odbc.conf
:

 [asterisk]
enabled => yes
dsn => MySQL-asterisk
username => asterisk_user
password => 12345678 

В конец файла /etc/asterisk/cdr_adaptive_odbc.conf
:

 [cdr_adaptive_connection]
connection=asterisk
table=cdr
alias start => calldate 

Создаем файл  /etc/odbc.ini
следующего содержания:

 [MySQL-asterisk]
Description = MySQL Asterisk database
Driver = MySQL
Server = localhost
User = asterisk_user
Password = 12345678
Socket = /var/lib/mysql/mysql.sock
Database = asterisk 
 [MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc8.so
Setup = /usr/lib/libodbcmyS.so
Driver64 = /usr/lib64/libmyodbc8a.so
Setup64 = /usr/lib64/libodbcmyS.so
FileUsage = 1
CPTimeout =
CPReuse = 

В последнем конфиге проверьте все пути. Имена файлов могут немного отличаться в зависимости от установленной версии коннектора. Актуализируйте пути и имена файлов. После этого проверьте работу odbc connector. Для этого запустите в консоли команду:

 # odbcinst -q -d 
 usegmtime=no 

После этого перезапускаем астериск:

 # systemctl restart asterisk 

Заходим в консоль и проверяем подключение по odbc.

 > odbc show all 

Настройка odbc в asterisk

Совершаем звонок и проверяем таблицу mysql. У меня добавилась информация о звонке с номера 100 на 101, когда он был не подключен. Если сделать экспорт, то получится вот такая запись:

 INSERT INTO `cdr` (`id`, `calldate`, `clid`, `src`, `dst`, `dcontext`, `channel`, `dstchannel`, `lastapp`, `lastdata`, `duration`, `billsec`, `disposition`, `amaflags`, `accountcode`, `uniqueid`, `userfield`) VALUES
(1, '2020-02-27 19:08:17', '\"Number 100\" <100>', '100', 'num-not-connected', 'call-out', 'SIP/100-0000000e', '', 'Dial', 'SIP/101,15', 6, 4, 'ANSWERED', 3, '', '1582819697.14', ''); 

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

7
Music On Hold (mpg123)


www.voip-info.org
music on hold info

Установка Asterisk

Скачиваем архив последней версии Asterisk с официального сайта.

 # cd ~ && wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz 
 # tar zxvf asterisk-*.tar.gz 

Переходим в директорию с исходниками.

 # cd asterisk* 

Выполняем скрипт для установки пакетов с зависимостями для asterisk.

 # contrib/scripts/install_prereq install 

Запускаем скрипт для скачивания исходников для работы с mp3.

 # contrib/scripts/get_mp3_source.sh 
 # ./configure --with-pjproject-bundled --with-jansson-bundled --with-crypto --with-ssl=ssl --with-srtp 

Запускаем меню для выбора параметров:

 make menuselect 

Установка Asterisk

В целом, можно оставить дефолтную настройку, если вы не очень разбираетесь, что тут выбирать. Более подробно можете посмотреть в моей статье про подробную настройку asterisk
.

Можно запускать установку asterisk.

 # make && make install && make config && make samples && ldconfig 

Настроим запуск астериск от системного пользователя asterisk. Для этого редактируем скрипт запуска  /usr/sbin/safe_asterisk
, установив параметр.

 ASTARGS="-U asterisk" 

Можете то же самое сделать автоматически.

 # sed -i 's/ASTARGS=""/ASTARGS="-U asterisk"/g' /usr/sbin/safe_asterisk 

Создадим этого пользователя и назначим нужные права на каталоги.

 # useradd -m asterisk
# chown asterisk.asterisk /var/run/asterisk
# chown -R asterisk.asterisk /etc/asterisk
# chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk
# chown -R asterisk.asterisk /usr/lib/asterisk 
 # systemctl start asterisk 

Проверьте сразу, что он запустился.

 # systemctl status asterisk 

Запуск астериск

Если у вас будут ошибки:

 radcli: rc_read_config: rc_read_config: can't open /etc/radiusclient-ng/radiusclient.conf: No such file or directory 

То отредактируйте конфигурационные файлы asterisk, заменив в некоторых строках пути на правильные.

 # sed -i 's";\[radius\]"\[radius\]"g' /etc/asterisk/cdr.conf
# sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cdr.conf
# sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cel.conf 

После этого перезапустите asterisk, ошибок быть не должно.

Читайте также:  IT-блог о веб-технологиях, серверах, протоколах, базах данных, СУБД, SQL, компьютерных сетях, языках программирования и создание сайтов

9
xPL


TiVo

If you have a Microsoft based home automation system see the xPL project page ( http://www.xplproject.org.uk/
).

If you have a fully Linux based system MisterHouse ( http://www.misterhouse.net
)
has a good xPL interface.

xPL is not running be
default. To enable it type cd /usr/src/xplast then type ./install.sh

Once xPL is installed and running it will send out xPL heartbeat messages.
xPL will also send out notification of new voicemail messages. x PL can also send
out callerid info for any incoming calls. you must add a line to extensions.conf
to make it do this. Add this line to extension.conf at a location where you want
the callerid sent out.

exten => s,1,AGI,xplring.agi

 [from-pstn-timecheck]
exten => .,1,Goto(s,1)
exten => s,1,AGI,xplring.agi
exten => s,2,GotoIf($[${IN_OVERRIDE} = forcereghours]?from-pstn-reghours,s,1:)
exten => s,3,GotoIf($[${IN_OVERRIDE} = forceafthours]?from-pstn-afthours,s,1:)
exten => s,4,GotoIfTime(${REGTIME}|${REGDAYS}|*|*?from-pstn-reghours,s,1:)
exten => s,5,Goto(from-pstn-afthours,s,1) 

Включаем голосовую почту

Продолжаем наращивать функционал voip атс. В данном разделе опишу настройку голосовой почты в asterisk. Для начала пару слов о том, что это такое. Если адресат звонка долго не отвечает, мы можем предложить звонящему оставить для него голосовое сообщение. Когда получатель вернется на место, он сможет прослушать оставленные ему сообщения. При этом, после записи голосового сообщения, будет отправлено письмо с записью этого сообщения на почтовый адрес получателя.

 130 => 1234,Number 130,user130@mail.ru
100 => 1234,Number 100,user100@mail.ru 

Для корректной отправки почтовых сообщений сразу на внешние почтовые ящики необходимо правильно настроить локальный почтовый сервер, либо использовать внешний. Я рекомендую использовать отдельный сервер, наверняка он есть в организации, либо на локальном использовать какой-то публичный с авторизацией по smtp. Пример такой настройки — отправка почты с авторизацией по smtp в linux
.

В консоли перезапускаем модуль голосовой почты и проверяем пользователей:

 CLI> voicemail reload
Reloading voicemail configuration.
asterisk*CLI> voicemail show users
Context Mbox User Zone NewMsg
default 130 Number 121 0
default 100 Number 100 0
other 1234 Company2 User 0
3 voicemail users configured. 

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

Это пол дела. Теперь нам нужно добавить голосовую почту в dialplan. Причем в 2 разных места. Я буду использовать номер 500 для звонка в панель управления голосовой почтой. Позвонив на этот номер, пользователь введет свой пароль и сможет управлять голосовыми сообщениями (слушать, удалять, менять настройки). Добавим в контекст для исходящих звонков звонок на этот номер. Добавлять следует сразу за номерами для записи, которые мы ранее создали и перед правилом набора трехзначных номеров.

 [call-out]
;Номер для записи звуков, окончание записи #
exten => _35X, 1, NoOp()
exten => _35X, n, Wait

exten => _35X, n, Playback(beep) exten => _35X, n, Record(/tmp/music${EXTEN:2}:wav) exten => _35X, n, Wait

exten => _35X, n, Playback(/tmp/music${EXTEN:2}) exten => _35X, n, Wait

exten => _35X, n, Hangup() ;Управление голосовой почтой exten => 500,1,VoiceMailMain() ;Звонок на внутренний номер exten => _XXX,1,Dial(SIP/${EXTEN}, ;Звонок на внешний номер exten => _XXX.,1,Dial(SIP/${EXTEN}@397945)

Добавленные данные выделил цветом. Обращаю внимание на цифру 15
. Ранее этой настройки не было, сейчас я добавил. Она будет означать, что звонок будет длиться 15 секунд. Если за это время никто не ответит, он будет сброшен. До использования голосовой почты, можно было не устанавливать этот параметр, оставить его значение по-умолчанию, оно очень большое, не помню точно сколько по времени. Но сейчас нам нужно при неснятии трубки дольше 15-ти секунд, включать запись голосового сообщения.

Конкретно в контексте внутренних звонков этот параметр не принципиален, так как я не добавляю голосовую почту для звонков внутри организации, хотя можно это сделать. Не вижу в этом смысла. Я добавил сюда этот параметр, чтобы время ожидания ответа было одинаково во всех звонках. В следующих изменениях это уже будет играть принципиальное значение.

Пока мы просто добавили номер, куда можно позвонить для управления голосовой почтой. Теперь добавим непосредственно возможность записи голосовых сообщений по событиям. Остановимся на этом пункте поподробнее. Для начала уясним, в каких состояниях может пребывать номер:

  1. Номера вообще не существует на сервере. В нашем случае, к примеру, это любой номер не из диапазона 100-130.
  2. Номер существует, но он не зарегистрирован на АТС, то есть аппарат с этим номером не подключен.
  3. Номер существует, зарегистрирован, но при звонке на него никто не отвечает.
  4. Номер существует, зарегистрирован, но в данный момент занят.

Каждое из этих четырех состояний обрабатывается отдельно. Я считаю, что голосовую почту уместно будет включать по событию номер 3. Но это не обязательно, можно и на занято повесить возможность оставить сообщение. Тут на ваше усмотрение. Я покажу пример, как это делается, а вы сможете настроить так, как вам нужно.

Обработка этих событий не такая простая, как кажется на первый взгляд. Я сразу же столкнулся с трудностью следующего характера. С параметром call-limit=1 при звонке на номер, который занят в данный момент, астериск возвращает статус CHANUNAVAIL, что может означать, к примеру, что канал недоступен. На статус занято BUSY это совсем не похоже. Для разрешения этой ситуации я воспользуюсь функцией ChanIsAvail,
которая проверяет не статус пира, а статус канала и возвращает значение 2 или 3, когда он занят.

 [ivr-main]
exten => s,1,Answer()
exten => s,2,Background(/etc/asterisk/ivr/ivr-main)
exten => s,3,WaitExtenexten => _XXX,1,Dial(SIP/${EXTEN},15)
;Задаем переменную для передачи в голосовую почту
exten => _XXX,n,Set(dstNUM=${EXTEN})
;Проверяем статус пира, существует или нет
exten => _XXX,n,GotoIf($["${SIPPEER(${EXTEN},status)}" = ""]?num-not-exist,1)
;Проверяем статус пира, подключен или нет
exten => _XXX,n,GotoIf($["${SIPPEER(${EXTEN},status):0:2}" = "UN"]?num-not-connected,1)
;Проверяем канал на занятость
exten => _XXX,n,ChanIsAvail(SIP/${EXTEN},s)
;Выводим в лог значение функции ChanIsAvail, нужно только для отладки, можно удалить строку
exten => _XXX,n,NoOp(=========== ChanIsAvail STATUS: ${AVAILSTATUS} ===========)
;Если функция возвращает 2 или 3, значит абонент занят
exten => _XXX,n,GoToIf($[${AVAILSTATUS} = 2]?num-BUSY,1)
exten => _XXX,n,GoToIf($[${AVAILSTATUS} = 3]?num-BUSY,1)
;Обрабатываем остальные статусы
exten => _XXX,n,Goto(num-${DIALSTATUS},1)
;Если номера не существует говорим "Ошибочный номер, попробуйте еще раз"
exten => num-not-exist,1,Wait

exten => num-not-exist,n,Playback(invalid) ;Если номер не подключен, говорим "Набранный вами номер отключен, проверьте номер и повторите попытку exten => num-not-connected,1,Wait

exten => num-not-connected,n,Playback(ss-noservice) ;Если номер занят, говорим "Занято" exten => num-BUSY,1,Wait

exten => num-BUSY,n,Playback(vm-isonphone) ;Если номер не отвечает, включаем голосовую почту exten => num-NOANSWER,1,Wait

exten => num-NOANSWER,n,Voicemail(${dstNUM},u) ;Если еще по какой-то причине будет статус CHANUNAVAIL, говорим, что номер не доступен в данный момент exten => num-CHANUNAVAIL,1,Wait

exten => num-CHANUNAVAIL,n,Playback(vm-isunavail) ;Если в голосовом меню не выбрали внутренний номер, адресуем звонок секретарю exten => t,1,Dial(SIP/100,15)

 [call-out]
;Номер для записи звуков, окончание записи #
exten => _35X, 1, NoOp()
exten => _35X, n, Wait

exten => _35X, n, Playback(beep) exten => _35X, n, Record(/tmp/music${EXTEN:2}:wav) exten => _35X, n, Wait

exten => _35X, n, Playback(/tmp/music${EXTEN:2}) exten => _35X, n, Wait

exten => _35X, n, Hangup() ;Управление голосовой почтой exten => 500,1,VoiceMailMain() ;Звонок на внутренний номер exten => _XXX,1,Dial(SIP/${EXTEN},15) exten => _XXX,n,Set(dstNUM=${EXTEN}) exten => _XXX,n,GotoIf($["${SIPPEER(${EXTEN},status)}" = ""]?num-not-exist,1) exten => _XXX,n,GotoIf($["${SIPPEER(${EXTEN},status):0:2}" = "UN"]?num-not-connected,1) exten => _XXX,n,ChanIsAvail(SIP/${EXTEN},s) exten => _XXX,n,NoOp(=========== ChanIsAvail STATUS: ${AVAILSTATUS} ===========) exten => _XXX,n,GoToIf($[${AVAILSTATUS} = 2]?num-BUSY,1) exten => _XXX,n,GoToIf($[${AVAILSTATUS} = 3]?num-BUSY,1) exten => _XXX,n,Goto(num-${DIALSTATUS},1) exten => num-not-exist,1,Wait

exten => num-not-exist,n,Playback(invalid) exten => num-not-connected,1,Wait

exten => num-not-connected,n,Playback(ss-noservice) exten => num-BUSY,1,Wait

exten => num-BUSY,n,Playback(vm-isonphone) exten => num-NOANSWER,1,Wait

exten => num-NOANSWER,n,Voicemail(${dstNUM},u) exten => num-CHANUNAVAIL,1,Wait

exten => num-CHANUNAVAIL,n,Playback(vm-isunavail) ;Звонок на внешний номер exten => _XXX.,1,Dial(SIP/${EXTEN}@397945) include => handup-sip

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

Обращаю ваше внимание, что в контексте голосового меню я не сделал обработку статусов состояния телефона секретаря, хотя это может быть нужно, если у вас будет один секретарь принимать звонки. Ему и голосовая почта может пригодиться. В следующем пункте я расскажу про случай, когда в офисе работают 2 секретаря и обработкой звонков будет заниматься очередь (queue), поэтому статусы в том виде, как они реализованы здесь будут не нужны. Вы можете использовать любую конфигурацию, которая вам подойдет. Например, использовать очередь, но с одним секретарем в ней. Настраивайте по аналогии, я даю базовый функционал. Все возможные случаи разобрать невозможно.

Перечитывайте диалплан и тестируйте конфигурацию. При звонке абоненту и его неответе, звонящий услышит в трубке сообщение о том, что номер не отвечает и предложение оставить голосовую почту. Если звонивший оставит сообщение, то получатель получит это сообщение по email и сможет его прослушать там, либо позвонить на номер 500, ввести свой номер и пароль, заданные в voicemail.conf
и послушать сообщение по телефону.

Я сталкивался с ошибкой, когда у пользователя в настройках отключена голосовая почта, но он все равно получал сообщения. У него мигало оповещение на телефонном аппарате. Нужно было оперативно удалить все оставленные сообщения без прослушивания. Как удалить голосовую почту в астериск
я написал в отдельной заметке.

На этом настройка голосовой почты окончена. Можно пользоваться, не забывая добавлять новых пользователей в voicemail.conf и перечитывая конфигурацию голосовой почты.

Онлайн курcы по Mikrotik

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую пройти курcы по программе, основанной на информации из официального курcа MikroTik Certified Network Associate
. Помимо официальной программы, в курcах будут лабораторные работы, в которых вы на практике сможете проверить и закрепить полученные знания. Все подробности на сайте Курcы по ИТ
.

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

  • Знания, ориентированные на практику;
  • Реальные ситуации и задачи;
  • Лучшее из международных программ.

Помогла статья? Подписывайся на telegram канал
автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

3
Webmin — web based Linux management

Webmin in a great package for managing a Linux box from the web. Webmin make it easy to configure application like SMTP mail. To install Webmin download the latest RPM from their web site and install it.

 wget http://unc.dl.sourceforge.net/sourceforge/webadmin/webmin-1.220-1.noarch.rpm
rpm -Uvh webmin-1.220-1.noarch.rpm 

8
Fax support (SpanDSP)

SpanDSP allows Asterisk to receive faxes. This service must be
installed. Type install-pdf
from the command line. You can set this up in AMP.

2
H. 323 add-on

This package adds H.323 support to Asterisk it also install the GnuGK
H.323 gatekeeper.

from the command line. Next type

The calls from the gatekeeper will be put in the from-pstn
context

. Make sure you have an incoming call route set up so the
calls have some place to go.

go back to the main NetMeeting screen and type in the extension of your
sip phone. You should be connect to your incoming call route.

For support try

The asterisk-oh323 project home page

http://www.inaccessnetworks.com/projects/asterisk-oh323

GnuGK home page

http://www.gnugk.org/

4
Phones

VOIP phones vary widely in price, features, and sound quality. Phones support
either SIP or IAX protocol. For simple testing a free soft phone like X-ten is good.
For day to day use a good hard phone is the best. Grandstream makes a cheap easy
to configure phone with good quality and feature. Polycom and Cisco make the best
phones with the highest sound quality and feature. If you have and existing analog
phone like a cordless that you want to use and ATA will convert an analog phone
to SIP.

Настройка iptables, asterisk за NAT, проброс портов

Сразу же уделим внимание настройке iptables для работы астериск. У нас может быть 2 ситуации, которые требуют двух принципиально различных настроек:

  1. Сервер телефонии имеет свой внешний ip адрес и напрямую смотрит через него в интернет.
  2. Сервер стоит за шлюзом, не имеет своего внешнего адреса, доступ в интернет с помощью NAT.

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

В моем примере сервер будет находиться в локальной сети офиса за nat. Доступ в интернет осуществляется через офисный шлюз, на котором установлены iptables. На нем будет сделан проброс необходимых портов для работы внешних телефонных аппаратов. В случае, если у вас все телефоны будут находиться в локальной сети офиса вместе с сервером телефонии, пробрасывать ничего не нужно. С сервисом zadarma все будет работать без проброса портов. Пиры зарегистрируются на внешнем сервере провайдера и этого будет достаточно для приема и совершения звонков.

С другими провайдерами этого может быть не достаточно. В общем случае для настройки asterisk за nat нужно будет на шлюзе пробросить порт 5060 и диапазон 10000:20000. По-умолчанию астериск использует UDP порты. Если вы не будете менять эти настройки, то пробрасывать нужно именно UDP.

В моем случае получается следующая картина. На шлюзе сделан проброс необходимых портов:

 iptables -t nat -A PREROUTING -p udp --dst $WAN_IP --dport 5060 -j DNAT --to 192.168.1.25:5060
iptables -t nat -A PREROUTING -p udp --dst $WAN_IP --dport 10000:20000 -j DNAT --to 192.168.1.25 

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

Если вы делаете тестовую установку и настройку asterisk, можете совсем отключить firewalld:

 # systemctl stop firewalld
# systemctl disable firewalld
# dnf remove firewalld 

Перевод, перехват, переадресация звонка

Рассмотрим несколько необходимых функций и возможностей телефонной станции asterisk. Начнем с перевода звонка. Как перевести звонок на другого абонента? По-умолчанию в астериске для трансфера звонка предусмотрена клавиша #. Посмотреть, так ли это в вашей конфигурации, введите в консоли астера команду:

 CLI> features show
Builtin Feature Default Current
--------------- ------- -------
Pickup *8 *8  Blind Transfer # # 
Attended Transfer
One Touch Monitor
Disconnect Call * *
Park Call 

Во время разговора нужно нажать #
и набрать номер, куда вы хотите перевести звонок. Для того, чтобы трансфер состоялся, он должен быть разрешен в диалплане в команде Dial следующим образом:

 exten => _XXX,n,Dial(SIP/${EXTEN},15) 

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

Перевод звонка можно сделать с помощью функции самого телефона. Мне еще не попадалось ни одного телефона, который бы не умел переводить звонок. Обычно для этих целей предназначена отдельная клавиша или функция в меню телефона. Для уточнения информации о переводе нужно воспользоваться инструкцией самого телефона. В софтфоне, которым я пользуюсь, есть отдельная клавиша для перевода звонка:

Кнопка перевода звонка

С включенным по-умолчанию Blind Transfer
есть проблемы. Например, вы перенаправляете звонок на другой номер, а он не ответил или у него занято. Входящий вызов сбрасывается. В астериске есть другой режим перевода звонка, он называется Attended Transfer
, по-умолчанию он выключен. Работает он более изящно. Сначала вы звоните тому, куда хотите перевести номер, разговариваете с ним, убеждаетесь, что он доступен и готов принять звонок. Только после этого переводите звонок на этого абонента. Чтобы включить такое перенаправление вызова, нужно раскомментировать в features.conf
строку:

 atxfer => *2 

Горячую клавишу можно переназначить на любую другую. На этом о переводе звонка в астериске все.

Теперь поговорим о перехвате звонка. Хотя говорить тут особо нечего. В asteerisk перехват работает из коробки и не требует никаких настроек. Для того, чтобы перехватить звонок, нужно снять трубку и нажать комбинацию *8
. Комбинация задается в том же файле, что и перехват — features.conf
. Перехватывать звонки могут только абоненты в одной группе. Это задается в свойствах пользователя, я об этом рассказывал в самом начале, когда мы создавали sip аккаунты. Напомню, что речь идет о параметрах  callgroup
и  pickupgroup
.

Разберем теперь переадресацию звонка на какой-то внешний номер, например, мобильный телефон. Многие телефоны имеют встроенный функционал по перенаправлению звонка. Читаете инструкцию к телефону, смотрите, можно ли на нем установить переадресацию и как, и делаете. Работает это только если ваш телефон подключен к АТС. Он принимает звонок и сам его переадресовывает на указанный номер. Это самый простой и быстрый вариант автоматической переадресации звонка на внешний номер.

Рассмотрим другой случай переадресации на мобильный телефон. Допустим, у нас есть номер 115, который вообще отсутствует в офисе, у него нет стационарного телефона. Нам нужно, чтобы при звонке на этот номер, вызов переадресовывался на внешний номер, а конкретно на мобильный сотрудника. Для этого в dialplan нужно добавить следующую строку:

 exten => 115,n,Dial(SIP/89151234567@397945) 
 exten => _XXX,n,Dial(SIP/${EXTEN},15,Tt) 
 exten => _XXX,n,Dial(SIP/${EXTEN},15,Tt) 

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

Установка и настройка Freepbx

Скачиваем последнюю версию Freepbx с сайта разработчика.

 # cd ~ && wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-15.0-latest.tgz 
 # tar xvfz freepbx-*.tgz 

Переходим в каталог freepbx и запускаем скрипт проверки запуска asterisk.

 # cd freepbx && ./start_asterisk start 

Проверка запуска asterisk

Если не получили ошибок, то запускаем установку непосредственно FreePBX.

 # ./install -n 

Установка FreePBX

Если получили ошибку php:

 PHP Fatal error: Uncaught Error: Call to a member function connected() on null in /root/freepbx/amp_conf/htdocs/admin/libraries/BMO/Framework.class.php:180 

PHP Fatal error: Uncaught Error: Call to a member function connected()

Запустите установку еще раз

 # ./install -n 

Она должна пройти без ошибок, но freepbx не будет работать корректно, так как не сможет подключиться к asterisk. После повторной установки надо открыть конфиг /etc/asterisk/manager.conf
и в конце строки

 #include manager_additional.conf
#include manager_custom.conf 
 ;include manager_additional.conf
;include manager_custom.conf 

И убедиться, что указан параметр secret с паролем amp111. Если это не так, отредактируйте строку.

 secret = amp111 

Если все прошло без ошибок, то можно проверять работу Freepbx. Но перед этим отключим Firewall, если он у вас работает.

 # systemctl stop firewalld && systemctl disable firewalld 

Я не хочу в этой статье касаться его настройки. Подробно вопрос настройки firewall
 я рассмотрел отдельно. Там можно узнать все нюансы. Здесь же я прото скажу, что для начала нам нужно открыть 80-й порт, чтобы мы смогли работать с веб интерфейсом:

 iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 

Для полноценной работы астериск, нужно открыть следующие порты:

 iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 5061 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5060 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5061 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 4569 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5038 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 5038 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT 

Теперь можно запустить httpd.

 # systemctl start httpd 

Добавляем его в автозагрузку:

 # systemctl enable httpd 

На этом установка закончена Freepbx. Можно зайти браузером на страницу с ip адресом сервера. У меня это http://85.143.175.176 Открывается начальная страница freepbx, где нам предлагается создать нового пользователя:

Настройка FreePBX

Создаем пользователя и заходим в web интерфейс управления астериском:

Freepbx Dashboard

Вот и все, дальше можно заниматься настройкой. Раньше следующим разделом шла информация по автозагрузке freepbx, но в данный момент эта информация неактуально. Отдельно автоазгрузку для freepbx настраивать не надо. Она по дефолту автоматически запускается при старте системы.

1
Conferencing

Each extension you create will have its own conference. For example extension 200
has conference 8200. Just dial 8200 to get into your conference. If you dial
from 8200 you are the moderator.

Once you have started a conference you can manage it from the WebMeetme page. Просто введите расширение для конференции.

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


5.1.1
Внешний доступ к конференциям

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

Сначала зайдите в Обслуживание
и выберите Редактировать конфиги
.
файл, который вы хотите отредактировать: extensions_custom.conf
добавьте эти строки в
внизу файла. Обновление
файл и перезагрузить
конфиги.

 [обычай встретиться со мной]
include => ext-meetme
exten => s,1,BackGround(введите-конф-номер-вызова)
exten => h,1,Отбой() 

Затем перейдите в настройку
и Создать цифрового секретаря
если вы
еще не сделали этого. Запишите основное сообщение для администратора. Что-нибудь
Например, «нажмите #, чтобы войти в каталог компании, или нажмите 1, чтобы войти в конференцию».
продолжить и выбрать 1 для количества опций меню.

Далее вам нужно будет выбрать Действие
для этого пункта меню. Щелкните
Пользовательское приложение

и введите custom-meetme,s,1
затем нажмите «Продолжить».

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

Оцените статью
Хостинги