Asterisk

Введение

Устанавливать Asterisk 16 на Centos 8 будем из исходников. Это не для того, чтобы показать олдскул и крутость самостоятельной сборки софта. Это вынужденная мера. Всегда, когда есть возможность установить из пакетов, лучше ей воспользоваться. Либо можно собрать свой пакет и ставить уже из него. Сборка софта из исходников крайняя мера, когда готового пакета просто не существует.

Я устанавливаю версию 16, хотя есть уже 17-я. Именно 16-я версия имеет статус LTS, то есть длительная поддержка. Если вам не нужны новые фичи промежуточных версий, рекомендую всегда ставить lts версии.

Для установки Asterisk 16 на свежую Centos 8 я не нашел репозитория, где бы были собраны все пакеты с зависимостями для быстрой и безпроблемной установки. Так что будем по старинке собирать все руками. Ничего сложного тут нет. Все примерно так же, как и в прошлых версиях. Каких-то новых сложностей или нюансов я не заметил.

Если у вас еще нет готового сервера, то рекомендую мои статьи по установке и настройке Centos.

Настройка Web сервера

Для работы панели FreePBX нужен web сервер с php. Я буду использовать версию php 7.1. Более подробно про настройку web срвера на Centos вы можете прочитать отдельно. Сейчас же коротко пройдем по шагам весь процесс.

Подключаем репозиторий epel, если еще не сделали это ранее.

# yum install epel-release

Подключаем remi репозиторий для centos 7.

# rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Ставим пакет yum-utils.

# yum install yum-utils

Активируем репу remi-php71, для этого выполняем команду.

# yum-config-manager --enable remi-php71

Устанавливаем необходимые пакеты для работы сервера voip.

# yum install wget php php-pear php-cgi php-common php-curl php-mbstring php-gd php-mysql php-gettext php-bcmath php-zip php-xml php-imap php-json php-process php-snmp

Далее установим httpd. Он, по идее, должен установиться в качестве зависимости на предыдущем шаге, но на всякий случай проверьте.

# yum install httpd

Теперь нам нужно изменить некоторые параметры httpd — запустить его от пользователя asterisk и включить опцию AllowOverride. Это можно сделать руками в файле /etc/httpd/conf/httpd.conf, либо автоматически с помощью sed.

# sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf
# sed -i 's/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf

Мы просто выставили следующие параметры:

  • User asterisk
  • Group asterisk
  • AllowOverride All

Httpd запускать пока не надо, так как пользователя asterisk мы еще не создали. Сделаем это после установки asterisk.

Изменим параметр php, который отвечает за максимальный размер загружаемого файла. Дефолтное значение слишком низкое для freepbx. Для этого в /etc/php.ini устанавливаем параметр.

upload_max_filesize = 120M

Сделать это можно либо руками, либо автоматически с помощью sed.

# sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini

С веб сервером закончили. Продолжаем подготовку к установке FreePBX на CentOS.

Кастомная запись разговоров с отображением в Asterisk CDR FreePBX 12

Предположим у вас имеется АТС соединенная транком Е1 с Asterisk, абоненты которой совершают звонки через Asterisk и далее наружу через канал E1 провайдера подключенный к Asterisk.

Исходящие вызовы должны записываться, а ссылки на записанные файлы отображаться во встроенном интерфейсе CDR FreePBX привязанные к внутреннему номеру абонента удаленной АТС. Вызовы же наружу должны закрываться внешним номером CID.

include => record


exten => _X.,1,Set(CALLERID(all)="${CALLERID(num)}" <8123216111>)
exten => _X.,n,Set(CDR(userfield)=avaya/${CALLERID(name)})
exten => _X.,n,Gosub(sub-record-check-custom1,s,1(out,${EXTEN},))
exten => _X.,n,Dial(DAHDI/g0/${EXTEN}


exten => s,1,Set(REC_POLICY_MODE_SAVE=${REC_POLICY_MODE})
exten => s,n,GotoIf($?check)
exten => s,n,ResetCDR()
exten => s,n,GotoIf($?check)
exten => s,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
exten => s,n,MixMonitor(${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MIXMON_FORMAT},a,${MIXMON_POST})
exten => s,n(check),Set(__MON_FMT=${IF($?WAV:${MIXMON_FORMAT})})
exten => s,n,GotoIf($?next)
exten => s,n,Set(CDR(recordingfile)=${CALLFILENAME}.${MON_FMT})
exten => s,n,Return()
exten => s,n(next),ExecIf($?Return())
exten => s,n,ExecIf($?Set(__REC_POLICY_MODE=${ARG3}))
exten => s,n,GotoIf($?${ARG1},1)
exten => s,n,Set(__REC_STATUS=INITIALIZED)
exten => s,n,Set(NOW=${EPOCH})
exten => s,n,Set(__DAY=${STRFTIME(${NOW},,%d)})
exten => s,n,Set(__MONTH=${STRFTIME(${NOW},,%m)})
exten => s,n,Set(__YEAR=${STRFTIME(${NOW},,%Y)})
exten => s,n,Set(__TIMESTR=${YEAR}${MONTH}${DAY}-${STRFTIME(${NOW},,%H%M%S)})
;exten => s,n,Set(__FROMEXTEN=${IF($?${AMPUSER}:${IF($?${REALCALLERIDNUM}:unknown)})})
exten => s,n,Set(__FROMEXTEN=${CALLERID(name)})
exten => s,n,Set(__CALLFILENAME=${ARG1}-${ARG2}-${FROMEXTEN}-${TIMESTR}-${UNIQUEID})
exten => s,n,Goto(${ARG1},1)



;exten => out,1,ExecIf($?Set(__REC_POLICY_MODE=${DB(AMPUSER/${FROMEXTEN}/recording/out/external)}))
;статус записи вкл
exten => out,1,ExecIf($?Set(__REC_POLICY_MODE=always))
exten => out,n,GosubIf($?record,1(exten,${ARG2},${FROMEXTEN}))
exten => out,n,Return()


exten => record,1,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
exten => record,n,MixMonitor(${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MIXMON_FORMAT},,${MIXMON_POST})
exten => record,n,Set(__REC_STATUS=RECORDING)
exten => record,n,Set(CDR(recordingfile)=${CALLFILENAME}.${MON_FMT})
exten => record,n,Return()

Установка

Установку можно выполнить с помощью команды apt install asterisk. Но в данной инструкции мы разберем установку путем сборки из исходников. 

Рекомендуется установить Asterisk с DAHDI (драйверы плат интерфейсов телефонии) и LibPRI (библиотека для работы с потоковыми TDM-интерфейсами). Сначала необходимо собрать DAHDI, затем LibPRI и только потом — Asterisk.

Устанавливаем пакеты, необходимые для корректной сборки DAHDI и LibPRI:

apt install make gcc

Сборка DAHDI

Загружаем исходник:

wget https://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz

Распаковываем его и переходим в распакованный каталог:

tar -xvf dahdi-linux-complete-current.tar.gz

cd dahdi-linux-complete-*

Собираем пакет и устанавливаем его:

make

make install

make config

Выходим из каталога dahdi:

cd ..

Сборка LibPRI

Загружаем исходник:

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

Распаковываем:

tar -xvf libpri-current.tar.gz

cd libpri-*

Собираем и устанавливаем:

make

make install

Выходим из каталога libpri:

cd ..

Установка Asterisk

wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-15-current.tar.gz

* в моем случае, последняя версия была 15.

Распаковываем архив и переходим в папку, появившуюся после распаковки:

tar -xvf asterisk-*.tar.gz

cd asterisk-*

Устанавливаем зависимости:

./contrib/scripts/install_prereq install

./contrib/scripts/install_prereq install-unpackaged

Удаляем мусор:

make distclean

Устанавливаем библиотеки для работы с mp3:

./contrib/scripts/get_mp3_source.sh

Конфигурируем исходник:

./configure —prefix=/usr —sysconfdir=/etc —localstatedir=/var —libdir=/usr/lib64 —with-dahdi —with-pri —with-iconv —with-libcurl —with-speex

* где:

  • —with-dahdi — с драйверами DAHDI.
  • —with-pri — с библиотекой PRI.
  • —with-iconv — с возможностью конвертации кодировок (будет не лишним для поддержки русских символов).
  • —with-libcurl — возможность извлекать данные посредством CURL-запросов (по http).
  • —with-speex — дополнительный VBR-кодек (используется на многих софт-фонах).

** список всех доступных опций можно посмотреть командой ./configure -h.

Мы должны увидеть логотип астериска:

               .$$$$$$$$$$$$$$$=..
            .$7$7..          .7$$7:.
          .$$:.                 ,$7.7
        .$7.     7$$$$           .$$77
     ..$$.       $$$$$            .$$$7
    ..7$   .?.   $$$$$   .?.       7$$$.
   $.$.   .$$$7. $$$$7 .7$$$.      .$$$.
 .777.   .$$$$$$77$$$77$$$$$7.      $$$,
 $$$~      .7$$$$$$$$$$$$$7.       .$$$.
.$$7          .7$$$$$$$7:          ?$$$.
$$$          ?7$$$$$$$$$$I        .$$$7
$$$       .7$$$$$$$$$$$$$$$$      :$$$.
$$$       $$$$$$7$$$$$$$$$$$$    .$$$.
$$$        $$$   7$$$7  .$$$    .$$$.
$$$$             $$$$7         .$$$.
7$$$7            7$$$$        7$$$
 $$$$$                        $$$
  $$$$7.                       $$  (TM)
   $$$$$$$.           .7$$$$$$  $$
     $$$$$$$$$$$$7$$$$$$$$$.$$$$$$
       $$$$$$$$$$$$$$$$.
 

Вызываем оконное меню настройки модулей:

make menuselect

Для большинства случаев, настройки можно оставить по умолчанию. В противном случае рекомендуется изучить опции и выбрать необходимые. После нажимаем Save & Exit.

Затем собираем исходник:

make

И выполняем установку:

make install

Установим примеры конфигурационных файлов и документацию:

make samples

make progdocs

Устанавливаем скрипт инициализации (для автозапуска):

make config

Устанавливаем скрипты для отсекания логов:

make install-logrotate

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

vi /etc/ld.so.conf.d/asterisk.conf

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

/usr/lib64

* это путь до каталога с библиотеками, с которым мы собирали asterisk (опция —libdir).

Применяем настройку:

ldconfig

Установка 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.

# 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

Запускаем 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";\"\"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, ошибок быть не должно.

Установка Mariadb

В своей работе FreePBX использует базу данных Mysql. В качестве mysql сервера будем использовать mariadb. Подключаем репозиторий со свежей версией MariaDB. Для этого создаем файл /etc/yum.repos.d/MariaDB.repo следующего содержания.

# MariaDB 10.3 CentOS repository list - created 2019-04-01 09:11 UTC
# http://downloads.mariadb.org/mariadb/repositories/

name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Устанавливаем MariaDB.

# yum install MariaDB-server MariaDB-client MariaDB-shared

Запускаем mariadb и добавляем в автозагрузку.

# systemctl start mariadb
# systemctl enable mariadb

Установка Asterisk

Установка астериска выполняется путем сборки исходников. Сама процедура проходит в 3 этапа:

  1. Установка DAHDI (драйверов плат интерфейсов);
  2. Установка LibPRI (библиотека для работы с потоковыми TDM-интерфейсами);
  3. Собственно, сборка и установка Asterisk.

1. Сборка DAHDI

Загружаем исходник, распаковываем его и переходим в распакованный каталог:

wget https://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz

tar -xvf dahdi-linux-complete-current.tar.gz

cd dahdi-linux-complete-*

Выполняем сборку и установку:

make

make install

make config

Выходим из каталога с исходником:

cd ..

2. Сборка LibPRI

Процедура, во многом, похожа на сборку DAHDI. Загружаем исходник, распаковываем его и переходим в распакованный каталог:

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

tar -xvf libpri-current.tar.gz

cd libpri-*

Выполняем сборку и установку:

make

make install

Выходим из каталога с исходником:

cd ..

3. Установка самого астериска

Для начала, загружаем исходник на сервер. Так как мы планируем установить LTS версию, заходим на страницу https://www.asterisk.org/downloads/asterisk/all-asterisk-versions, раздел «Long Term Support (LTS) Releases» и копируем ссылку на загрузку пакета:

* Certified Asterisk — бизнес версия с поддержкой для коммерческих клиентов.

Используя ссылку, скачиваем на сервер программу:

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

Распаковываем архив и переходим в него:

tar -xvf asterisk-*.tar.gz

cd asterisk-*

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

./contrib/scripts/install_prereq install

./contrib/scripts/install_prereq install-unpackaged

Чистим образовавшиеся временные файлы:

make distclean

Добавляем библиотеку для работы с mp3:

./contrib/scripts/get_mp3_source.sh

Конфигурируем исходник:

./configure —prefix=/usr —sysconfdir=/etc —localstatedir=/var —libdir=/usr/lib64 —with-dahdi —with-pri —with-iconv —with-libcurl —with-speex —with-mysqlclient

* полный перечень опция и что они означают можно посмотреть командой ./configure -h.

Продолжаем настройку:

make menuselect

Выбираем необходимые компоненты (в данном примере res_config_mysql, app_mysql, cdr_mysql):

Запускаем сборку и установку:

make

make install

Устанавливаем скрипты для автозапуска АТС и готовые конфигурационные файлы:

make config

make samples

Установка завершена!

Решение:

В Интернете много вариантов, все они ориентированы на чистый Asterisk.
Примеры:https://wiki.merionet.ru/ip-telephoniya/55/ocenka-raboty-operatora-posle-zvonka-na-asterisk/https://habr.com/ru/post/147122/http://asterisk-service.com/blog/asterisk-1/post/2-0-53
Моя же реализация заключается в том, что все настройки можно делать в Web-интерфейсе FreePBX.Реализация тестировалась и работает на:
— версии Asterisk 1.8.10.1
— FreePBX версии 12.0.76.6
— PHP версии 5.3.10-1ubuntu3.26
— библиотека PHPAGI версии 2.20 2010/09/30 02:21:00 (качаем тут: phpagi.zip)
Первым делом нам нужно определить как генерируется постановка вызова в очередь. Выполняем на сервере Asterisk:
Ищем контекст с названием . Внутри должны быть строки вида

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
ext-queues
include => ext-queues-custom
exten => 11,1,Macro(user-callerid,)
exten => 11,n,Answer
exten => 11,n,Macro(blkvm-set,reset)
exten => 11,n,ExecIf($"${REGEX("(M(auto-blkvm))" ${DIAL_OPTIONS})}" != "1"?Set(_DIAL_OPTIONS=${DIAL_OPTIONS}M(auto-blkvm)))
exten => 11,n,Set(__NODEST=${EXTEN})
exten => 11,n,Set(QCIDPP=${IF($${LEN(${VQ_CIDPP})}>?${VQ_CIDPP} )})
exten => 11,n,Set(VQ_CIDPP=)
exten => 11,n,ExecIf($"${QCIDPP}"!=""?Macro(prepend-cid,${QCIDPP}))
exten => 11,n,Set(QAINFO=${IF($${LEN(${VQ_AINFO})}>?${VQ_AINFO} )})
exten => 11,n,Set(VQ_AINFO=)
exten => 11,n,ExecIf($"${QAINFO}"!=""?Set(__ALERT_INFO=${QAINFO}))
exten => 11,n,Set(QJOINMSG=${IF($${LEN(${VQ_JOINMSG})}>?${IF($"${VQ_JOINMSG}"!="0"?${VQ_JOINMSG} )}customzednannja-vstanovleno)})
exten => 11,n,Set(VQ_JOINMSG=)
exten => 11,n,Set(QRINGOPTS=r)
exten => 11,n,Set(QRETRY=${IF($${LEN(${VQ_RETRY})}>?${VQ_RETRY}n)})
exten => 11,n,Set(VQ_RETRY=)
exten => 11,n(qoptions),Set(QOPTIONS=${IF($${LEN(${VQ_OPTIONS})}>?${VQ_OPTIONS}t)}${QCANCELMISSED}${QRINGOPTS}${QRETRY})
exten => 11,n,Set(VQ_OPTIONS=)
exten => 11,n(qgosub),Set(QGOSUB=${IF($${LEN(${VQ_GOSUB})}>?${VQ_GOSUB}${QGOSUB})})
exten => 11,n,Set(VQ_GOSUB=)
exten => 11,n(qagi),Set(QAGI=${IF($${LEN(${VQ_AGI})}>?${VQ_AGI}${QAGI})})
exten => 11,n,Set(VQ_AGI=)
exten => 11,n(qrule),Set(QRULE=${IF($${LEN(${VQ_RULE})}>?${IF($"${VQ_RULE}"!="0"?${VQ_RULE} )}${QRULE})})
exten => 11,n,Set(VQ_RULE=)
exten => 11,n(qposition),Set(QPOSITION=${IF($${LEN(${VQ_POSITION})}>?${VQ_POSITION}${QPOSITION})})
exten => 11,n,Set(VQ_POSITION=)
exten => 11,n,Gosub(sub-record-check,s,1(q,11,dontcare))
exten => 11,n,ExecIf($"${QJOINMSG}"!=""?Playback(${QJOINMSG}, ))
exten => 11,n,QueueLog(11,${UNIQUEID},NONE,DID,${FROM_DID})
exten => 11,n,Set(QAANNOUNCE=${IF($${LEN(${VQ_AANNOUNCE})}>?${IF($"${VQ_AANNOUNCE}"!="0"?${VQ_AANNOUNCE} )} )})
exten => 11,n,Set(VQ_AANNOUNCE=)
exten => 11,n,Set(QMOH=${IF($"${VQ_MOH}"!=""?${VQ_MOH} )})
exten => 11,n,Set(VQ_MOH=)
exten => 11,n,ExecIf($"${QMOH}"!=""?Set(__MOHCLASS=${QMOH}))
exten => 11,n,ExecIf($"${MOHCLASS}"!=""?Set(CHANNEL(musicclass)=${MOHCLASS}))
exten => 11,n,Set(QMAXWAIT=${IF($${LEN(${VQ_MAXWAIT})}>?${VQ_MAXWAIT} )})
exten => 11,n,Set(VQ_MAXWAIT=)
exten => 11,n,Set(QUEUENUM=11)
exten => 11,n,Set(QUEUEJOINTIME=${EPOCH})
exten => 11,n(qcall),Queue(11,${QOPTIONS},,${QAANNOUNCE},${QMAXWAIT},${QAGI},,${QGOSUB},${QRULE},${QPOSITION})
exten => 11,n,Macro(blkvm-clr,)
exten => 11,n,Gosub(sub-record-cancel,s,1())
exten => 11,n,Set(__NODEST=)
exten => 11,n,Set(_QUEUE_PRIO=)
exten => 11,n,Set(QRINGOPTS=)
exten => 11,n,Set(QDEST=${VQ_DEST})
exten => 11,n,Set(VQ_DEST=)
exten => 11,n(gotodest),GotoIf($"${QDEST}"=""?ext-group,505,1${CUT(QDEST,^,1)},${CUT(QDEST,^,2)},${CUT(QDEST,^,3)})

здесь нас интересует строка:
Приложение Queue() генерирует постановку вызова в очередь. Как видим с примера — приложению передаются параметры, которые были сгенерированные перед выполнением приложения Queue(). Смотрим в документацию: https://asterisk-pbx.ru/wiki/asterisk/app/queue
Как видим по документации, если при выполнении приложения Queue(), добавить в аргумент «options» параметр «c», то диаплан продолжит свое выполнения, когда вызываемый (оператор) положил трубку. В нашем случае — диаплан перейдет на пункт «Fail Over Destination» в FreePBX.
По контексту определяем, что если перед поступлением звонка в очередь, мы установим значение «c» переменной VQ_OPTIONS, то приложение Queue() згенерирует постановку вызова в очередь с этим параметом.

Установка Asterisk Phonebook

Требуются следующие приложения

  • Apache Webserver 2.x +
  • php 4.2 — 5.3 (в 5.4 без register_globals = On не работает) php 5.4 register_globals

register_globals fix

register_globals fix

foreach (array('_GET', '_POST', '_COOKIE', '_SERVER') as $_SG) {
    foreach ($$_SG as $_SGK => $_SGV) {
        $$_SGK = $_SGV;
    }
}

Добавить в начала исполняемого php скрипта.

  • Asterisk 1.4 — Asterisk 12
  • MySQL 4.1 +
  • FreePBX (опционально)
  # cd /var/www/html

Скачайте исходник

Распакуйте архив

  # tar -xzvf phonebook_asterisk.tar.gz

Создайте директорию ~/phonebook/upload и установите права на неё rwxrwxrwx

  # mkdir phonebook_asterisk/upload \\
  # chmod 777 /var/www/html/phonebook_asterisk/upload

Отредактируйте php.ini

  register_globals = On

VTiger6 Asterisk интеграция

Всплывающие окно входящего вызова (call popups)

При входящем вызове, когда вызов поступает на телефон привязанный к аккаунту агента VTiger,

всплывает окно сообщающее о вызове и предлагающее создать полноценный Контакт или Обращение.

Детализированный отчет о звонках

Ведется полный отчет о совершенных вызовах и запись телефонных переговоров.

Доступна функция Click-To-Call. Если кликнуть на сохраненный номер в отчете о звонках или Контакте, Организации и т.д.,

VTiger вызовет сначала внутренний номер агента, привязанный к аккаунту VTiger,

а когда агент поднимет трубку произведет набор внешнего номера.

Сохраненный контакт.

Каждую запись в Vtiger легко найти и отредактировать.

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

Чтобы вы ни искали — Обращения, Контакты, Организации или Контрагентов, вы увидите связанные с ними сообщения емайл, сделки и заметки.

Темы блога

Microsoft Windows
(59)

Microsoft
(58)

Asterisk
(52)

Linux
(51)

Operating system
(47)

Operating Systems
(36)

Windows XP
(34)

Protocols
(28)

Windows
(28)

Business
(19)

(18)

Programming
(18)

FAQs Help and Tutorials
(17)

Windows 7
(17)

Windows Vista
(15)

Администратору на заметку
(14)

Windows Server 2008
(13)

Domain Name System
(12)

IP address
(11)

Open source
(11)

Clients
(10)

Security
(10)

DNS
(9)

Internet Protocol
(9)

Server
(9)

Windows 2000
(9)

Active Directory
(8)

Hardware
(8)

IPhone
(8)

Shareware
(8)

Skype
(8)

Windows Server
(8)

Windows Server 2003
(8)

DNS Providers
(7)

Virtual private network
(7)

Apple
(6)

Domain name
(6)

Dynamic DNS
(6)

Internet Explorer
(6)

Internet Protocol Suite
(6)

Hard disk drive
(5)

RAID
(5)

Web Tools
(5)

Windows NT
(5)

Windows Server 2008 R2
(5)

Cisco Systems
(4)

Computers and Internet
(4)

Dynamic Host Configuration Protocol
(4)

Firewall
(4)

Personal computer
(4)

Search Engines
(4)

Storage
(4)

Symantec
(4)

Yahoo
(4)

DVD
(3)

Local area network
(3)

NTFS
(3)

Opera
(3)

Remote Desktop
(3)

Remote Desktop Protocol
(3)

Router
(3)

Terminal Services
(3)

Wi-Fi
(3)

Window 7
(3)

YouTube
(3)

Сервер терминалов
(3)

Синий экран смерти
(3)

восстановление данных
(3)

BIOS
(2)

Blue Screen of Death
(2)

CD-ROM
(2)

Cisco
(2)

Data recovery
(2)

Disk Management
(2)

General Packet Radio Service
(2)

Internet
(2)

Mac OS
(2)

NTLDR
(2)

RSS
(2)

Remote Access
(2)

Service pack
(2)

Sony Ericsson
(2)

Terminal server
(2)

Transmission Protocols
(2)

Unix
(2)

Window XP
(2)

Windows Mobile
(2)

ntdetect.com
(2)

Почта
(2)

Серверное оборудование
(2)

Cisco IOS
(1)

Conficker
(1)

DirectX
(1)

IPSec
(1)

Java
(1)

Motherboard
(1)

Net-Worm
(1)

Printer
(1)

Telnet
(1)

VentaFax
(1)

Windows 98/ME/NT
(1)

Windows 9x
(1)

Windows Me
(1)

Windows Mobile 6
(1)

Windows XP Professional
(1)

Windows XP editions
(1)

Winsock
(1)

Wireless
(1)

dlink
(1)

ВОССТАНОВЛЕНИЕ ФАЙЛОВ
(1)

Горячие клавиши
(1)

Защита от вирусов
(1)

Интернет
(1)

ОГО
(1)

Сборками Windows
(1)

Серверные шкафы
(1)

Сетевые черви
(1)

Тонкий клиент
(1)

прокси proxy
(1)

Простые CLI приемы

Есть несколько трюков, которые помогут вам в интерфейсе командной строки Asterisk.
Очень удобно завершение неполного ввода клавишей TAB. Если вы введете начало команды и нажмите клавишу Tab, Asterisk попытается завершить имя команды, или покажет возможные команды, которые начинаются с буквы, которые Вы ввели. Например, введите ‘co’, а затем нажмите клавишу Tab.

 localhost*CLI> co
 confbridge  config      core
 localhost*CLI> co

Теперь наберите ‘cor’, и нажмите TAB снова. На этот раз Asterisk завершит слово, т.к. ‘core’ является единственной командой, которая начинается с ‘cor’.
Этот трюк также работает с под-командами. Например, наберите ‘core show’ и нажмите TAB. (Возможно, вам придется дважды нажать вкладку, если вы не поставили пробел после слова ‘show’.) Asterisk покажет вам все под-команды.

localhost*CLI> core show 
application     applications    calls           channel         channels
channeltype     channeltypes    codec           codecs          config
file            function        functions       hanguphandlers  help
hint            hints           image           license         profile
settings        sound           sounds          switches        sysinfo
taskprocessors  threads         translation     uptime          version
warranty
localhost*CLI> core show

Повторение предыдущих команд.

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

Run Linux Shell Commands from The Asterisk CLI

Восклицательный знак перед командой позволяет предавать команды оболочке Linux.

 localhost*CLI> !whoami
 root
 localhost*CLI>

Asterisk -rx

Иногда удобно дать команду, или получить информацию, не подключаясь непосредственно к консоли. Для этого используется ключ ‘-x’.

Например, получить список sip пиров:

# asterisk -rx 'sip show peers'

Команда может заключаться, как в одинарные, так и в двойные кавычки.

Также можно отфильтровать полученные данные командой grep:

 # asterisk -rx "sip show peers" | grep unreachebale

logger.conf

Консоль является объектом модуля логов в Asterisk. Что должно отображаться в консоли при подключении, настраивается в конфиге logger.conf

extensions_custom.conf sip_custom.conf from-internal-custom

Во FreePBX предусмотрено использование пользовательских (custom) файлов.

Эти файлы находятся в директории конфигурационных файлов Asterisk и имеют отличительные названия, например:

extensions_custom.conf

sip_custom.conf

и т.д. и т.п.

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

Стандартный контекст FreePBX from-internal включает в себя файл extensions_custom.conf

Таким образом, если задать какой-либо шаг диалплана в файле extensions_custom.conf

без , это действие будет включено в контекст from-internal и выполняться как диалплан FreePBX.

  exten => _810./_1XX,1,Playback(tt-monkeys)

Стандартный контекст FreePBX from-internal включает в себя контекст from-internal-custom.
Создайте контекст с таким именем в файле extensions_custom.conf

и заданный там диалплан будет выполняться, как диалплан FreePBX.

 exten => _810./_2XX,1,Goto(app-blackhole,hangup,1)

Рассмотрим простой пример:

Для более гибкого использования FreePBX, может потребоваться написание собственных контекстов в диалплане.

Требуется преобразовывать набираемый номер #XX в *XX.

Замените стандартный контекст екстеншенов from-internal на собственный custom.

В файле /etc/asterisk/extensions_custom.conf создайте контекст:

exten => _1XX,1,Goto(from-internal,${EXTEN},1)
exten => _.,1,Goto(from-internal,${EXTEN},1)
exten => _#.,1,Noop(add)
exten => _#.,n,Set(add=*)
exten => _#.,n,Goto(custom-add,${EXTEN},1)

exten => _#.,1,Goto(from-internal,${add}${EXTEN:1},1)

При наборе внутренних номеров начинающихся на <1>, а также номеров на другие цифры, вызов будет направлен на обработку в стандартный контекст from-internal.
Набранная же решетка <#>, будет заменена звездочкой <*> и направлена туда же.

Заключение

Настройка Asterisk с нуля не окажется трудной как специалисту, так и новичку. Asterisk является отличным решением компьютерной телефонии.

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

Астериск доступен в Ubuntu, но его также можно установить и на Windows.

Для удобства можно использовать Freepbx, так как это функциональный интерфейс для настройки Астериска. Он переводит текст программы на понятный язык, что облегчает задачу. С помощью данной программы можно легко менять количество абонентов, так как платформа очень гибкая и многое позволяет.

Не надо ставить лишние пробелы и ошибаться в написании команд. Совсем незаметные ошибки могут не допустить работу программы.

Разобравшись в этой системе, можно получить много новых возможностей, которые не были доступны всем раньше.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *