Asterisk за неделю

4го числа, месяца апреля, года Водяного Дракона было решено: - срочно поднять Asterisk. В статье некоторые заметки как это было сделано. Естественно работает далеко не всё, да и неделей дело не ограничилось, но ...

Что мы имеем:


Приличную "железяку" на XEON с установленной в неё платой Digium 1TE121PF.

Плата Wildcard TE121 - это высокопроизводительная экономичная плата с цифровым интерфейсом, которая позволяет создавать целостную сеть, объединяющую традиционные телефонные системы с бурно развивающейся технологией Voice over IP (VoIP). Работая в связке с Asterisk®, TE121 может быть использован для внедрения широкого спектра сервисов PBX и IVR в сеть, в том числе голосовую почту, конференц-связь, трехстороннюю конференцию и VoIP шлюзы. Wildcard TE121 - это однопортовая плата с возможностью выбора интерфейсов: T1 (24-канала), E1 (32-канала) или J1 (24 канала). Благодаря поддержке PCIe x1, TE420 можно установить в любой из доступных PCIe v1.0 совместимых слотов: x1, x4, x8, и x16 не задумываясь над вопросами выбора напряжения или размера линии. Плата Digium TE121 поддерживает передачу, как голоса, так и данных по одному интерфейсу. Например, плата может выделять 12 каналов под голосовой трафик, предназначенный специально для Asterisk Open Source PBX, и 12 каналов для данных, используемых операционной системой Linux, что избавляет от необходимости во внешнем маршрутизаторе. TЕ121Р поддерживает стандартные семейства протоколов телефонии, включая RBS и PRI, и протоколы PPP, Cisco HDLC, Frame Relay для передачи данных. Плата поддерживает все известные европейские стандарты сигнализации. Используя плату TE121 c ПО Asterisk®, в стандартной конфигурации ПК и ОС Linux®, вы можете нарастить мощность своей PBX до возможностей современных телефонных компаний благодаря поддержке передачи, как голоса, так и данных.

Плату сразу приобрели с модулем эхо-подавления.
Внимание: переключатель T1-E1 расположен под модулем эхо-подавления. Рекомендуется сразу выставить джампер в нужное положение до запуска сервера. Памяти на сервере 4Г. То есть, для нормального функционирования IP АТС Asterisk, вполне достаточно.

В наличии уже есть офисная АТС Samsung 7400
Почти 200 подключений аналоговых телефонов
более 20 городских линий по PRI заведенных на Samsung


Дорожная карта

* Установить ОС
* Настроить ОС
* Установить libpri
* Установить DAHDI
* Установить Asterisk из исходных кодов
* Настроить простой звонок с SIP на SIP клиент
* Настроить звонок с SIP клиента на телефон подключенный к АТС Samsung 7400 и обратно
* Настроить звонок c SIP клиента на городской, мобильный и пр.


Установка ОС Debian

Здесь пока не описана.
И не будет написана, поскольку это отдельная очень большая тема.


Настройка ОС

Asterisk изначально установлен из репозитария готовыми пакетами. А для использования всех функций необходимых нам придется делать сборку самим. Поэтому, удаляем все установленные пакеты Asterisk и модули которые с ним шли.
Настраиваем сеть и доступ в Интернет !!!
Компиляция ядра. Какое текущее ядро установлено ? Текущая версия ОС Debian 6.0.4. Набираем в терминале
uname -r
2.6.32-5-amd64

http://www.kernel.org/ Текущая стабильная версия stable: 3.3.1 2012-04-02 По идее, с верси ядра 2.6 поддержка asterisk уже включена.
Проверяем установлены ли пакеты если нет устанавливаем:

apt-get install linux-source-2.6.18
apt-get install build-essential
apt-get install kernel-package
apt-get install libncurses5-dev
apt-get install fakeroot
apt-get install pkg-config
apt-get install linux-headers-`uname -r`
apt-get install gcc
apt-get install bison
apt-get install openssl
apt-get install libcurl4-openssl-dev
apt-get install libglobus-openssl-dev
apt-get install libssl-dev
apt-get install libnewt-dev
apt-get install unixodbc
apt-get install unixodbc-dev
apt-get install libltdl7-dev

Установка платы: наберите lspci -n под root получите нечто такое
0000:01:00.0 0200: ISDN controller: Unknown device d161:

где d161 код vendor ID Diginum, для модели TE121 код будет 8000

очень желательно скачать инструкцию по плате с сайта Diginum и внимательно её изучить


Установка libpri


Скачайте последнюю версию libpri. Замените x.x на версию libpri в командной строке ниже. libpri доступна для скачивания по адресу: http://downloads.digium.com/pub/telephony/libpri скачиваем командой:
# wget http://downloads.digium.com/pub/telephony/libpri/libpri-1.4-current.tar.gz

Распакуйте скачанный файл, скомпилируйте его содержимое, и установите библиотеку. Замените XX и XXX на текущую версию libpri, в командной строке приведенной ниже.
# tar -zxvf libpri-X.X-current.tar.gz
# cd libpri-X.X.X/
# make
# make install

Примечание: Существует не совместимость между разными версиями libpri и Asterisk. Версия libpri 1.4 будет работать с веткой Asterisk 1.6.

С установкой libpri проблем небыло.


Установка DAHDI


Скачайте последнюю версию драйверов DAHDI с инструментами. DAHDI доступно для скачивания по ссылке:
http://downloads.digium.com/pub/telephony/dahdi-linux-complete *у вас в системе обязательно должны стоять заголовки и исходники ядра!

# wget http://downloads.digium.com/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz

Распакуйте скачанный файл, скомпилируйте его содержимое, и установите драйверы и утилиты. Замените X.X.X на текущую версию DAHDI в команд-ной строке приведенной ниже.
# tar -zxvf dahdi-linux-complete-current.tar.gz
# cd dahdi-linux-complete-X.X.X+X.X.X
# make
# make install
# make config

Примечание: Выполнение ‘make config’ установит скрипты и symlinks которые позволят вам запускать и останавливать DAHDI как service.

Программы DAHDI
dahdi_cfg — проверяет файл конфигурации на ошибки
dahdi_cfg — configures DAHDI kernel modules from /etc/dahdi/system.conf
dahdi_genconf — (ОПАСНО) Generate configuration for Dahdi channels. Перезатрет файлы конфигурации.
dahdi_diag — Dump DAHDI channel parameters
dahdi_test — Test if the DAHDI timer provides timely response
dahdi_hardware — выводит информацию об оборудовании
dahdi_monitor — checks the Rx/Tx levels of a DAHDI channels
dahdi_monitor 01 -v — мониторит состояние канала
dahdi_maint — Sets Dahdi spans into maintenance mode, e.g.: loopback
dahdi_scan — Просмотр конфигурации оборудования

cat /proc/interrupts
service dahdi restart
service dahdi reload

asterisk*CLI> dahdi show status
asterisk*CLI> dahdi show channels


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


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

1. Загрузите последнюю версию Asterisk. Замените версию Asterisk для x.x в команде ниже. Asterisk доступен для загрузки на сайте: http://downloads.digium.com/pub/telephony/asterisk Текущая версия 10.3.0

# wget http://downloads.digium.com/pub/telephony/asterisk/asterisk-X.X-current.tar.gz

в случае с 10 веткой использовался один Х

Распакуйте скачанный файл, скомпилируйте его содержимое, и установите приложение. Замените X.X и X.X.X на версию Asterisk в командной строке.
# tar -zxvf asterisk-X.X-current.tar.gz
# cd asterisk-X.X.X/
# make clean
# ./configure
# make menuselect
# make
# make install
# make samples

В ходе конфигурирования пришлось установить
apt-get install libncurses5-dev
apt-get install libxml++2.6-2
apt-get install libxml++2.6-dev

для ogg — пока нет
apt-get install libogg0 libogg-dev libvorbis0 libvorbisenc2 libvorbis-dev

в menuselect меню XXX означает, что зависимости не были выполнены или существует конфликт

База данных ?
apt-get install sqlite3
apt-get install libsqlite3-dev

service asterisk start
service asterisk restart
service asterisk stop

asterisk*CLI>core show codecs — показывает зарегистрированные в системе кодаки
asterisk*CLI> sip show peers — показывает пиры
asterisk*CLI> sip show users — показывает пользователей

/usr/sbin/asterisk -rx "reload" - выполнить перезагрузку Астериска не заходя в консоль
/usr/sbin/asterisk -rx "database show"
/usr/sbin/asterisk -r — Войти в консоль Астериска

pri intense debug span 1 — включить отладочную информацию
pri set debug 0 span 1 - отключить


WEB интерфейс


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


Перехват звонков!


В группе звонок перехватывается *8[трубка]
Гпуппы определяються параметрами pickupgroup callgroup в файле /etc/asterisk/sip.conf
грубый пример

[user1]
callgroup=1
pickupgroup=2

[user2]
callgroup=2
pickupgroup=1

[user3]
callgroup=3
pickupgroup=1,2

user1 может перехватить звонок, идущий на user2
user2 -- // -- user1
user3 -- // -- user1 и user2


Астериск продолжает говорить по-русски!


Проблема. Не работала голосовая почта. Не хватало файлов с русскими фразами. С английскими были. Пакет устанавливался из исходников с указанием в make menuselect пакетов с русскими звуковыми файлами.
Решение. Идем на ресурс www.ivrvoice.ru. Скачиваем интересный нам архив с помощью wget в нужный каталог, распаковываем, копируем нужное (или все) в папку /var/lib/asterisk/sounds/ru.
Проверяем работоспособность.