Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> Asterisk IP PBX

Установка VoiP сервера Asterisk IP PBX

Автор: Cancer.


Вот возникла как-то задача соединить Офис и Базу через 2 Шлюза DVG 2004S и DVG 3004S
Офис и база объединены Радиоканалом LAN.
И нужно было соединить АТС-Шлюз в офисе и Шлюз-АТС на базе по средствам VoiP сервера.
Как обычно задал на форуме что по чем и что лучше, мне заявили что мол Астериск супер.
Ну вот и решил его пробовать.

Шлюзы DVG 2004S и DVG 3004S



Схема сети



Asterisk™ - это завершенное решение телефонной станции основанное на технологии VoIP.Работает Asterisk на платформе Linux и обеспечивает все возможности, которые Вы ожидаете от АТС и даже больше.Asterisk совместим практически со всеми современными стандартами и оборудованием, изпользуя сравнительно недорогое аппаратное обеспечение. Asterisk предоставляет сервис голосовой почты, конференц-связи, очереди вызовов. Поддерживает технологии Caller ID, ADSI, SIP и H.323. Asterisk поддерживает широкий диапазон протоколов TDM для обработки и передачи голосового трафика через средства традиционной телефонии. Asterisk поддерживает Американский и Европейский типы сигнализаций, используемых в бизнес приложениях. Asterisk позволяет построить мост между Интегрированными сетями передачи голоса и данных следующего поколения, и существующей инфраструктурой. Asterisk не только поддерживает традиционное телефонное оборудование, но и позволяет использовать его дополнительные возможности. Используя IAX™ (Inter-Asterisk™ eXchange) VoIP протокол, возможно безболезненное объединение голоса и данных в сетях. При использовании пакетной передачи голоса, возможно посылать данные, такие как например URL и изображения, присоединённые к голосовому трафику, то есть позволяет сильно интегрировать информацию. Asterisk включает в себя центральное ядро с четырьмя API для модульной загрузки приложений телефонии, аппаратных интерфейсов, обработки формата файлов и кодеков. Это позволяет прозрачно переключаться между всеми поддерживаемыми интерфейсами, соединять разнообразные голосовые системы с единой средой передачи данных. Asterisk первоначально был разработан на GNU/Linux для x/86. Известны компиляции работающие на OpenBSD, FreeBSD, and Mac OS. Перенос на другие UNIX-платформы не должен вызвать затруднений и возможен при наличии времени и необходимых навыков. Существует Asterisk, доступный для тестирования на платформе Debian, он поддерживается Марком Пирселлом (Mark Purcell)




Ставим Asterisk 1.4




//> cd /usr/ports/net/asterisk
/usr/ports/net/asterisk/> make config

     +--------------------------------------------------------------------+
     |                   Options for asterisk 1.4.21.2_3                  |
     | +----------------------------------------------------------------+ |
     | |  [X] OGGVORBIS     Enable Ogg Vorbis support                   | |
     | |  [X] ODBC          Enable ODBC support                         | |
     | |  [ ] POSTGRES      Enable PostgreSQL support                   | |
     | |  [ ] RADIUS        Enable RADIUS accounting support            | |
     | |  [X] SNMP          Enable SNMP support                         | |
     | |  [ ] H323          Enable H.323 support                        | |
     | |  [X] FREETDS       Enable FreeTDS support                      | |
     | |  [X] JABBER        Enable Jabber and Gtalk support             | |
     | |  [X] SQLITE        Enable SQLITE support                       | |
     | |  [X] CODEC_PATCH   Apply codec negotiation patch               | |
     | |  [ ] ILBC          Enable iLBC codec                           | |
     | |  [ ] MISC_PATCHES  Apply additional patches                    | |
     | |  [X] ZAPTEL        Enable Zaptel support                       | |
     | |                                                                | |
     | |                                                                | |
     | |                                                                | |
     +-+------v(+)------------------------------------------------------+-+
     |                       [  OK  ]       Cancel                        |
     +--------------------------------------------------------------------+

//> make && make install && make clean


Далее привожу основные конфиги
Сразу говорю все что там в конфигах было оставлял без изменений, токо добавлял это все вниз кадого конфига
Да и еще решетки(#) конфиги asterisk`a не переваривают
//> ee /usr/local/etc/asterisk/sip.conf

; Только СИП пользователи

; Для подключения Шлюза Офис D-Link 2004S
[200]
type=friend
host=dynamic
username=200
secret=123
nat=no
canreinvite=no
context=office
callerid=Office <200>
allow=gsm
allow=ulaw
allow=alaw

; База D-Link 3004S
[401]
dtmfmode=auto
type=friend
host=dynamic
username=401
secret=пароль
nat=no
canreinvite=no
context=office
callerid=Base <401>
disallow=all
allow=g729
allow=g723
allow=g723.1
allow=gsm
allow=ulaw
allow=alaw

; База D-Link 3004S
[402]
dtmfmode=auto
type=friend
host=dynamic
username=402
secret=пароль
nat=no
canreinvite=no
context=office
callerid=Base <402>
disallow=all
allow=g729
allow=g723
allow=g723.1
allow=gsm
allow=ulaw
allow=alaw

; База D-Link 3004S
[403]
dtmfmode=auto
type=friend
host=dynamic
username=403
secret=пароль
nat=no
canreinvite=no
context=office
callerid=Base <403>
disallow=all
allow=g729
allow=g723
allow=g723.1
allow=gsm
allow=ulaw
allow=alaw

; База D-Link 3004S
[404]
dtmfmode=auto
type=friend
host=dynamic
username=404
secret=пароль
nat=no
canreinvite=no
context=office
callerid=Base <404>
disallow=all
allow=g729
allow=g723
allow=g723.1
allow=gsm
allow=ulaw
allow=alaw


; Обычный SIP пользователь
[201]
type=friend
host=dynamic
username=201
secret=пароль
nat=no
canreinvite=no
context=office
callerid=user1 <201>
allow=gsm
allow=ulaw
allow=alaw


; Пользователь который звонит внутри фирмы,а по
; межгороду через sipnet.ru с зарегистрированного аккаунта.
[202]
type=friend
host=dynamic
username=202
secret=пароль
nat=no
canreinvite=no
context=office
callerid=user2 <202>
allow=gsm
allow=ulaw
allow=alaw

; для 202 номера подключение к sipnet.ru
[sipnet_202]
host=sipnet.ru
username=SIP_ID
secret=пароль
fromuser=SIP_ID
fromdomain=sipnet.ru
type=peer
context=local
disallow = all
allow = alaw
allow = ulaw
allow = g729
nat=no
canreinvite=nonat
insecure=invite
dtmfmode=info

Да и для того что бы была слышимость в обе стороны, когда звоните через SIPNET нужно пробросить порты 10000-20000 на машину с Asterisk'ом

//> ee /usr/local/etc/asterisk/extensions.conf

[office]
; Шлюз офис D-Link 2004
exten => 200,1, Dial(SIP/200,40)
exten => 200,2, Playback(vm-nobodyavail)
exten => 200,3, Hangup


; Номер 400 для того что бы на него позвонили
; и поподали на один из свободных 401 402 403 404
exten => 400,1, Queue(queue1|tT|||60)
exten => 400,n, Hangup

; D-Link База 3004
exten => 401,1, Dial(SIP/401,40)
exten => 401,2, Hangup

; D-Link База 3004
exten => 402,1, Dial(SIP/402,40)
exten => 402,2, Hangup

; D-Link База 3004
exten => 403,1, Dial(SIP/403,40)
exten => 403,2, Hangup

; D-Link База 3004
exten => 404,1, Dial(SIP/404,40)
exten => 404,2, Hangup

; Обычный SIP пользователь 201
exten => 201,1, Dial(SIP/201,40)
exten => 201,2, Playback(vm-nobodyavail)
exten => 201,3, Voicemail(201@default)
exten => 201,n, Hangup

; Пользователь 202 с sipnet.ru
exten => 202,1, Dial(SIP/202,40)
exten => 202,2, Playback(vm-nobodyavail)
exten => 202,3, Voicemail(202@default)
exten => 202,4, Hangup
exten => _8./202,1,Dial(SIP/${EXTEN}@sipnet_202,40)


; Номер 300 по которому можно услышать голосовые сообщения
; введя номер голосового ящика и его пароль
exten => 300,1,VoiceMailMain(300)

; Конференция 999
exten => 999,1, MeetMe(999)

include => default


Добавляем очередь в конфиг queues.conf
// ee /usr/local/etc/asterisk/queues.conf

[queue1]
music = default
strategy = rrmemory
member => SIP/401
member => SIP/402
member => SIP/403
member => SIP/404


Добавляем строку для автозапуска в /etc/rc.conf
//> echo 'asterisk_enable="YES"' >> /etc/rc.conf


Ну и запускаем сам Asterisk
//> /usr/local/etc/rc.d/asterisk start

Для того что что бы Работала конференция 999 нужно проделать следующее
//> cp /usr/local/lib/zaptel/zaptel.ko /boot/modules/
//> cp /usr/local/lib/zaptel/ztdummy.ko /boot/modules/

Запускаем модули
//> kldload -v /boot/modules/ztdummy.ko
//> kldload -v /boot/modules/zaptel.ko

Добавляем в автозапуск
//> echo 'ztdummy_load="YES"' >> /boot/loader.conf

//> ee /usr/local/etc/asterisk/meetme.conf

[general]
audiobuffers=32
[rooms]
; conf=>Номер конференции,пароль
conf => 999,1234

Для того что бы пользователи получали уведомления на почтовый ящик по средствам sendmail нужно проделать такое :)
//> ee /usr/local/etc/asterisk/voicemail.conf

[general]
format=wav49|gsm|wav
serveremail=asterisk
attach=yes
skipms=3000
maxsilence=10
silencethreshold=128
maxlogins=3
emaildateformat=%A, %d %B %Y at %H:%M:%S
mailcmd=/usr/sbin/sendmail -t
sendvoicemail=yes


[zonemessages]
eastern=America/New_York|'vm-received' Q 'digits/at' IMp
central=America/Chicago|'vm-received' Q 'digits/at' IMp
central24=America/Chicago|'vm-received' q 'digits/at' H N 'hours'
military=Zulu|'vm-received' q 'digits/at' H N 'hours' 'phonetic/z_p'
european=Europe/Copenhagen|'vm-received' a d b 'digits/at' HM


[default]
; Голосовые ящики + отправка уведомления на e-mail
;номер = пароль, имя_пользователя, почтовый ящик, закрепить сообщение_голосовое
201 = пароль, Sergey Batkovich, batkovich@domain.ru, attach=yes
202 = пароль, Nikolay Super, super@domain.ru, attach=yes




Да и если кому нужны тут Звуковые файлы, для того что бы Asterisk говорил по русски :)
Asterisk sounds
файл скачан размер размещён примечание
asterisk.1.4.coresounds.ru.tar.bz2
3501 1.42mb 2008-11-06 Звуки для Asterisk'a на русском языке, качество конечно не супер!




Установка Asterisk-gui-0.0.1r20070801_3


Вот еще можно поставить довольно приятную Веб морду asterisk-gui
//> cd /usr/ports/www/asterisk-gui/
/usr/ports/www/asterisk-gui/> make config

     +--------------------------------------------------------------------+
     |              Options for asterisk-gui 0.0.1r20070801_3             |
     | +----------------------------------------------------------------+ |
     | |  [X] SIP_QUEUES     In queues register users as SIP, not Agents| |
     | |  [X] SAMPLE_CONFIG  Install sample configuration files         | |
     | |                                                                | |
     | |                                                                | |
     | |                                                                | |
     +-+------v(+)------------------------------------------------------+-+
     |                       [  OK  ]       Cancel                        |
     +--------------------------------------------------------------------+

/usr/ports/www/asterisk-gui/> make install clean


Включаем поддержку Веб админки
//> /usr/local/etc/asterisk/http.conf

[general]
enabled=yes
enablestatic=yes
bindaddr=ip_tachki
bindport=8088
prefix=asterisk

Перезапустим Asterisk
//> asterisk -r
asterisk*CLI> reload

Тут задаем логин и пароль для Веб Админки добавив вот такую запись в самый низ
//> /usr/local/etc/asterisk/manager.conf

[логин]
secret = пароль
read = system,call,log,verbose,command,agent,config,user
write = system,call,log,verbose,command,agent,config,user

//> asterisk -r
asterisk*CLI> reload

И заходим по такой ссылке и отвечаем на вопросы установки
http://ip_tachki:8088/asterisk/static/config/setup/install.html






musiconhold.conf Настройка параметров «музыки при удержании» MusicOnHold
cdr_mysql.conf   Настройка хранения записей о звонках в MySQL
manager.conf     Настройка интерфейса Manager
meetme.conf      Настройка конференций (meetme)
mgcp.conf        Настройка параметров MGCP-устройств
parking.conf     Параметры «парковки» вызовов «Call parking»
voicemail.conf   Параметры голосовой почты (VoiceMail)
agents.conf      Агенты Asterisk
extensions.conf  Номерной план Asterisk
iax.conf         Настройка IAX-устройств
modem.conf       Настройка ISDN с использованием ISDN4Linux
vpb.conf         Настройка аппаратуры Voicetronix
alsa.conf        Настройки звукового драйвера ALSA для консольного пользователя
festival.conf    Параметры работы с синтезатором речи festival
modules.conf     Настройка модулей Asterisk
zapata.conf      Настройка аналоговых устройств телефонии digium 
asterisk.conf    Определение расположения каталогов Asterisk
indications.conf Настройка параметров аналоговых АТС различных стран
rpt.conf         Параметры протокола rtp
logger.conf      Параметры журналирования Asterisk


Клиент для IP телефонии X-lite можно скачать здесь

Документация
http://voip.rus.net/
http://asterisk.org.ru/
http://asterisk.org/
http://asteriskforum.ru/






Буду дописывать по мере успеха!!!(P.S понимаю что статья не идеальна, но все еще впереди)


PS....Виталий Сергеевич, посвящается вам за ваш вклад в мое развитие!



размещено: 2008-11-06,
последнее обновление: 2011-02-15,
автор: Cancer


Fastman, 2008-11-06 в 12:08:24

Да и для того что бы была слышимость када звоните через SIPNET нужно пробросить порты 10000-20000 на машину с Asterisk'ом

Подправьте :)

0guest, 2008-11-06 в 14:41:46

остаётся незакрытый вопрос проброса через asterisk факсимильных сообщений, да возможность использования кодека G.729 в pass-thru mode (т.е. без ресемплинга)

opt1k, 2008-11-06 в 15:25:29

а мну интересует пример организации офисной атс на базе Астериска

DSA, 2008-11-06 в 16:51:13

не кто не подскажет как увеличить качество звука, и убрать эхо? При 100 мегабитной сетке вообще чёт качество плохое :(

SniZ, 2008-11-10 в 9:13:17

Спасибо за статью!

buryanov, 2008-11-10 в 12:18:58

по поводу web интерфейса есть замечание - если вы делаете комментарии или просто коментите строки, то *-gui всегда их удаляет.

skeletor, 2008-11-10 в 17:33:56

0guest насчёт факса - ставьте любой ip2voice преобразователь (у себя на работе юзаю addpac, audiocodes) и подключаете в него с одной стороны Ethernet с другой - факс.

skeletor, 2008-11-11 в 11:32:04

Для всех.
После изменений в файлах sip.conf, extensions.conf, и подобных можно не перегружать весь астер, достаточно просто перегрузить только изменённые файлы. Например,

#asterisk -r
CLI>sip reload

или так

#asterisk -r
CLI>extensions reload

Cancer, 2008-11-13 в 13:55:20

Неправильно!
#asterisk -r
CLI>extensions reload


Правильно!
CLI>dialplan reload

paaradox, 2008-11-14 в 18:29:27

незнаю как там сечас у астериска с консолью
но если она не цветная могу замутить патчик

paradox, 2008-11-14 в 18:29:35

незнаю как там сечас у астериска с консолью
но если она не цветная могу замутить патчик

burn, 2008-11-16 в 13:11:09

echo 'asterisk_enable="YES"' > /etc/rc.conf
поправь на
echo 'asterisk_enable="YES"' >> /etc/rc.conf
;)

lol, 2008-11-22 в 22:46:51

Какойто бредовый способ реализации очереди...про callgroup pickupgroup и т.д. слышали ? Поищите информацию, поможет..

omega, 2008-12-12 в 19:06:28

2) In manager.conf

       [general]
       enabled = yes
       webenabled = yes

Vitaly, 2008-12-19 в 10:20:33

; Номер 400 для того что бы на него позвонили
; и поподали по очереди на 401 402 403 404
Всегда будет звонить 401 первым и тд. Бедный юзер на этом телефоне - будет пахать не распрямляя спины )) Организовывать распределение очереди намного приятней через queues.conf

Cancer, 2008-12-19 в 10:27:54

Согласен! Так приведи тут пример для всех.

Vitaly, 2008-12-20 в 23:16:48

Простой пример с очередями

Файл queues.conf
[queue1]
music = default
strategy = rrmemory
member => SIP/401
member => SIP/402
member => SIP/403
member => SIP/404

Файл extensions.conf
exten => 400,1, Queue(queue1|tT|||60)
exten => 400,n, Hangup

wd 3w, 2009-02-03 в 22:07:59

Товарищщи!_Это_поля_для ввода комментариев к статье, а не для вопросов. Сюда пишите найденные баги, или какие-то фичи :)
Для вопросов есть форум!!!

mayor, 2009-12-19 в 19:22:37

я на веб зашел только так:
http://IP_тачки:8088/asterisk/static/config/index.html
полдня заходил....

maradona, 2009-12-23 в 14:01:39

\"; Номер 300 по которому можно услышать голосовые сообщения
; введя номер голосового ящика и его пароль\"
не как не пойму как ввести пароль на почтовый ящик (X-Lite) все время ошибка..

playnet, 2009-12-29 в 20:08:28

А еще, правильнее пихать юзеров в users.conf
так многие конфигураторы делают..

Klop, 2010-01-17 в 16:33:27

Неплохо бы предупредить, что при запуске (точнее при входе) вебморда потрёт конфиги, слепит свои. Бэкап не помешает.
И пользователей правильнее заводить, как уже сказано выше, в users.conf, в файл sip.conf добавить include => users.conf

FIGI, 2010-02-12 в 10:22:12

Если мы используем восьмерку для выхода на ГТС
exten => _8./202,1,Dial(SIP/${EXTEN}@sipnet_202,40)
то переменную ${EXTEN} нужно подправить ${EXTEN:1} иначе восьмерка будет передаваться как часть номера а не как код выхода на город.

grop, 2010-03-22 в 15:06:30

да и вообще фигня а не статья.....так даже и посмотреть нечего....

admin, 2010-06-28 в 16:31:38

а ты сцуко сделал лучше!?

Cancer, 2010-06-28 в 16:38:18

Есть вариант переписать статью Asterisk+FreePBX но нужно время, настроил такую связку пока что на CentOS, думаю как руки дойдут до тестовой тачки так и напишу статью.

BlackCat, 2011-02-16 в 20:55:45

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

imar, 2011-02-18 в 11:38:46

для версии 2.0.4

http.conf:

[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088
prefix=gui
enablestatic=yes

manager.conf:

[general]
enabled=yes
webenabled=yes
port=5038
bindaddr=0.0.0.0
[bkruse]
secret=blah
read=system,call,log,verbose,command,agent,user,config,originate,read,write
write=system,call,log,verbose,command,agent,user,config,originate,read,write

Самое важное
Заходить по
http://ip_тачки:8088/gui/static/config/cfgbasic.html

evgeny, 2011-03-24 в 14:11:32

ещё в http.conf
[general]
redirect = / /gui/static/config/index.html

и тогда заходим по
http://ip_тачки:8088/

Cancer, 2011-06-10 в 22:36:27

ОФициальные озвучки, есть и русский язык.
http://downloads.asterisk.org/pub/telephony/sounds/

Kosmos, 2014-01-30 в 18:11:58

А как запихнуть русскую озвучку не подскажите?

Sergey, 2014-05-10 в 14:09:53

А написал бы кто что вообще нужно для поднятия схемы:

1.  комп с freebsd
2.  плата астериск
3.  что там ещё ?



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0656 секунд
Из них PHP: 46%; SQL: 54%; Число SQL-запросов: 80 шт.
Исходный размер: 72799; Сжатая: 14943