Первый этап - локальные телефоны/звонки и связь между серверами Алматы и Астана
[general]register => alm_asterisk:password@10.0.10.30/ast_asterisk~3600allowguest=yes ;bindport=5060context=incoming-sipindaddr=0.0.0.0[office-phones](!)type=friendcontext=outcoming-sipsecret=passwordhost=dynamicnat=noqualify=yescanreinvite=nocallgroup=1pickupgroup=1dtmfmode=autodisallow=allallow=g722[001](office-phones)callerid="Менеджер 1" <800>[002](office-phones)callerid="Менеджер 2" <801>[003](office-phones)t38pt_udptl=yescallerid="Факс ALM" <802>disallow=allallow=alawallow=ulaw[ast_asterisk]type=friendsecret=passwordcontext=ast_incominghost=dynamicqualify=nodtmfmode=rfc2833disallow=allallow=ulaw
Файл /etc/asterisk/extensions.conf
[alm-local-phones]exten => 800,1,Log(NOTICE,"800 ACCOUNT")exten => 800,2,Dial(SIP/001,120,Tt)exten => 801,1,Log(NOTICE,"801 ACCOUNT")exten => 801,2,Dial(SIP/002,120,Tt)exten => 802,1,Log(NOTICE,"802 ACCOUNT")exten => 802,2,Dial(SIP/003,120,Tt)[handup-sip]exten => _X!,1,HangUp()[outcoming-sip]include => alm-local-phonesinclude => ast-local-phonesinclude => handup-sip[ast-local-phones]exten => 500,1,Dial(SIP/ast_asterisk/500,120,Tt)exten => 501,1,Dial(SIP/ast_asterisk/501,120,Tt)exten => 502,1,Dial(SIP/ast_asterisk/502,120,Tt)[ast_incoming]include => alm-local-phonesinclude => handup-sip
Сервер города Астаны
Файл /etc/asterisk/sip.conf
[general]register => ast_asterisk:password@10.0.10.20/alm_asterisk~3600allowguest=yes ;bindport=5060context=incoming-sipindaddr=0.0.0.0[office-phones](!)type=friendcontext=outcoming-sipsecret=passwordhost=dynamicnat=noqualify=yescanreinvite=nocallgroup=1pickupgroup=1dtmfmode=autodisallow=allallow=g722[001](office-phones)callerid="Менеджер 1" <500>[002](office-phones)callerid="Менеджер 2" <501>[003](office-phones)t38pt_udptl=yescallerid="Факс AST" <502>disallow=allallow=alawallow=ulaw[alm_asterisk]type=friendsecret=passwordcontext=alm_incominghost=dynamicqualify=nodtmfmode=rfc2833disallow=allallow=ulaw
Файл /etc/asterisk/extensions.conf
[ast-local-phones]exten => 500,1,Log(NOTICE,"500 ACCOUNT")exten => 500,2,Dial(SIP/001,120,Tt)exten => 501,1,Log(NOTICE,"501 ACCOUNT")exten => 501,2,Dial(SIP/002,120,Tt)exten => 502,1,Log(NOTICE,"502 ACCOUNT")exten => 502,2,Dial(SIP/003,120,Tt)[handup-sip]exten => _X!,1,HangUp()[outcoming-sip]include => ast-local-phonesinclude => alm-local-phonesinclude => handup-sip[alm-local-phones]exten => 800,1,Dial(SIP/alm_asterisk/800,120,Tt)exten => 801,1,Dial(SIP/alm_asterisk/801,120,Tt)exten => 802,1,Dial(SIP/alm_asterisk/802,120,Tt)[alm_incoming]include => ast-local-phonesinclude => handup-sip
ИТОГО: Пользователи каждого города, могут звонить друг другу по внутренним номерам. А также доступна связь между городами - алматинский пользователь без проблем звонит астанинскому абоненту набрав его номер и наоборот - астанинский пользователь звонит в Алматы набрав внутренний номер. Номерной план вн. номеров Алматы 800-810 и Астаны 500-510.
Провайдерский сервер
Файл /etc/asterisk/sip.conf
[client-phones](!)type=friendcontext=outcoming-sipsecret=passwordhost=dynamicnat=noqualify=yescanreinvite=nocallgroup=1pickupgroup=1dtmfmode=autodisallow=allallow=g722[2755343](client-phones)callerid="Almaty 1" <2755343>[2755344](client-phones)callerid="Almaty 2" <2755344>[3755222](client-phones)callerid="Astana 1" <3755222>[3755333](client-phones)callerid="Astana 2" <3755333>
Файл /etc/asterisk/extensions.conf
[client-local-phones]exten => 2755343,1,Log(NOTICE,"2755343 ACCOUNT")exten => 2755343,2,Dial(SIP/2755343,120,Tt)exten => 2755344,1,Log(NOTICE,"2755344 ACCOUNT")exten => 2755344,2,Dial(SIP/2755344,120,Tt); Astana phonesexten => 3755222,1,Log(NOTICE,"3755222 ACCOUNT")exten => 3755222,2,Dial(SIP/3755222,120,Tt)exten => 3755333,1,Log(NOTICE,"3755222 ACCOUNT")exten => 3755333,2,Dial(SIP/3755222,120,Tt)[handup-sip]exten => _X!,1,HangUp()[outcoming-sip]include => client-local-phonesinclude => handup-sip
ИТОГО: Для начала мы дали городские номера для Алматы 2755343 и 2755344. А также дали номера 3755222 и 3755333 для Астаны. Эти номера пока без префиксов.
Прописываем городские номера на сервере в Астане и Алматы
Теперь прописываем регистрацию внешних SIP номеров в городе Астана:
[general]register => 3755222:password@10.0.10.10/3755222~3600register => 3755333:password@10.0.10.10/3755333~3600
И добавляем:
[id-phone](!)type=peercontext=defaulthost=10.0.10.10fromdomain=10.0.10.10port=5060insecure=port,invitecanreinvite=noqualify=3600[3755222](id-phone)disallow=allallow=g729allow=alaw;allow=ulawdefaultuser=3755222fromuser=3755222secret=password[3755333](id-phone)disallow=allallow=g729allow=alaw;allow=ulawdefaultuser=3755333fromuser=3755333secret=password
Теперь прописываем регистрацию внешних SIP номеров в городе Алматы:
[general]register => 2755343:password@10.0.10.10/2755343~3600register => 2755344:password@10.0.10.10/2755344~3600
И добавляем:
[id-phone](!)type=peercontext=defaulthost=10.0.10.10fromdomain=10.0.10.10port=5060insecure=port,invitecanreinvite=noqualify=3600[2755343](id-phone)disallow=allallow=g729allow=alaw;allow=ulawdefaultuser=2755343fromuser=2755343secret=password[2755344](id-phone)disallow=allallow=g729allow=alaw;allow=ulawdefaultuser=2755344fromuser=2755344secret=password
[incoming_idphone]exten => s,1,Answer()exten => s,n,Ringing()exten => s,n,Queue(welcome,n,,,12)exten => s,n,GotoIfTime(19:15-8:00,*,*,*?allRing:default)exten => s,n(allRing),NoOp()exten => s,n,Queue(allNoFaxes,r,,,600)exten => s,n,HangUp()exten => s,n(default),NoOp()exten => s,n,Queue(secretary,r,,,6)exten => s,n,Queue(alm-manager1,r,,,10)exten => s,n,Queue(ast-managers,r,,,600)include => handup-sip[incoming_idphone2]exten => s,1,Answer()exten => s,n,Ringing()exten => s,n,Queue(welcome,n,,,12)exten => s,n,GotoIfTime(19:15-8:00,*,*,*?allRing:default)exten => s,n(allRing),NoOp()exten => s,n,Queue(allNoFaxes,r,,,600)exten => s,n,HangUp()exten => s,n(default),NoOp()exten => s,n,Queue(secretary,r,,,6)exten => s,n,Queue(alm-manager1,r,,,10)exten => s,n,Queue(ast-managers,r,,,600)include => handup-sip
Добавляем очередь /etc/asterisk/queues.conf для города Астана
[welcome]strategy = ringallmusicclass=welcomecontext=all-local-sip[secretary]strategy = ringallmusicclass=defaultcontext=all-local-sip; Секретарьmember => SIP/ast_asterisk/550,1[ast-managers]strategy = ringallmusicclass=defaultcontext=all-local-sip; Менеджерыmember => SIP/ast_asterisk/500,1member => SIP/ast_asterisk/501,1; (… и т. д.)[alm-manager1]strategy = ringallmusicclass=defaultcontext=all-local-sip; Алматинские менеджерыmember => SIP/001,1
Ссылки:
1. http://asterisk.ru/knowledgebase/Asterisk+config+sip.conf