V tomto článku si prebehneme inštaláciu CentOS 7 s Asterisk 13 a na ňom postavíme IVR. Inými slovami, rozbeháme si vlastné Call Centrum.
Call centrum – Inštalácia CentOs, Asterisk a FreePBX
Na tomto blogu si myslím, že nejak extra netreba Asterisk predstavovať. Teóriu preskočíme a vrhneme sa hneď na konfiguráciu IVR (Interactive voice response).
Princíp IVR
Užívateľ vytočí nejaké telefónne číslo. Tam sa ozve hlasový robot, ktorý povie nejakú hlášku, aby bolo zreteľne počuť stlačte 1 alebo 2 alebo 3 a tak ďalej. (Na obr. sú vyznačené 3 pracovné skupiny) Tie čísla sú skupiny ľudí, s ktorými budete po stlačení čísla na telefóne spojený. Ide o bežnú funkcionalitu pre call centrum.
Inštalácia Cent OS 7
Vytvoríte 5 partícií
/ koreňový adresár, súborového systému čiže root
/var premenné dáta
/opt program tretích strán
/boot ukladá sa jadro a dáta nutné ku spusteniu systému.
/swap Virtuálna pamäť, systém si môže prehadzovať údaje o pamäti RAM a SWAP, napr. Keď dochádza miesto v RAM tak sa údaje, ktoré práve systém nepotrebuje sa presunú do SWAP. Prístup k dátam je ale pomalší pretože sú na disku a nie v pamäti.
Druhým využitím swap je pri hybernácii. Vtedy sa vezme všetko, čo sa nachádza v pamäti a vloží sa to do swap-u. Pri ďalšom boote sa to potom načíta zo swap-u na disk a máte systém tak ako ste ho zahybernovali.
/home Ak by sa na váš server prihlasovalo viacero užívateľov, vhodné by bolo vytvoriť aj /home. Home s užívateľskými údajmi vám zostane nedotknutý (niečo podobné, ako keď máte vo Windows-e disk D).
- Výber diskov
- Zvoľte “I will configure partitioning”
- Vyberte LVM
- Stlačte +
- Zvoľte možnosť /boot
Ja som použil EXT4 File system.
Troubleshooting. Pri vytváraní disku som neurobil SWAP. Tento bolo treba urobiť. Dali sme Swap 2 Gb. SWAP, na nových serveroch reálne nepotrebujete. Keď máte dostatok pamäte RAM, servery SWAP nevyužívajú.
Nastavenie siete
Aby sme nastavili sieť, musíme zistiť názov sieťovej karty. Správny názov sieťovky zistíte napr. jedným z nasledovných spôsobov.
- ip addr
- nmcli d
- nmtui (konfiguracia cez GUI)
Nastavenie sieťovej karty
Budeme editovať súbor nižšie.
vi /etc/sysconfig/network-scripts/ifcfg-en4s0
A môže vyzerať nasledovne.
DEVICE=enp3s0 ONBOOT=yes IPADDR=X.X.X.X (napr 192.168.1.1) NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=X.X.X.X
Reštart sieťovej karty:
service network restart
Asterisk – telefónna ústredňa pre naše call centrum
DAHDI je kolekcia open source ovládačov, ktoré používa Linux. Slúžia na prepojenie rôznym hardvérom, ktorý súvisí s telefóniou. Skladá sa z dvoch častí.
- DAHDI-Linux – obsahuje driver pre podporu hardvéru
- DAHDI-TOOLS – obsahuje výber pomôcok pre nastavenie ovládačov
- Jansson – Knižnica na kódovanie dekódovanie a manipuláciu s údajmi JNOS.
Zakážeme SELINUX
vim /etc/sysconfig/selinux
SELINUX=disabled
Následne reštartujeme server. Ak chceme vypnúť Selinux bez reštartu, môžeme to urobiť nasledovným spôsobom.
setenforce 0
dostanete hlášku:
Current mode: permissive
sestatus | grep "Current mode" setenforce 1
Pomocou príkazu nižšie zistíme, či je selinux zakázaný.
Sestatus
Security-Enhanced Linux
Je to nástroj pre zvýšenie počítačovej bezpečnosti. Umožňuje definovať oprávnenie k prevedeniu určitej operácie na úrovni jednotlivých procesov.
Inštalácia MariaDB
Nainštalujte MariaDB
yum install mariadb
Napíšte príkazy
systemctl enable
mariadb.service
systemctl start mariadb
Na verifikáciu môžete zadať príkaz.
service mariadb status
mysql_secure_installation
Pri ponuke vytvorenie hesla som políčko nechal prázdne. Len som stlačil enter. Toto je len príklad. Voľbu nechám na Vás. Ja som to chcel mať zabezpečené tak som to urobil následovne.
Remove anonymous users? [Y/n] [Y] – ak by sme povolili anonymné prihlásenie, tak by sa mohol hocikto pripojiť do mysql databázy. Využíva sa na testovacie účely.
set root password n
[Y] -
heslo pre roota
Disallow root login remotely? [Y/n] [Y] – „YES“, ak sa pripájate iba lokálne
Remove test database and access to it? [Y/n] [Y] – nepotrebujeme, testovaciu databázu
Reload privilege tables now? [Y/n] [Y] – urobíte týmto príkazom reload oprávnení, ktoré ste urobili vyššie.
Povolenie start Apache
mysql_secure_installation
systemctl enable httpd.service
systemctl start httpd.service
Pridanie užívateľa Asterisk
adduser asterisk -m -c "Asterisk User"
Inštalácia Asterisk
Aby sme spustili naše call centrum, budeme potrebovať nainštalovať virtuálnu telefónnu ústredňu.
cd /usr/src
wget http://downloads
.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
wget http://downloads
.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
wget http://downloads
.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
wget -O jansson.tar.gz
https://github.com/akheron/jansson/archive/v2.7.tar.gz
wget http://www
.pjsip.org/release/2.4/pjproject-2.4.tar.bz2
Kompilácia a inštalácia DAHDI
cd /usr/src tar xvfz dahdi-linux-complete-current.tar.gz tar xvfz libpri-current.tar.gz rm -f dahdi-linux-complete-current.tar.gz libpri-current.tar.gz cd dahdi-linux-complete-*
Musime ísť do priečinku.
cd /usr/src/ dahdi-linux-complete-3.0.0+3.0.0/
make all
Kompilacia a inštalácia pjproject
cd /usr/src
tar -xjvf pjproject-2.4.tar.bz2
rm -f pjproject-2.4.tar.bz2
cd pjproject-2.4
CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr --enable-shared --disable-sound
--disable-resample --disable-video --disable-opencore-amr --libdir=/usr/lib64
make dep
make
make install
Kompilácia a inštalácia jansson
cd /usr/src
tar vxfz jansson.tar.gz
rm -f jansson.tar.gz
cd jansson-*
autoreconf -i
./configure –libdir=/usr/lib64
make
make install
Kompilácia a inštalácia Asterisk
cd /usr/src
tar xvfz asterisk-13-current.tar.gz
rm -f asterisk-13-current.tar.gz
cd asterisk-*
contrib/scripts/install_prereq install
./configure –libdir=/usr/lib64
contrib/scripts/get_mp3_source.sh
make menuselect
Pri menuselect
Prvé problémy
Ďalšie kroky mi nechceli prejsť. Ak budete mať tieto problémy postupujte podľa krokov.
make make install make config ldconfig chkconfig asterisk off pri make res_pjsip/config_transport.c:982:24: error: ‘PJ_SSL_SOCK_MAX_CIPHERS’ undeclared (first use in this function)pj_ssl_cipher ciphers[PJ_SSL_SOCK_MAX_CIPHERS];
Tento script slúži na to, aby PJSIP existoval v rámci asterisk, a aby bolo možné použiť všetky jeho funkcie. Spustite tento script:
./configure --with-pjproject-bundled
Keď zbehol- Asterisk sa nainštaloval
Po vyzvaní zadajte príkaz:
make install
Potom zadajte:
make progdocs
Keď to zbehlo, tak ste nainštalovali Asterisk.
Inštalácia zvukových súborov
cd /var/lib/asterisk/sounds wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-en-wav-current.tar.gz wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-wav-current.tar.gz tar xvf asterisk-core-sounds-en-wav-current.tar.gz rm -f asterisk-core-sounds-en-wav-current.tar.gz tar xfz asterisk-extra-sounds-en-wav-current.tar.gz rm -f asterisk-extra-sounds-en-wav-current.tar.gz
Wideband Audio download
wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-en-g722-current.tar.gz wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-g722-current.tar.gz tar xfz asterisk-extra-sounds-en-g722-current.tar.gz rm -f asterisk-extra-sounds-en-g722-current.tar.gz tar xfz asterisk-core-sounds-en-g722-current.tar.gz rm -f asterisk-core-sounds-en-g722-current.tar.gz
Nastavenie vlastníckych práv Asterisk
chown asterisk. /var/run/asterisk
chown -R asterisk. /etc/asterisk
chown -R asterisk. /var/{lib,log,spool}/asterisk
chown -R asterisk. /usr/lib64/asterisk
chown -R asterisk. /var/www/
Inštalácia a konfigurácia k freePBX
Pred inštaláciou urobíme zopár malých modifikácií v Apache.
sed -i 's/(^upload_max_filesize = )./120M/' /etc/php.ini sed -i 's/^(User|Group)./1 asterisk/' /etc/httpd/conf/httpd.conf sed -i 's/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf
Po skončení úprav musíte službu reštartovať
systemctl restart
httpd.service
service httpd status
Stiahnutie a inštalácia FreePBX
Ak chceme našu telefónnu ústredňu a call centrum ovládať cez GUI, môžeme použiť aplikáciu FreePBX.
cd /usr/src
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz
tar xfz freepbx-13.0-latest.tgz
rm -f freepbx-13.0-latest.tgz
cd freepbx
./start_asterisk start
./install –n
Aby sa spustil Asterisk už priamo so systémom, treba zadať príkaz:
systemctl restart asterisk
systemctl enable asterisk
Ak to vypísalo nasledovnú chybovú hlášku
Unit freepbx.service could not be found.
Tak musíte napísať štartovací script:
vim /etc/systemd/system/freepbx.service
[Unit]
Description=FreePBX VoIP Server
After=mariadb.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/fwconsole start
ExecStop=/usr/sbin/fwconsole stop
[Install]
WantedBy=multi-user.target
A znovu zopakovať
systemctl restart asterisk
systemctl enable asterisk
Upgrade Framework
Po vytvorení, cez webový prehliadač, Asterisk vás vyzve, aby ste urobil upgrade framework.
fwconsole ma downloadinstall framework --tag 13.0.196.2 –edge
Konfigurácia firewallu – Bezpečnosť pre naše call centrum
vim /etc/sysconfig/iptables
*filter
:INPUT DROP (0:0)
:FORWARD DROP[0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -s x.x.x.x -j ACCEPT
-A INPUT -s x.x.x.x -j ACCEPT
-A INPUT -s x.x.x.x -j ACCEPT
-A INPUT -p tcp -m tcp –dport 443 -j ACCEPT
-A INPUT -p udp -m udp –dport 5060 -j ACCEPT
-A INPUT -p udp -m udp –dport 16384:32767 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
Trošku sa pokúsim priblížiť ako som nakonfiguroval firewall:
-A INPUT -p tcp -m tcp -m tcp –dport 80 -j ACCEPT – povolil som port 80, kvôli freePBX, pretože sa budeme pripájať cez webový prehliadač, kvôli konfigurácií IVR. (80 je HTTP protokol)
-A INPUT -p tcp -m tcp –dport 443 -j ACCEPT – povolil som (HTTPS protokol, webový prehliadač funguje na http a https)
-A INPUT -p udp -m udp –dport 5060 -j ACCEPT – keďže som konfiguroval telefónnu ústredňu, bolo potrebné povoliť port UDP. Cez tento port sa smeruje komunikácia protokol UDP. (UDP = User datagram procol)
-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT – Keď sa na server chceme pripájať cez SSH tak ho musíme povoliť, tiež. To uskutočníme týmto pravidlom.
-A INPUT -s x.x.x.x -j ACCEPT – Toto predstavuje zariadenia, s ktorými som chcel vrámci svojej siete komunikovať. Aby sa vedeli pripojiť na server musel som ich ako prvé vo firewalle povoliť.
Reštartujeme IPTABLES
service iptables stop
service iptables start
Konfigurácia klapiek a čísel cez GUI
SIP trunk
- V general si pomenujte Trunk Name.
- SIP Settings
Budujeme Call centrum, takže SIP trunk, IP adresu, heslo nám dodáva poskytovateľ (provider).
Ak si chcete overiť, či je sip trunk aktívny, môžete to urobiť príkazom:
asterisk –r
sip show peers
Riešenie problémov
Počas inštalácie a konfigurácie Asterisk-u mi nastalo niekoľko problémov. Tu je súpis problémov, na ktoré som narazil a presný popis na ich riešenie.
Aktívny JSIP bolo potrebné zmeniť na SIP
Mal som defaultne nastavený port PJSIP 5160 zmenil som to na sip 5060. Kvôli tomuto problému sa mi nechcel registrovať telefón.
- Settings
- Advance settings
- Nájdite SIP channel Driver
- Zmeňte to na chan_sip
Nájdite SIP NAT prepnite na yes
- Kliknite na submit
- Settings
- Asterisk SIP Settings
- Zvoľte chan SIP Settings
- Zadajte IP adresu Vašeho serveru
Bind Port zmeňte na 5060
- Submit
- Apply config
- Choďte do konzoly
- Reštartujte konzolu:
fwconsole restart
netstat -apn | grep asterisk
IVR – interakcia po dovolaní na call centrum
Keď sa volajúci dovolá na naše call centrum, budeme s ním chcieť interagovať cez tlačidlovú voľbu. Toto umožňuje IVR.
Hovor z vonku príde na Time Conditions. Ozve sa hlasový robot, kde máme pracovnú dobu od 8:00 – 10:00. Ak sa splnila podmienka počas pracovnej doby, IVR prehrá hlášku akú sme nastavili. Dôležité je, aby vo zvučke bolo počuť „stlačte 1 stlačte 2“ a pod.. To máme pomenované v „Ring Groups“.
V mojom prípade máme v ring groups urobené 2 čísla. S číslom 1 sa spojíme s VoIP skupinou 998. Ak stlačíme 2, hovor je smerovaný na 999. Ak sa zákazník netrafí do pracovnej doby, tak mu bude prehratá zvučka „Voláte mimo pracovnej doby“.
Ak sa dovoláme počas pracovnej doby, a stlačíme napríklad 1, hovor sa začne smerovať technikom na VoIP. Tento hovor bude smerovaný všetkým technikom, kým jeden z nich hovor nezdvihne.
Postup pri konfigurácií IVR
- Nahranie hlášok
- Nastavenie klapiek aj s číslami
- Nastavenie Time groups
- Nastavenie Time Conditions
- Nastavenie Ring groups
- Nastavenie Inbound Routes
Nahratie hlášok
- Zvoľte možnosť Admin a v ňom nájdite System recordings. Ja mám 3. Na názve nezáleží.
- Kliknite na Add Recording
- Dovolanie – Zvučka sa prehrá, keď sme v pracovnej dobe. Od 8:00 – 10:00
- Nevhodná doba – je čas mimo prevádzkovej doby
- Nemôže sa venovať – je zvučka, ktorá sa prehrá, keď stlačíme nejaké iné číslo okrem 1 a 2.
- Nahrajte hlášku
Nastavenie klapiek v asterisk-u
- Klapky vytvoríme cez GUI
- Nastavenie IVR
- Choďte do Applications a nájdite Extensions
- Klapku
- Display Name – užívateľské meno, ktoré sa bude zobrazovať
- Outbound CID – Vypĺňa sa vtedy, keď chceme vytvárať SIP trunk.
- Heslo
Nastavenie Time groups
- Vytvoríme si Time groups.
- Time groups je čas od kedy sa bude spúšťať hláška napr. „Víta vás naša firma“, ak chcete volať s naším ekonomickým stlačte 1 ak chcete volať s upratovačmi stlačte 2“. V našom prípade to je od 8:00 do 10. Ak sa dovoláme mimo týchto hodín prehrá sa hláška: Voláte mimo pracovnú dobu.
- Pomenujeme si Time group. Je jedno, ako si ju pomenujeme. V mojom prípade to bolo tg-8_10_work. A nastavíme si čas. Keďže pracovná doba je od 8:00 do 10:00. Time to Start 08:00 Time to finish 10:00
Nastavenie Ring groups
Vytvoríme si ring groups. Otvorte Applications a tam nájdite možnosť „Ring Groupe“. Ja som vytvoril 2 oddelenia. Na čísle 998 je oddelenie 1 a na číslo 999 oddelenie 2.
Neodporúčam používať heslo 1234, ale na testovanie to postačuje.
- Pri Ring Groupe je tlačítko Edit
Do správnej Ring groupe pridáme užívateľov, pomocou tlačítka User quick Select
A vyberieme užívateľov, ktorých chceme pridať do Ring Groupy.
Nastavenie Inbound Routes
Každý užívateľ má pridelené nejaké telefónne číslo a klapku. Keď pôjdeme do Connectivity a do Inbound Routes, nájdeme čísla, vrátene SIP čísla, s ktorým sa dovoláme do ústredne.
- Time Conditions je číslo s ktorým sa dovoláme do Call centra.
Ako pridáme novú hlášku?
- Zvučku pridáme do System recordings
- Potom prejdeme do IVR
V IVR v sekcii digits, robíme podmienky. Ak stlačíme 1 alebo 2, volá sa s oddelením, ktoré sme nastavili.
Prípadne, ak chceme nahrať zvučku príklad “ Prepáčte * (hviezdička) nieje povolený znak.“, môžeme tak urobiť v sekcii Digits. Len kliknete na Add Another Entry.
Ak vás tento článok zaujal a chcete dostávať mailovú notifikáciu, pri publikovaní podobných článkov o hackingu, sieťovej bezpečnosti, Linux serveroch, Cisco zariadeniach, či o programovaní, môžete sa prihlásiť na odber článkov.