Пошаговая инструкция по настройке Asterisk IP-АТС

Настройка Asterisk АТС: пошаговая инструкция

IP-АТС Asterisk умеет все то же, что и традиционная АТС, плюс поддерживает актуальные для бизнеса VoIP-протоколы: голосовую почту, конференц-связь, центр обработки звонков, интерактивное меню, хранение записей. Рассказываем, как настроить с нуля базовый функционал «Астериск» АТС и получить рабочий сервер компьютерной телефонии.

Для примера настройки Asterisk возьмем офис с такими характеристиками:

  • 3 отдела, в которых работают 25 сотрудников;
  • используются трехзначные телефонные номера;
  • услуги предоставляет один SIP-провайдер.

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

В разных операционных системах (Cent Os, Ubunty и др.) отличаются команды и необходимые зависимости.

Файлы для первоначальной настройки

Настройка Asterisk – это, по сути, редактирование конфигурационных файлов в директории /etc/asterisk/. К таким файлам относят:

  • pjsip.conf – настройка мультимедийной библиотеки PJSIP;
  • extensions.conf – настройка диалплана: вызовы, переадресация, мелодии на удержании, автосекретарь и прочее;
  • asterisk.conf – настройка путей к используемым папкам Asterisk;
  • cdr.conf – основные настройки отчета о звонках Call Detail Record;
  • rtp.conf – настройки протокола RTP;
  • features.conf – параметры перехвата и парковки вызова, максимальное время набора и переадресации, DTMF-коды абонентских функций;
  • modules.conf – данные о модулях загрузки при старте Asterisk;
  • musiconhold.conf – конфигурации музыки на удержании;
  • iax.conf – соединения по протоколу IAX для объединения между собой двух и более АТС;
  • voicemail.conf – параметры голосовой почты;
  • logger.conf – параметры журналирования работы Asterisk.

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

Сборка и установка необходимых зависимостей и пакетов.

Вначале нужно установить дополнительные пакеты, которые необходимы для установки и работы Asterisk. Без части из этих пакетов Asterisk вообще откажется устанавливаться (к примеру, если отсутствует gcc). Без некоторых пакетов Asterisk установится и даже будет работать, однако часть функционала окажется недоступна.

Например, пакет bison необходим для обработки выражений в файле extensions.conf. Еще пример: libnewt необходим для работы интерфейса управления astman. Для сервера Asterisk он не требуется, но без этого пакета у вас не будет приложения astman, которое является отдельной программой.

Приводим пример установки Asterisk 13 в системе Cent OS 6.9:

yum -y install gcc gcc-c++ make ncurses-devel libxml2-devel sqlite-devel bison kernel-headers kernel-devel openssl openssl-devel newt newt-devel flex curl sox binutils

Для 12-13 версии Asterisk требуется установка пакетов uuid и janson. Для установки библиотеки uuid в RHEL / Centos выполните команду:

yum -y install libuuid-devel

. Для установки библиотеки jansson в RHEL / Centos выполните команду:

yum -y install jansson-devel (предварительно требуется установка репозитория epel): yum install epel-release

После обновляем систему до последней версии командой yum update –y и перегружаем ее: reboot

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

Настройка Asterisk выполняется в чистом виде, без дополнительных плат расширения и модемов. Так вы получите максимально эффективное и рабочее решение – программную АТС, которую можно легко переносить с одного сервера на другой. Для этого необходимо установить Asterisk с нуля, инсталлировать pjproject с jansson, обновить систему и отключить SELinux.

Для начала отключим Selinux. Для этого заходим /etc/selinux/config и ставим: SELINUX=DISABLED.

Также выключаем FireWall (iptables):

  1. Проверка статуса: service iptables status;
  2. Отключение: service iptables stop
  3. Отключение из автозагрузки: chkconfig iptables off
  4. Перегружаем систему: reboot

Скачайте и инсталлируйте pjproject:

d /usr/src

git clone git://github.com/asterisk/pjproject pjproject

cd pjproject/

./configure –libdir=/usr/lib64 –prefix=/usr –enable-shared –disable-sound –disable-resample

make dep

make

make install

ldconfig

ldconfig -p | grep pj

Для конвертации mp3-файлов необходим пакет Lame. Установим его из репозитория:

rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

yum repolist — проверка установленных репозиториев

Далее устанавливаем сам пакет: yum install lame

Скачиваем и устанавливаем библиотеку Libpri:

cd /usr/src/

wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz

tar xvfz libpri-1.4-*.tar.gz

cd /usr/src/libpri-1.4.*

make

make install

Если команды wget – не существует, то устанавливаем ее командой yum –y install wget

Далее скачиваем и устанавливаем сам asterisk 13:

cd /usr/src/

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz

tar xvfz asterisk-13-current.tar.gz

cd asterisk-13.*

contrib/scripts/get_mp3_source.sh

./configure –libdir=/usr/lib64

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

Настройка Asterisk АТС - изображение 1

make menuselect — выбираются все необходимые параметры, но в принципе можно оставить по умолчанию, главное чтобы были включены необходимые драйверы каналов

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

Настройка Asterisk АТС - изображение 2

Настройка Asterisk АТС - изображение 3

Настройка Asterisk АТС - изображение 4

Установите озвучку для core и extra (для второй она доступна на русском языке). Рекомендуем кодеки g729, alaw, ulaw, ,gsm. Далее уже на Ваш вкус какие кодеки необходимы.:

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

Продолжайте инсталляцию:

make

make install

make config

make samples

ldconfig

При успешной установки Asterisk видно в строчках лога эмблему Asterisk (появляется после этапа configure).

Добавьте Asterisk в автозапуск и приступайте к работе:

chkconfig asterisk on

service asterisk start

Проверьте корректность запуска через консоль:

asterisk -r

Перегрузите компьютер чтобы проверить автоматический запуск Asterisk. При вводе asterisk –r мы должны попасть в консоль, как на скрине выше.

Подключение абонентов

Протестируйте работу ATC Asterisk с помощью программного сервиса звонков. Сделайте базовые настройки в файле конфигурации sip.conf (где лежит – /etc/asterisk/sip.conf). По умолчанию в нем много полезных комментариев, но они загромождают код. Рекомендуем сделать копию файла конфигурации и сохранить ее отдельно, а оригинальную очистить от лишнего текста. Пример типовой конфигурации Asterisk:

документация https://asterisk-pbx.ru/wiki/asterisk/cf/chan_sip

[general]

context = default

realm = Test Aster

transport=udp

useragrent= Test Asterisk 13

nat=yes

bindaddr=0.0.0.0

bindport=5060

srvlookup=yes

disallow=all

allow=ulaw

allow=alaw

language=ru

trustrpid = yes

sendrpid = yes

allowexternalinvites=no

allowguest=no

alwaysauthreject=yes

defaultexpiry=150

limitonpeers=yes

maxexpiry=3600

minexpiry=60

registerattempts=0

registertimeout=30

Настройка peer - https://www.voip-info.org/wiki/view/Asterisk+config+sip.conf

[101]

context=local

dtmfmode=rfc2833

host=dynamic

type=friend

username=101

qualify=yes

secret=101a

disallow=all

allow=ulaw

allow=alaw

insecure=invite,port

nat=yes

[102]

context=local

dtmfmode=rfc2833

host=dynamic

type=friend

username=102

qualify=yes

secret=102a

disallow=all

allow=ulaw

allow=alaw

insecure=invite,port

nat=yes

Для применения изменений Sip перегружаем SIP в консоли астера (asterisk -r) командой sip reload

Добавление плана звонков

План звонков при настройке Asterisk потребуется для совершения вызовов. Найдите файл конфигурации extensions.conf, сделайте его резервную копию, а оригинальную версию очистите от комментариев и запишите в нее следующее:

extension - http://asterisk.ru/knowledgebase/Asterisk+config+extensions.conf

[local]

;для исход. внутренних номеров между собой

exten => _XXX,1,Noop(Test ${CALLERID(num)} Hat)

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

Так вы добавите план звонков на трехзначные номера. В нашем случае это номера 101 и 102 (в sip.conf)

Перезагрузите план набора (диалплан):

dialplan reload

Не страшно, если на экране появятся сообщения об ошибках – вы еще не завершили настройку и исправите их на следующих шагах.

Проверьте список пользователей командой:

sip show peers

Список пользователей и их пароли

Пользователи, пароли и контекст

Установите любую программную «звонилку» или воспользуйтесь реальным телефоном. В первом варианте вам понадобится настроить софт для работы с АТС. В нашем примере используем Zoiper 5. Пример настроек указан в нашей вики http://wiki.new-tel.net/doku.php?id=Zoiper-PC:

Рекомендованные настройки для программной «звонилки»

Настройки софтовой «звонилки» для проверки Asterisk

Все дальнейшие настройки звонилки и принцип работы указан в ссылке выше.

Теперь проверьте подключенные пиры с помощью команды:

Sip show peers

Если все верно, вы увидите такую строку:, в котором видно нашу SIP-линию и статус подключения SIP-линии:

Sip-линия IP-address A 5060 OK Cached RT

После настройки Asterisk протестируйте звонки на двух абонентах. Для этого подключите еще один физический или программный телефон. Позвоните от одного абонента другому (набрав с 101 на 102 и наоборот). Проверьте содержимое файла /var/log/asterisk/full. – там появится запись о последнем вызове. Также там фиксируется все сообщения и ошибки, возникаемые при работе Asterisk.

Записи обо всех последующих вызовах тоже попадут в этот файл. Позже их можно будет перебросить в базу данных.

Настройка транка

Зарегистрируйтесь у SIP-провайдера и получите настройки транков. Необходимую информацию – логин, пароль, адрес сервера, настройки подключения и номера для тестирования – можно найти в личном.

В конец файла sip.conf добавьте нового пира, как это рекомендует ваш провайдер:

[test_trunk]

context=trunk_cid

dtmfmode=rfc2833

host=ip-адрес sip-провайдера

type=friend

username=test_trunk

qualify=yes

secret=password ;пароль для подключения транка

disallow=all

allow=ulaw

allow=alaw

allow=g729

insecure=invite,port

nat=yes

Пусть Asterisk заново перечитает файл:

Sip reload

Если настройка программы в IP АТС Asterisk прошла успешно, в консоли появится такая строка:

Sip-линия IP-address A 5060 Unmonitored Cached RT

Редактирование dialplan

Чтобы настроить входящие и исходящие звонки в IP-телефонии Asterisk, отредактируйте файл extensions.conf, добавив в конце следующий код (с контекста local):

;для исход по транку (пример указан с префиксом 123#).

exten => _123#8XXXXXXXXXX,1,Set(CALLERID(all)=78125000963)

exten => _123#8XXXXXXXXXX,n,Noop( (CALLERID(all) + Boris)

exten => _123#8XXXXXXXXXX,n,Dial(SIP/7${EXTEN:5}@Ip-address)

избавление от префикса 123# и заменой цифры 8 на 7. Далее отправляется звонок на хост IP провайдера (указан в sip.conf)

[trunk_cid]

для вход. по транку на 101.

exten => _XXXXXXXXXX,1,Dial(SIP/101,30,r)

Перезагрузите Asterisk командой core restart now и снова сделайте тестовый звонок. Информация о нем добавится в файле full

Пример лога консоли Asterisk:

Настройка Asterisk АТС - изображение 5

На этом базовая настройка IP-телефонии «Астериск» завершена. Чтобы расширить функционал после того, как Asterisk установлен, настройте приветствие и голосовое меню (ivr), активируйте голосовую почту, настройте очередь (queue) входящих звонков, сбор и просмотр статистики (cdr viewer), запись (record) разговоров, поставьте музыку на ожидание (on hold), настройте конференции, перевод, перехват и переадресацию звонков.

Ошибки в настройке Asterisk

Рассмотрим распространенные ошибки при настройке виртуальной АТС «Астерикс» и дадим инструкции, которые помогут их .

  • Asterisk не регистрируется на сервере и возвращает ответ Forbidden в режиме отладки.

    Причина: некорректно введен пароль, указан SIP ID или домен. Проверьте содержимое файла sip.conf.

  • Сбрасываются входящие звонки.

    Причины: внутренний пользователь не зарегистрирован. Проверьте регистрацию командой sip show registry.

  • Не проходят исходящие вызовы.

    Причина: некорректно задан шаблон номера (пропущен символ «_» перед шаблоном).

  • Звук проходит только в одну сторону.

    Причина: вы используете NAT. Включите debug и используйте tcpdump – так вы увидите, куда уходят запросы и аудиотрафик.

Расширенные настройки Asterisk

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

Настройка голосового меню (IVR)

Другое его название – голосовое дерево. Настройка Asterisk IVR служит для того, чтобы звонящий мог подключиться к конкретному сотруднику организации или переключиться на определенную линию техподдержки. Также IVR позволяет получать полезную информацию без соединения с оператором: звонящий сможет выбрать пункт голосового меню и прослушать его содержимое.

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

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

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

а) в файл конфигурации добавьте код:

[outcaling]
...
exten => 222,1,Answer()
same => n,Background(basic-pbx-ivr-main)
exten => _XXX,1,Dial(SIP/${EXTEN},,m)

б) перезапустите настройки:

asterisk -x "dialplan reload"

в) настройте возможность выбора отдела:

exten => 333,1,Answer()
exten => 333,2,Background(basic-pbx-ivr-main)
exten => 333,3,WaitExten(5)
exten => 1,1,Goto(managers,s,1)
exten => 2,1,Goto(support,s,1)

[managers]
exten => s,1,Ringing
same => n,Wait(1)
same => n,Background(/var/lib/asterisk/sounds/wav/managers)
same => n,Waitexten(5)
exten => 1,1,Dial(SIP/201)
exten => 2,1,Dial(SIP/202)
exten => 0,1,Goto(outcaling,333,1)

[support]
exten => s,1,Ringing
same => n,Wait(1)
same => n,Background(/var/lib/asterisk/sounds/wav/support)
same => n,Waitexten(5)
exten => 1,1,Dial(SIP/101)
exten => 2,1,Dial(SIP/102)
exten => 0,1,Goto(outcaling,333,1)

Снова перезапустите настройки:

asterisk -x "dialplan reload"

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

exten => 333,1,Answer()
exten => 333,2,Background(basic-pbx-ivr-main)
exten => 333,3,WaitExten(5)
exten => 1,1,Goto(managers,s,1)
exten => 2,1,Goto(support,s,1)
exten => t,1,Dial(SIP/101)
exten => i,1,Background(invalid)
same => n,Goto(outcaling,333,3)
...

При наборе внутреннего номера могут возникнуть проблемы. Если это случилось, проверьте режим DTMF – это аналоговый сигнал для набора телефонного номера. Чтобы настроить sip-пир на определенный способ передачи DTMF, добавьте в файл конфигурации такую строку:

dtmfmode=rfc2833

Голосовая почта

Если звонящий долго находится на линии в ожидании ответа оператора, ему можно предложить оставить голосовое сообщение. Для реализации этого функционала откройте файл voicemail.conf и добавьте в него такой код:

130 => 9999,Number 130,ms@mail.ru

100 => 9999,Number 100,ms@mail.ru,

где 130 – внутренний номер оператора, 9999 – пароль доступа к ящику голосовой почты, ms@mail.ru – электронный ящик, на который будет отправлено голосовое сообщение.

Предварительно настройте локальный почтовый сервер или используйте внешний.

Перезапустите модуль голосовой почты и протестируйте его работу:

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:

[call-out]

Номер для записи звуков, окончание записи #

exten => _35X, 1, NoOp()

exten => _35X, n, Wait(2)

exten => _35X, n, Playback(beep)

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

exten => _35X, n, Wait(1)

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

exten => _35X, n, Wait(2)

exten => _35X, n, Hangup()

Управление голосовой почтой

exten => 500,1,VoiceMailMain()

Звонок на внутренний номер

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

Звонок на внешний номер

exten => _XXX.,1,Dial(SIP/${EXTEN}@397945)

По умолчанию время ожидания ответа до включения голосовой почты составляет 15 секунд.

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

Настройка Asterisk с нуля редко предполагает организацию очереди, но мы рассмотрим, как ее реализовать, если ваша компания в этом функционале нуждается. Очередь позволяет управлять потоком звонков и перераспределять их по заданным правилам – например, направлять первому освободившемуся оператору. Для настройки очереди откройте файл queues.conf. Предположим, что у нас два оператора с внутренними номерами 101 и 102. Тогда в конец файла добавьте такой код:

[secretary]

strategy = ringall

member => SIP/100

member => SIP/130

Узнать, какие значения может принимать параметр strategy, который отвечает за принцип распределения вызовов, можно здесь: https://www.voip-info.org/asterisk-call-queues/.

Добавьте в файл extensions.conf подготовленный заранее контекст с голосовым меню, заменив в [ivr-main] строку

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

на строку с таким содержимым:

exten => t,1,Queue(secretary,t)

Перезагрузите конфигурацию Asterisk:

CLI> reload

Статистика звонков (cdr viewer)

Вы можете попробовать разобрать содержимое файла /var/log/asterisk/cdr-csv/Master.csv, где Asterisk по умолчанию сохраняет собранную статистику звонков, но проще воспользоваться другим инструментом. Предлагаем перенести сбор статистики в базу данных MySQL. Для этого запустите сервер mariadb и введите следующие команды:

# systemctl start mariadb

# systemctl enable mariadb.service

# /usr/bin/mysql_secure_installation

Создайте БД и пользователя:

# mysql -uroot -p

MariaDB [(none)]> create database asterisk;

MariaDB [(none)]> use asterisk;

MariaDB [asterisk]> CREATE TABLE `cdr` ( `id` int(9) 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(11) NOT NULL default '0', `billsec` int(11) NOT NULL default '0', `disposition` varchar(45) NOT NULL default '', `amaflags` int(11) NOT NULL default '0', `accountcode` varchar(20) NOT NULL default '', `uniqueid` varchar(32) 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-коннекторы:

# yum install -y mysql-connector-odbc.x86_64 unixODBC-devel.x86_64

Откройте /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

В инструкции «Астериска» предлагают после этого перезапустить его:

# service asterisk restart

Затем проведите тест, совершив пару звонков. После запустите и добавьте в автозагрузку такие строки:

# systemctl start httpd

# systemctl enable httpd

Запись разговоров (record)

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

mkdir /records
chmod 777 /records

Откройте файл extensions.conf и внесите туда такие изменения:

[default]
exten => _XXXX,1,Set(fname=${STRFTIME(${EPOCH},,%Y%m%d%H%M)}-${CALLERID(number)}-${EXTEN})
exten => _XXXX,2,MixMonitor(/records/${fname}.wav)
exten => _XXXX,3,Dial(SIP/${EXTEN},,)

Музыка на ожидании (hold on)

Эта настройка Asterisk позволит выбрать мелодию, которая будут звучать на линии во время ожидания звонка в очереди. По умолчанию мелодии воспроизводятся из директории /var/lib/asterisk/moh. Чтобы добавить свою мелодию в формате mp3, скопируйте ее на сервер любым удобным способом, а затем создайте директорию /var/lib/asterisk/mohmp3 и перекодируйте в ней музыку в «понятный» для системы формат wav:

# mkdir /var/lib/asterisk/mohmp3

# lame --decode /root/music.mp3 /var/lib/asterisk/mohmp3/music.wav

Откройте файл /etc/asterisk/musiconhold.conf и в конец добавьте новый класс музыки musiconhold.conf:

[mp3]

mode=files

directory=mohmp3

К описанию очереди добавьте еще один параметр:

[secretary]

music = mp3

strategy = ringall

member => SIP/100

member => SIP/130

Выполните перезапуск, как сказано в инструкции по настройке Asterisk:

# service asterisk restart

Конференции

Конференции позволяют организовать одновременный разговор между несколькими звонящими. Для их настройки откройте confbridge.conf и добавьте в конец файла:

[confer]

type=bridge

max_members=20

mixing_interval=10

internal_sample_rate=auto

record_conference=yes

В начало файла:

exten => 333,1,Answer()

exten => 333,n,ConfBridge(1,confer)

Теперь при наборе номера 333 звонящий попадет в комнату для конференций.

Поздравляем, установка и настройка Asterisk завершена!

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

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

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

В «Астериске» для перевода звонков используется режим Attended Transfer, который по умолчанию выключен. Чтобы использовать его для перенаправления звонков, в файле features.conf необходимо раскомментировать строку:

atxfer => *2

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

Перехват звонков в Asterisk работает по умолчанию, дополнительные настройки этой функции не требуются. Комбинация кнопок для перехвата задается в уже знакомом файле features.conf.

Например, чтобы реализовать переадресацию на мобильный номер 222, в dialplan следует добавить строку:

exten => 222,n,Dial(SIP/89151234567@397945)

Чтобы переадресация действовала только на внутренние номера офиса:

exten => 222,n,Dial(SIP/89151234567@397945)

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

А теперь вариант с переадресацией для звонков извне:

exten => 115,n,Dial(SIP/89151234567@397945)

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

Настройка Asterisk с помощью fail2ban

Если у «Астериска» внешний IP-адрес или на него организован переброс с внешних IP-адресов, его необходимо обезопасить от перебора учеток. Проще всего это сделать с помощью fail2ban – специального программного решения для предотвращения вторжений и атак, которые осуществляются методом перебора.

Для начала необходимо инсталлировать fail2ban:

# dnf install fail2ban

Запись событий будем вести в лог. Откроем файл /etc/asterisk/logger.conf и раскомментируем такую его строку:

security => security

Считываем параметры хранения логов:

# asterisk -x "logger reload"

После этого в директории /var/log/asterisk должен появиться файл с названием security, записи из которого будет анализировать инструмент fail2ban.

Открываем файл /etc/fail2ban/jail.conf и в секции [asterisk] меняем путь к файлу и дописываем еще одну важную строку:

logpath = /var/log/asterisk/security

enabled = true

Нужно, чтобы fail2ban запускался автоматически:

# systemctl start fail2ban

# systemctl enable fail2ban

Не забываем, что для корректной работы fail2ban требуется заранее сконфигурированный и запущенный iptables. Учитывайте, что при отключенном firewalld вначале нужно удалить /etc/fail2ban/jail.d/00-firewalld.conf, после чего перезапустить fail2ban, чтобы он заработал.

Настройка обратного звонка

Настройка Asterisk Callback очень удобна в использовании: клиент вводит свой номер телефона в специальную форму на сайте, а спустя какое-то время ему перезванивает специалист компании. Чтобы воспользоваться Asterisk Web Callback, потребуется веб-сервер с поддержкой PHP. Настройки выполняются в файле manager.conf.

[general]

enabled = yes

port = 5038

bindaddr = 0.0.0.0 ;или реальный IP вашего сервера Asterisk

[your_name]

secret=your_secret

deny=0.0.0.0/0.0.0.0

permit=0.0.0.0/0.0.0.0 ;или ip вашего веб-сервера

read = system,call,log,verbose,command,agent,user,config,originate

write = system,call,log,verbose,command,agent,user,config,originate

Теперь работаем со скриптом – определяем IP-адрес Asterisk:

$strHost = "Asterisk IP Address";

Назначаем пользовательское имя – то, которое ранее задали в файле /etc/asterisk/manager.conf):

$strUser = "your_name";

Пароль:

$strSecret = "your_secret";

Канал, куда будут направлены звонки:

$strChannel = "SIP/107";

В /etc/asterisk/extensions_custom.conf:

[from-script-n]

exten = s,1,Goto(from-internal,600,1)

Чтобы защититься от нежелательных звонков:

$strChannel = "SIP/107";

В /etc/asterisk/extensions_custom.conf:

/etc/asterisk/extensions_custom.conf

Теперь следует задать длину номера телефона, которую могут указать клиенты в веб-форме (в нашем случае это 11 символов):

if ($length == 11 && is_numeric($strExten))

<table width="300" border="1" bordercolor="#630000" cellpadding="3" cellspacing="0">

<tr><td>

<font size="2" face="arial,georgia" color="#630000">Введите Ваш номер 812XXXXXXX.</font>

<form action="<? echo $_SERVER['PHP_SELF'] ?>" method="post">

<input type="text" size="20" maxlength="11" name="txtphonenumber"><br>

<input type="submit" value="Позвонить!">

</form>

</td></tr>

</table>

Сам скрипт:

<?php

$strHost = "127.0.0.1";

$strUser = "test";

$strSecret = "test2";

$strChannel = "Local/s@from-script-n";

$strContext = "from-script";

$strWaitTime = "60000";

$strPriority = "1";

$strExten = $_POST['txtphonenumber'];

$strCallerId = "n <$strExten>";

$length = strlen($strExten);

if ($length == 11 && is_numeric($strExten))

{

$oSocket = fsockopen($strHost, 5038, $errnum, $errdesc) or die("Connection to host failed");

fputs($oSocket, "Action: login\r\n");

fputs($oSocket, "Events: off\r\n");

fputs($oSocket, "Username: $strUser\r\n");

fputs($oSocket, "Secret: $strSecret\r\n\r\n");

fputs($oSocket, "Action: originate\r\n");

fputs($oSocket, "Channel: $strChannel\r\n");

fputs($oSocket, "Timeout: $strWaitTime\r\n");

fputs($oSocket, "CallerId: $strCallerId\r\n");

fputs($oSocket, "Exten: $strExten\r\n");

fputs($oSocket, "Context: $strContext\r\n");

fputs($oSocket, "Priority: $strPriority\r\n\r\n");

fputs($oSocket, "Action: Logoff\r\n\r\n");

sleep (1);

fclose($oSocket,128);

?>

<p>

<table width="500" border="2" bordercolor="#850000" cellpadding="3" cellspacing="0">

<tr><td>

<font size="2" face="verdana color="#850000">Идет вызов. Дождитесь, когда зазвонит телефон!<br>Если звонок не поступил в течение 60 секунд, сделайте еще одну попытку.<br><a href="<?php echo $_SERVER['PHP_SELF'] ?>">Повторить</a>$

</td></tr>

</table>

</p>

<?php

}

else

{

?>

<p>

<table width="500" border="1" bordercolor="#850000" cellpadding="3" cellspacing="0">

<tr><td>

<font size="2" face="verdana" color="#850000">Введите номер телефона.</font>

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">

<input type="text" size="20" maxlength="12" name="txtphonenumber"><br>

<input type="submit" value="Позвонить!">

</form>

</td></tr>

</table>

</p>

<?php

}

?>

Настройка черного списка

Эта настройка Asterisk позволяет запретить нежелательные входящие звонки и оставить линию свободной для приоритетных звонков. Работает следующим образом: сверяет, не содержится ли входящий номер в черном списке внутренней базы данных Asterisk. Для проверки используется astdb, на выходе функция возвращает значение «0» (нет в базе данных) или «1» (есть в базе данных).

Для вызова функции используется команда:

BLACKLIST()

Допустим, 2000 – наш абонент, 8882888 – CallerID в черном списке. Тогда:

exten => _2000,1,GotoIf($[${BLACKLIST()}]?black,1)

same => n,Dial(PJSIP/2000,,tr)

exten => black,1,Playback(privacy-you-are-blacklisted)

same => n,Hangup()

Чтобы добавить новый номер в черный список, используем Asterisk CLI (Command Line Interface):

asterisk -rx "database put blacklist 8882888 1"

Допустим, нам нужно текущее содержимое черного списка. Как его получить:

asterisk -rx 'database show' | grep blacklist

/blacklist/8882888:1

Чтобы сделать то же самое, но с помощью sqlite cli, выполняем команду:

sqlite> select * from astdb where key like '%blacklist%';

/blacklist/8882888|1

Настройка умной предустановленной переадресации вызовов

За нее отвечает функция FollowMe, сама команда ссылается на профили <followmeid>, которые заданы в файле followme.conf. В общем случае синтаксис команды выглядит следующим образом:

FollowMe(followmeid[,options])

Пример содержимого файла followme.conf:

[4444]

music => default

context => default

number => 1965751234,5

number => 17182025678,20

number => 1234

number => 5678

[UserTest]

number => 09253&410,30,2 ; вызываются одновременно 09253 и 410 в течение 30 секунд.

number => 525,40,1 ; но сначала вызывается 525 в течение 40 секунд.

Чтобы настроить функцию предустановленной переадресации, убедитесь, что заранее загрузили app_followme.so.

*CLI> module load app_followme.so

Loaded app_followme.so

== Parsing '/etc/asterisk/followme.conf': Found followme.conf

== Registered application 'FollowMe'

Loaded app_followme.so => (Find-Me/Follow-Me Application)

Задайте глобальные параметры функции: укажите количество миллисекунд, в течение которых система будет ожидать приема вызова:

featuredigittimeout=>4000

enable_callee_prompt=>true

Подготовьте голосовое объявление для абонента: предложите или принять, или отказаться от переадресации:

takecall=>1

По умолчанию код значения кода DTMF равен двум:

declinecall=>2

Абонент будет слышать стандартное музыкальное сопровождение:

context=>default

Автообзвон

Для автоматического обзвона в настройке Asterisk используются call-файлы (Call Files). Список для автообзвона генерируется на основе номеров из заранее подготовленного текстового файла. После выполнения bash-скрипта готовый перечень звонков попадает в каталог /var/spool/asterisk/outgoing.

Пример автообзвона, при котором номера вызываются по порядку из списка и каждому абоненту проигрываются сообщения в зависимости от выбранного контекста:

[outboundmsg1]

exten => s,1,Wait(2)

exten => s,n,Playback(/var/lib/asterisk/sounds/custom/you_call_your_friends_are_collectors)

exten => s,n,Hangup

Так выглядит bash-скрипт:

#!/bin/sh

while read number; do

cat <<EOF > /var/spool/asterisk/$number

Channel: SIP/voip_trunk/$number

Callerid: $number

MaxRetries: 200

RetryTime: 20

WaitTime: 30

Context: outboundmsg1

Extension: s

Priority: 1

EOF

chown asterisk:asterisk /var/spool/asterisk/$number

mv /var/spool/asterisk/$number /var/spool/asterisk/outgoing

echo "$number"

number=`expr $number + 1`

while [ "$?" -eq "0" ]

do

count_files ()

{

count_f=`ls /var/spool/asterisk/outgoing | wc -l`

if [ "$count_f" -eq "30" ]; then

sleep 10

return 0

else

return 1

fi

}

count_files

done

done < /var/spool/asterisk/list.txt

exit 0

Список для автоматического обзвона хранится в файле с названием /var/spool/asterisk/list.txt. Каждый следующий номер написан с новой строки, например:

3352

3353

3354

Отправка факсов на e-mail

В «Астериск» реализована функция отправки факсов на электронную почту (например, общую или отдельно назначенную). Чтобы реализовать прием факсов в FreePBX 12, в Asterisk должна быть реализована поддержка SpanDSP. Для начала убедимся, что у нас предварительно загружены два важных модуля – res_fax.so и res_fax_spandsp.so.

localhost*CLI> module show like fax

Module Description Use Count Status

res_fax.so Generic FAX Applications 1 Running

res_fax_spandsp.so Spandsp G.711 and T.38 FAX Technologies 1 Running

2 modules loaded

Переходим в настройки системного факса:

Settings > Fax Configuration

Создаем виртуальный факс командой Add Extension, а затем в настройках включаем поддержку факсов (для этого достаточно поставить галочку напротив Fax Email).

Переходим в модуль FolowMe. В блоке Destination if no answer: указываем Fax Recipient и уже там – номер нашего факса FAX (например, 2566).

Аналогичным образом можно пользоваться созданным факсом для приема входящих факсов в следующем модуле:

Connectivity > Inbound Routes

Активировать автоматическое распознавание факс-сигнала можно в разделе Fax Detected.

Все входящие факсы по умолчанию сохраняются в каталоге /var/spool/asterisk/fax.

Преимущества Asterisk

У системы Asterisk есть ряд важных преимуществ:

  • Не нужно платить за лицензии, минуты и количество пользователей.
  • Легко масштабируется под любое количество сотрудников.
  • После настройки Asterisk вы получаете неограниченный набор функций IP-телефонии: запись и хранение звонков, голосовое меню, интеграцию с CRM и мессенджерами, автообзвон, обратный звонок и прочее.
Бесплатная консультация по настройке

Нам доверяют:

burgking лого
amocrm лого
b2bfamily лого
beeline лого
rusloto лого
bitrix24 лого
Синергия лого
elama лого
labirint лого
envybox лого
getstar лого
modulbank лого
moidokumenti лого
moysklad лого
mts лого
mtt лого
rt лого
selectel лого
simplit лого
speechanalytics лого
tinkoff лого
ttk лого
u-on лого
westcall лого
wirecrm лого
yandex лого
yclients лого
zebratelecom лого
hh лого
coffee like лого
r-ulybka лого
ivi лого
gpnbonus лого
stoletov лого
banki лого
KB лого
CIAN лого
UDS лого
WinLab лого

Остались вопросы? Напишите нам!

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

Спасибо за обращение! Наш менеджер свяжется с Вами в ближайшее время.
Перевели бизнес на удаленку?
Подключите виртуальную АТС!
  • Управляйте на расстоянии
  • Задавайте переадресацию
  • Держите связь
    со всеми сотрудниками
Подключить
Подключи номер
телефона
и получи современный IP телефон в подарок
Подключить
Парные номера 8800 и 495
Ограниченная серия парных номеров для бизнеса:
495 777 70 72 495 777 67 33 495 777 57 11
8 800 777 70 72 8 800 777 67 33 8 800 777 57 11
Подобрать
Протестировать
введите последние 4 цифры номера входящего звонка
+7 (999) 999
00:60
Отправляя данную форму, вы соглашаетесь с условиями обработки персональных данных
Отлично!
Вы прошли процесс подтверждения номера телефона и понимаете как это работает. Теперь Вы можете применить данный метод у себя. Пройдите регистрацию!
Неверный код!
попробуйте еще раз