PLIKIW domyślnej instalacji Asterisk, pliki konfiguracyjne znajdują się w:
/etc/asterisk
Główne pliki konfiguracyjne to:
asterisk.conf - informacje o lokalizacji plików i folderów,
cdr_mysql.conf - definicja połączenia MySQL dla rejestru połączeń
cdr_pgsql.conf - definicja połączenia PostgreSQL dla rejestru połączeń
chan_dahdi.conf - konfiguracja kart rozszerzeń dla połączeń np. PSTN
extconfig.conf - definicje mapowania bazy danych dla trybu RealTime
extensions.conf - plik z dialplanem, definiowanie obsługi połączeń
features.conf - plik z definicjami kodów DTMF dla przełączania połączeń itp.
iax.conf - definicje użytkoników i trunk-ów z sygnalizacją protokołem IAX
manager.conf - definiowanie użytkowników do zdalnego zarządzania centralą
meetme.conf - definiowanie numerów i pinów dla pokoi konferencyjnych
modules.conf - definiowanie jakie moduły mają lub nie mają być łądowane podczas uruchamiania
musiconhold.conf - definiowanie dodatkowych muzyczek na czekanie, zamiast sygnału w słuchawce
queues.conf - definiowanie kolejek dla połączeń przychodzących, często zwanych CallCenter
res_mysql.conf - definiowanie bazy danych dla trybu RealTime w MySQL
res_pgsql.conf - definiowanie bazy danych dla trybu RealTime w PostgreSQL
rtp.conf - zakres portów dla strumienia głosowego protokołu RTP
sip.conf - definicje użytkoników i trunk-ów z sygnalizacją protokołem SIP
voicemail.conf - definiowanie skrzynek dla poczty głosowej
Plik konfiguracji dla sterownika DAHDI:
/etc/dahdi/system.conf
cdr_mysql.conf
[global]
hostname=database.host.name
dbname=asteriskcdrdb
table=cdr
password=password
user=asteriskcdruser
port=3306
;sock=/tmp/mysql.sock
Podajemy dane dostępowe go bazy danych gdzie jest tabela CDR w postaci:
CREATE TABLE `cdr` (
`calldate` datetime NOT NULL default '0000-00-00 00:00:00',
`clid` varchar(80) NOT NULL default '',
`src` varchar(80) NOT NULL default '',
`dst` varchar(80) NOT NULL default '',
`dcontext` varchar(80) NOT NULL default '',
`channel` varchar(80) NOT NULL default '',
`dstchannel` varchar(80) NOT NULL default '',
`lastapp` varchar(80) NOT NULL default '',
`lastdata` varchar(80) NOT NULL default '',
`duration` int(11) NOT NULL default '0',
`billsec` int(11) NOT NULL default '0',
`disposition` varchar(45) NOT NULL default '',
`amaflags` int(11) NOT NULL default '0',
`accountcode` varchar(20) NOT NULL default '',
`userfield` varchar(255) NOT NULL default ''
);
ALTER TABLE `cdr` ADD `uniqueid` VARCHAR(32) NOT NULL default '';
ALTER TABLE `cdr` ADD INDEX ( `calldate` );
ALTER TABLE `cdr` ADD INDEX ( `dst` );
ALTER TABLE `cdr` ADD INDEX ( `accountcode` );
Jeżeli baza jest na localhost, wprowadzamy Socket z pliku /etc/mysql/my.cnf:
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
chan_dahdi.conf
Definicja analogowej karty FXO w oparciu o modem Motorolla:
[trunkgroups]
[channels]
context=default
usecallerid=yes
hidecallerid=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes
echocancel=no
echocancelwhenbridged=no
relaxdtmf=yes
rxgain=0.0
txgain=0.0
group=1
callgroup=1
pickupgroup=1
callprogress=no
immediate=no
context=from-motorola
signalling=fxs_ls
channel => 1
Plik /etc/dahdi/system.conf:
fxsls=1
loadzone = pl
defaultzone = us
extconfig.conf
Definiujemy pracę z bazą danych, wszystkie wpisy z plików konfiguracyjnych mogą
zostać przeniesione do bazy danych, przez co ich edycja ma wpływ na rzeczywistą pracę centrali,
bez potrzeby przeładowywania jej konfiguracji jak ma to miejsce po edycji plików tekstowych.
Należy zmapować odpowiednie tabele.
Przykład dla silnika MySQL oraz bazy danych "mojagwiazda":
sippeers => mysql,mojagwiazda,sip_buddies
sipusers => mysql,mojagwiazda,sip_buddies
queues => mysql,mojagwiazda,queue_table
queue_members => mysql,mojagwiazda,queue_member_table
voicemail => mysql,mojagwiazda,voicemail_users
extensions => mysql,mojagwiazda,extensions_table
Aby asterisk zaczał korzystać z tych tabel należy wskazać miejsce bazy danych w pliku
res_mysql.conf.
extensions.conf
Przykłądowa definicja połączenia przychodzącego na linię analogową na modemie Motorolla,
gdzie połączenie jest odebrane, odtworzony jest komunikat powitalny, następnie połączenie
zostaje skierowane po protokole SIP do użytkownika "andrzej007". W definicji karty
połączenia przychodzące trafiają do kontekstu "from-motorola":
[from-motorola]
exten => s,1,Answer()
exten => s,2,Wait(2)
exten => s,3,Playback(powitanie)
exten => s,4,Dial(SIP/andrzej007,,)
Definicja kontekstu dla połączń wywchodzących przez linię analogową modemem Motorolla,
dla użytkownika andrzej007, który ma zdefiniowany kontekst dla połączeń
wychodzących "grupa-technicy":
[grupa-technicy]
exten => _X.,1,Dial(DAHDI/1/${EXTEN},,)
Ponieważ jest to tylko jedna linia anlogowa, a więc jeden kanał mamy: /1/.
Dla łącza typu PRA gdzie linii jest 30, można zdefiniować w pliku dla DAHDI
grupę i zrobić dzwonienie przez dowolną wolną linię np.:
exten => _X.,1,Dial(DAHDI/g1/${EXTEN},,)
features.conf
[general]
parkext => 700 ; What extension to dial to park (all parking lots)
parkpos => 701-720 ; What extensions to park calls on. (defafult parking lot)
[featuremap]
;blindxfer => #1 ; Blind transfer (default is #) - przełączenie na ślepo,
;disconnect => *0 ; Disconnect (default is *) - rozłączenie połączenia z przełączonej rozmowy,
;automon => *1 ; One Touch Record a.k.a. Touch Monitor - włączenie nagrywania dla rozmowy,
;atxfer => *2 ; Attended transfer - przełączenie z wcześniejszą rozmową z osobą docelową,
;parkcall => #72 ; Park call (one step parking) - połączenia zaparkowane,
;automixmon => *3 ; One Touch Record a.k.a. Touch MixMonitor - włączenie nagrywania dla rozmowy,
Można zdefiniować własne zamiast domyślnych kody DTMF służące do przełączania połączeń,
automatycznego odbierania połączeń, parkowania połączeń, czasy reakcji na stukanie DTMF itp.
iax.conf
Przykładowy wpis dla użytkownika, który rejestruje się do Asteriska poprzez IAX:
[andrzej007]
type=friend
host=dynamic
secret=hasło
context=grupa-technicy
Przykładowy wpis dla IAX Trunk z oddziałem w Katowicach:
[katowice]
type=peer
host=192.168.2.200
requirecalltoken=no
username=katowice
secret=hasełko
auth=plaintext
context=polaczenia_katowice
peercontext=polaczenia_katowice
qualify=yes
trunk=yes
disallow=all
allow=alaw
allow=ulaw
allow=gsm
Wpis na serwerze w Katowicach przyjmujący połączenia:
[katowice]
type=user
requirecalltoken=no
host=192.168.3.300
secret=hasełko
context=polaczenia_katowice
peercontext=polaczenia_katowice
auth=plaintext
disallow=all
allow=alaw
qualify=yes
Wywołanie numeru w katowicach:
exten => _X.,1,Dial(IAX2/katowice/${EXTEN},,)
Odebranie połączenia w Katowicach kierowane do kolejki,
a połączenia na 1000 po SIP do "andrzej007":
[polaczenia_katowice]
exten => 1000,1,Dial(SIP/andrzej007,,)
exten => _X.,1,Queue(kolejka)
manager.conf
[general]
enabled = yes
port = 5038
[andrzej]
secret = hasełko
deny=0.0.0.0/0.0.0.0
permit=209.16.236.73/255.255.255.0
read = system,call,log,verbose,command,agent,user,config
write = system,call,log,verbose,command,agent,user,config
Włączenie managera "enabled=yes" i stworzenie użytkownika [andrzej],
umożliwi dostęp poprzez telnet na port 5038 do inteface AMI,
czyli managera umożliwiającego zdalne zarządzanie oprogramowanie Asterisk.
Dzięki wykonywaniu specjalnych komend, można sprawdzać status zarejestrowancych
bramke, rozłączać kanały, przełączać połączenia itp.
Dostępne komendy:
http://www.voip-info.org/wiki/view/Asterisk+manager+API
meetme.conf
Można zdefiniować numer pokoju konferencyjnego oraz pin dostępu:
[general]
[rooms]
conf => 1234
conf => 2345,9938
Pokój 1234 bez PINu oraz 2345 z pinem 9938.
Aby dostać się do pokoju, należy w extensions.conf zdefiniować dla niego
jakiś numer wewnętrzny np. 2000:
[grupa-technicy]
exten => 2000,1,Meetme(1234)
modules.conf
Można wyłączyć np. ładowanie kanału IAX przez dodanie linii:
noload => chan_iax2.so
Wtedy po przeładowaniu konfiguracji Asterisk nie będzie brał pod uwagę wpisów z iax.conf.
musiconhold.conf
Aby utworzyć własną muzykę zamiast sygnału dzwonienia należy utworzyć folder z jej nazwą np.:
root# mkdir /var/lib/asterisk/moh/vangelis
Wgrać do tego folderu utwór najlepiej WAV lub przerobiony do odpowiedniego kodeka PCM,
dodać wpis do musiconhold.conf:
[vangelis]
mode=files
directory=/var/lib/asterisk/moh/vangelis
Muzyka będzie dostępna jako etykieta [nazwa] w dialplane extensions.conf np.:
exten => 2010,1,MusicOnHold(vangelis)
lub zamiast sygnału dzwonienia:
exten => _X.,1,Dial(DAHDI/1/${EXTEN},,m(vangelis))
queues.conf
Aby zdefiniować kolejkę, która obsługuje połączenia przychodzące, odtwarza komunikaty
osobom oczekującym na połączenie z konsultantem o ich miejscu w kolejce należy dodać wpis:
[kolejka]
setinterfacevar = yes
timeout = 15
announce-frequency = 15
announce-holdtime = yes
queue-youarenext = queue-youarenext
queue-thereare = queue-thereare
queue-callswaiting = queue-callswaiting
queue-holdtime = queue-holdtime
queue-minutes = queue-minutes
queue-seconds = queue-seconds
queue-thankyou = queue-thankyou
queue-reporthold = queue-reporthold
strategy = rrmemory
member => SIP/andrzej007,1
Połączenia przychodzące trafią do kolejki "kolejka" obsługiwanej przez usera "andrzej007"
exten => s,1,Queue(kolejka)
res_mysql.conf
Definicja połączenia z bazą danych przygotowaną dla trybu pracy RealTime:
[general]
dbhost=localhost
dbname=mojagwiazda
dbuser=asterisk
dbpass=hasło
;dbport=3306
dbsock = /var/run/mysqld/mysqld.sock
W zależności czy localhost, czy zdalna baza danych połączenie albo po Socket,
albo przez port.
rtp.conf
Definicja zakresu portów RTP dla transmisji głosowych:
[general]
rtpstart=10000
rtpend=20000
Standardowo zakres UDP 10000 do 20000
sip.conf
Definicja użytkownika, który zarejestruje się po SIP do centrali i będzie wykonywał
połączenia w kontekscie "grupa-technicy":
[andrzej007]
defaultusername=andrzej007
secret=hasełko
type=friend
nat=yes
host=dynamic
disallow=all
allow=alaw
allow=ulaw
allow=gsm
context=grupa-technicy
voicemail.conf
Przy poprawnie zainstalowanym serwerze poczty wysyłającym wiadomości e-mail,
możemy zdefiniować skrzynkę dla poczty głosowej poprzez wpisy:
[andrzej]
123 => 1111,andrzej,andrzej.ciupek@asterisk.edu.pl,,attach=yes|delete=yes
Wiadomości, które trafią do tej skrzynki zostaną wysłane na zadany e-mail,
następnie skasowane z serwera, aby nagrać wiadomość na tej skrzynce należy dodać wpis:
exten => 1000,1,Dial(SIP/andrzej007,20,r)
exten => 1000,2,Voicemail(u,123@andrzej)
Gdy połączenie będzie nieodbierane przez 20 sekund trafi na skrzynkę 123 w kontekscie andrzej,
z komunikatem "u" czyli Unavail, może być "b" z komunikatem Busy, lub "s" bez komunikatu,
wtedy linijkę wyżej warto dać własny:
exten => 1000,1,Dial(SIP/andrzej007,20,r)
exten => 1000,2,Playback(jestem_zajety)
exten => 1000,3,Voicemail(s,123@andrzej) |