Salon Optyczny Joanna Jarzyna
dj_ndc_photo

PRZYKŁADY

Za przykład zastosowania centralki Asterisk posłuży konfiguracja następującego
scenariusza:

Firma posiada dwa oddziały (bielsko i katowice), każdy oddział posiada swojego Asteriska, 
oba będą połączone IAX Trunkiem w celu połączeń wewnętrznych między oddziałami.
Konfiguracje obu oddziałów będą identyczne.
Bielsko przyjmie numerację wewnętrznych 100, Katowice 200.
Każdy oddział będzie miał numer miejski u operatora VoIP oraz usługi:

- pocztę głosową użytkowników
- fax
- kolejkę połączeń dla sekretariatu
- pokój konferencyjny dla oddziału i wspólny dla obu
- nagrywanie połączeń
- zapowiedź powitalną
- własną muzykę na czekanie


SERWER Bielsko:

sip.conf: register => andrzej007:haslovoip@sip.serwer.pl/339876543 ... ... [sipout] type = friend defaultuser = andrzej007 secret = haslovoip host = sip.serwer.pl insecure = port,invite nat = yes qualify = yes canreinvite = no canredirect = no disallow = all allow = alaw allow = gsm allow = ulaw allow = g729 allow = g723 allow = g726 [user_100] defaultusername=user_100 secret=pass100 type=friend nat=yes host=dynamic disallow=all allow=alaw allow=ulaw allow=gsm context=main_dialplan [user_101] defaultusername=user_101 secret=pass101 type=friend nat=yes host=dynamic disallow=all allow=alaw allow=ulaw allow=gsm context=main_dialplan [user_102] defaultusername=user_102 secret=pass102 type=friend nat=yes host=dynamic disallow=all allow=alaw allow=ulaw allow=gsm context=main_dialplan iax.conf: [katowice] type=user requirecalltoken=no host=192.168.1.113 secret=hasełkokatowice context=polaczenia_z_katowic peercontext=polaczenia_z_katowic auth=plaintext disallow=all allow=alaw qualify=yes [do_katowic] type=peer host=192.168.1.113 requirecalltoken=no username=bielsko secret=hasełkobb auth=plaintext context=polaczenia_z_bielska peercontext=polaczenia_z_bielska qualify=yes trunk=yes disallow=all allow=alaw allow=ulaw allow=gsm extensions.conf: [default] exten => 339876543,1,Goto(sekretariat,s,1) [sekretariat] exten => s,1,Answer() exten => s,2,Wait(1) exten => s,3,Background(powitanie) exten => s,4,WaitExten(3) exten => t,1,Goto(sekretariat_konsultant,100,1) exten => i,1,Goto(sekretariat,s,3) exten => 100,Goto(sekretariat_konsultant,100,1) exten => 101,Goto(sekretariat_konsultant,101,1) exten => 102,Goto(sekretariat_konsultant,102,1) [sekretariat_konsultant] exten => _X.,1,MixMonitor(${CALLERID(num)}_${STRFTIME(${EPOCH},GMT+8,%C%y%m%d%H%M)}.WAV,b) exten => _X.,2,Dial(SIP/user_${EXTEN},30,rjt) exten => _X.,3,Queue(konsultanci,t) exten => _X.,4,Hangup() [main_dialplan] exten => _1XX,1,Dial(SIP/user_${EXTEN},25,rtT) exten => _1XX,2,VoiceMail(${EXTEN}@skrzynki,u) exten => _1XX,3,Hangup() exten => _2XX,1,Dial(IAX2/do_katowic/${EXTEN},,rtT) exten => _2XX,2,Hangup() exten => _X.,1,MixMonitor(${CALLERID(num)}_${STRFTIME(${EPOCH},GMT+8,%C%y%m%d%H%M)}.WAV,b) exten => _X.,2,Dial(SIP/${EXTEN}@sipout,,) exten => _X.,3,Hangup() exten => 1000,1,Meetme(1000) exten => 2000,1,Dial(IAX2/do_katowic/${EXTEN},,rtT) exten => 3000,1,Meetme(3000) exten => 500,1,VoiceMailMain(@skrzynki) exten => 600,1,ReceiveFAX(/var/spool/asterisk/fax/${CALLERID(num)}_${STRFTIME(${EPOCH},GMT+8,%C%y%m%d%H%M)}.tif) [polaczenia_z_katowic] exten => _1XX,1,Goto(main_dialplan,${EXTEN},1) exten => 1000,1,Goto(main_dialplan,1000,1) exten => _X.,1,Congestion() meetme.conf: conf => 1000,1234 conf => 3000,4321 voicemail.conf: [skrzynki] 100 => 1234,user 100,,, 101 => 5678,user 101,,, 102 => 9876,user 102,,, queues.conf: [konsultanci] wrapuptime = 5 musiconhold = queen strategy = ringall timeout = 20 member => SIP/user_101,1 member => SIP/user_102,2 member => SIP/user_103,3 musiconhold.conf: [queen] mode=files directory=moh/queen SERWER Katowice:
sip.conf: register => andrzej008:haslovoip@sip.serwer.pl/321234567 ... ... [sipout] type = friend defaultuser = andrzej008 secret = haslovoip host = sip.serwer.pl insecure = port,invite nat = yes qualify = yes canreinvite = no canredirect = no disallow = all allow = alaw allow = gsm allow = ulaw allow = g729 allow = g723 allow = g726 [user_200] defaultusername=user_200 secret=pass200 type=friend nat=yes host=dynamic disallow=all allow=alaw allow=ulaw allow=gsm context=main_dialplan [user_201] defaultusername=user_201 secret=pass201 type=friend nat=yes host=dynamic disallow=all allow=alaw allow=ulaw allow=gsm context=main_dialplan [user_202] defaultusername=user_202 secret=pass202 type=friend nat=yes host=dynamic disallow=all allow=alaw allow=ulaw allow=gsm context=main_dialplan iax.conf: [bielsko] type=user requirecalltoken=no host=192.168.1.112 secret=hasełkobb context=polaczenia_z_bielska peercontext=polaczenia_z_bielska auth=plaintext disallow=all allow=alaw qualify=yes [do_bielska] type=peer host=192.168.1.112 requirecalltoken=no username=katowice secret=hasełkokatowice auth=plaintext context=polaczenia_z_katowic peercontext=polaczenia_z_katowic qualify=yes trunk=yes disallow=all allow=alaw allow=ulaw allow=gsm extensions.conf: [default] default => 321234567,1,Goto(sekretariat,s,1) [sekretariat] exten => s,1,Answer() exten => s,2,Wait(1) exten => s,3,Background(powitanie) exten => s,4,WaitExten(3) exten => t,1,Goto(sekretariat_konsultant,200,1) exten => i,1,Goto(sekretariat,s,3) exten => 200,Goto(sekretariat_konsultant,200,1) exten => 201,Goto(sekretariat_konsultant,201,1) exten => 202,Goto(sekretariat_konsultant,202,1) [sekretariat_konsultant] exten => _X.,1,MixMonitor(${CALLERID(num)}_${STRFTIME(${EPOCH},GMT+8,%C%y%m%d%H%M)}.WAV,b) exten => _X.,2,Dial(SIP/user_${EXTEN},30,rjt) exten => _X.,3,Queue(konsultanci,t) exten => _X.,4,Hangup() [main_dialplan] exten => _2XX,1,Dial(SIP/user_${EXTEN},25,rtT) exten => _2XX,2,VoiceMail(${EXTEN}@skrzynki,u) exten => _2XX,3,Hangup() exten => _1XX,1,Dial(IAX2/do_bielska/${EXTEN},,rtT) exten => _1XX,2,Hangup() exten => _X.,1,MixMonitor(${CALLERID(num)}_${STRFTIME(${EPOCH},GMT+8,%C%y%m%d%H%M)}.WAV,b) exten => _X.,2,Dial(SIP/${EXTEN}@sipout,,) exten => _X.,3,Hangup() exten => 2000,1,Meetme(2000) exten => 1000,1,Dial(IAX2/do_bielska/${EXTEN},,rtT) exten => 3000,1,Meetme(3000) exten => 500,1,VoiceMailMain(@skrzynki) exten => 600,1,ReceiveFAX(/var/spool/asterisk/fax/${CALLERID(num)}_${STRFTIME(${EPOCH},GMT+8,%C%y%m%d%H%M)}.tif) [polaczenia_z_bielska] exten => _2XX,1,Goto(main_dialplan,${EXTEN},1) exten => 2000,1,Goto(main_dialplan,2000,1) exten => _X.,1,Congestion() meetme.conf: conf => 2000,1234 conf => 3000,4321 voicemail.conf: [skrzynki] 200 => 1234,user 200,,, 201 => 5678,user 201,,, 202 => 9876,user 202,,, queues.conf: [konsultanci] wrapuptime = 5 musiconhold = queen strategy = ringall timeout = 20 member => SIP/user_201,1 member => SIP/user_202,2 member => SIP/user_203,3 musiconhold.conf: [queen] mode=files directory=moh/queen
Opis: Obie lokalizacje mają przyjęty dialplan z numeracją wewnętrznych 100 oraz 200. Wybranie numeru w danej lokalizacj powoduje połączenie lokalnie po SIP do zadanego usera. Dla Katowic 200: exten => _2XX,1,Dial(SIP/user_${EXTEN},25,rtT) exten => _2XX,2,VoiceMail(${EXTEN}@skrzynki,u) exten => _2XX,3,Hangup() Jeżeli połączenie jest nieodebrane trafi na skrzynkę głosową zadanego numeru. Dla Katowic wybierając numery 3 cyfrowe zaczynające się od 1 trafią po IAX2 do Bielska: exten => _1XX,1,Dial(IAX2/do_bielska/${EXTEN},,rtT) exten => _1XX,2,Hangup() Zostaną odebrane w Bielsku w kontekscie "polaczenia_z_katowic": [polaczenia_z_katowic] exten => _1XX,1,Goto(main_dialplan,${EXTEN},1) exten => 1000,1,Goto(main_dialplan,1000,1) exten => _X.,1,Congestion() Widać, że Bielsko i Katowice mają samodzielne pokoje konferencyjne pod 3000: exten => 3000,1,Meetme(3000) Natomiast 1000 to pokój dla Bielska, do którego mogą się dodzwonić Katowice: exten => 1000,1,Dial(IAX2/do_bielska/${EXTEN},,rtT) i odwrotnie 2000 pokój dla Katowic, do którego może się dodzwnić Bielsko. Dzwoniąc pod 500 możemy po podaniu numeru skrzynki oraz pinu z pliku voicemail.conf odsłuchać i sprawdzić pocztę głosową dla skrzynek z kontekstu "skrzynki": exten => 500,1,VoiceMailMain(@skrzynki) Wszystkie numery dłuższe, a więc _X. trafią na nasz SIP Trunk z operatorem, zdefiniowanym jako sipout w pliku sip.conf. Połączenia są rejestrowane za pomocą funkcji MixMonitor(): exten => _X.,1,MixMonitor(${CALLERID(num)}_${STRFTIME(${EPOCH},GMT+8,%C%y%m%d%H%M)}.WAV,b) exten => _X.,2,Dial(SIP/${EXTEN}@sipout,,) exten => _X.,3,Hangup() Pod wewnętrznym 600 jest dostępny sygnał FAX-u, gdyby ktoś do nas zadzwonił i dał sygnał FAX-u, możemy przełączyć połączenie na 600, gdzie FAX zostanie odebrany do pliku tif: exten => 600,1,ReceiveFAX(/var/spool/asterisk/fax/${CALLERID(num)}_${STRFTIME(${EPOCH},GMT+8,%C%y%m%d%H%M)}.tif) Połączenia przychodzące na numer uzyskany u operatora trafią do kontekstu: [sekretariat_konsultant] exten => _X.,1,MixMonitor(${CALLERID(num)}_${STRFTIME(${EPOCH},GMT+8,%C%y%m%d%H%M)}.WAV,b) exten => _X.,2,Dial(SIP/user_${EXTEN},30,rjt) exten => _X.,3,Queue(konsultanci,t) exten => _X.,4,Hangup() Gdzie rónież zaczynamy nagrywać rozmowę, gdy połączenie będzie nieodebrane przez 30 sekund przez domyślnego konsultanta 100 dla Bielska lub 200 dla Katowic połączenie trafi do kolejki, gdzie będą odzywały się wszyscy użytkownicy w strategii "ringall". W kolejce jest podłączona muzyka "queen", którą należy wgrać jako WAV do folderu: /var/lib/asterisk/moh/queen Zdefiniowana jako: [queen] mode=files directory=moh/queen