Код: Выделить всё
kineshma# cd /usr/ports/net/asterisk16
kineshma# make install clean
kineshma# cd /usr/ports/net/asterisk16-addons
kineshma# make install clean
Вписываем в /usr/local/etc/asterisk/sip.conf один тестовый телефончик.
В нашем случае телефоная емкость 24** потому мы используем номер телефона 2400 - вы тут подставляете свой телефонный номер. Так же в примере в качестве логина и пароля используется номер телефлона - вы можете использовать какие-то свои данные - использование номера телефона обусловлено исключительно легкостью запоминания такого логина и пароля.
Код: Выделить всё
[2400]
type=friend
host=dynamic
username=2400
secret=2400
nat=no
canreinvite=yes
context=office
callerid="T E S T" <2400>
disallow=g729
allow=all
allow=ulaw
allow=alaw
1) Секция default уже есть в конфиге - потому строчку надо вставить туда. Данное правило, которые мы вставляем влияет на входящие звонки - то есть когда звонок приходит с других АТС - он именно тут ищет туда он пришел или нет, и куда ему идти дальше.
2) Так же понимаем что если у нас телефонных номеров много, например если номера начинающиеся на 25** тоже принадлежат нашай АТС - ты суди вписываем второй строкой что-то типа exten => _25XX,1, Macro(stdexten,${EXTEN},SIP/${EXTEN})
3) В секции office мы должны прописать каждый телефон НАШЕЙ АТС который должно работать. То есть когда заводим новый номер телефона мы его прописываем и в sip.conf и тут. Таким образом если у нас появился новый телефон с номером 2401 - то в этой секции у нас появится строчка типа exten => 2401,1, Macro(stdexten,2401,SIP/2401)
Код: Выделить всё
[default]
exten => _24XX,1, Macro(stdexten,${EXTEN},SIP/${EXTEN})
[office]
exten => _X.,1,Dial(SIP/${EXTEN}@192.168.28.1,120)
exten => 2400,1, Macro(stdexten,2400,SIP/2400)
include => demo
[macro-stdexten]
exten = s,1,Set(__DYNAMIC_FEATURES=${FEATURES})
exten = s,2,GotoIf($[${FOLLOWME_${ARG1}} = 1]?5:3)
exten = s,3,Dial(${ARG2},${RINGTIME},${DIALOPTIONS})
exten = s,4,Goto(s-${DIALSTATUS},1)
exten = s,5,Macro(stdexten-followme,${ARG1},${ARG2})
exten = s-NOANSWER,1,Voicemail(${ARG1},u)
exten = s-NOANSWER,2,Goto(default,s,1)
exten = s-BUSY,1,Voicemail(${ARG1},b)
exten = s-BUSY,2,Goto(default,s,1)
exten = _s-.,1,Goto(s-NOANSWER,1)
exten = a,1,VoicemailMain(${ARG1})
[macro-stdexten-followme]
exten = s,1,Dial(${ARG2},${RINGTIME},${DIALOPTIONS})
exten = s,2,Followme(${ARG1},${FOLLOWMEOPTIONS})
exten = s,3,Voicemail(${ARG1},u)
exten = s-NOANSWER,1,Voicemail(${ARG1},u)
exten = s-BUSY,1,Voicemail(${ARG1},b)
exten = s-BUSY,2,Goto(default,s,1)
exten = _s-.,1,Goto(s-NOANSWER,1)
exten = a,1,VoicemailMain(${ARG1})
Лирические отступления
1) Мы тут не используем платные кодеки G729 и G723 - потому что под Asterisk6 на FreeBSD8 сборки на сайте http://asterisk.hosting.lv/ нету - найдем - поставим
2) По мимо железной перегрузки АТС (/usr/local/etc/rc.d/asterisk stop и /usr/local/etc/rc.d/asterisk start) можно еще перечитывать определеные файлы на лету командами, например module reload extconfig из консоли самого астериска
3) У астериска есть свой командный интерфейс, где можно смотреть инфу нужную - войти в неё можно с командной строки сервера, набрав asterisk -r
4) В консоле астериска можно посмотреть что происходит на АТС, включил дебаг командой core set verbose 9
5) Иногда бывает что в консоле астериск громко ругается на тему
Код: Выделить всё
[Apr 13 10:05:03] WARNING[27558]: db.c:57 dbinit: Unable to open Asterisk database '/var/db/asterisk/astdb': No such file or directory