Call Centrum – Návod na inštaláciu a konfiguráciu

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

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).

  1. Výber diskov
  2. Zvoľte “I will configure partitioning”
  3. Vyberte LVM
  4. Stlačte +
  5. 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

call centrum selinux

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
call centrum mysql
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

call centrum menu

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

  1. V general si pomenujte Trunk Name.
call centrum sip trunk
  • SIP Settings
call centrum sip settings
call centrum trunk

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.

  1. Settings
  2. Advance settings
  3. Nájdite SIP channel Driver
  4. Zmeňte to na chan_sip
call centrum settings 2

Nájdite SIP NAT prepnite na yes

call centrum sip nat
  1. Kliknite na submit
  2. Settings
  3. Asterisk SIP Settings
  4. Zvoľte chan SIP Settings
  5. Zadajte IP adresu Vašeho serveru

Bind Port zmeňte na 5060

call centrum sip settings 3
  1. Submit
  2. Apply config
  3. Choďte do konzoly
  4. 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

  1. Zvoľte možnosť Admin a v ňom nájdite System recordings. Ja mám 3. Na názve nezáleží.
  2. Kliknite na Add Recording
call centrum ivr 1
  • 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.
call centrum ivr2
  • Nahrajte hlášku
call centrum ivr 3

Nastavenie klapiek v asterisk-u

  1. Klapky vytvoríme cez GUI
  2. Nastavenie IVR
  3. Choďte do Applications a nájdite Extensions
  4. Klapku
  5. Display Name – užívateľské meno, ktoré sa bude zobrazovať
  6. Outbound CID – Vypĺňa sa vtedy, keď chceme vytvárať SIP trunk.
  7. Heslo
ivr 4

Nastavenie Time groups

  1. Vytvoríme si Time groups.
  2. 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.
  3. 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
ivr 5

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.

ivr 6

Neodporúčam používať heslo 1234, ale na testovanie to postačuje.

  • Pri Ring Groupe je tlačítko Edit
ivr 7

Do správnej Ring groupe pridáme užívateľov, pomocou tlačítka User quick Select

ivr 8

A vyberieme užívateľov, ktorých chceme pridať do Ring Groupy.

 ivr 9

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.

ivr 10
  • Time Conditions je číslo s ktorým sa dovoláme do Call centra.

Ako pridáme novú hlášku?

  1. Zvučku pridáme do System recordings
  2. Potom prejdeme do IVR
 ivr 11

V IVR v sekcii digits, robíme podmienky. Ak stlačíme 1 alebo 2, volá sa s oddelením, ktoré sme nastavili.

call centrum ivr 12

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.

ivr 13

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.

Picture of Ivan Baroňák

Ivan Baroňák

Volám sa Ivan Baroňák. Vyštudoval som vyššie odborné štúdium na SPšE Zochova 9. Ukončené titulom DiS. Pracoval som na miestnom úrade Karlova ves, kde som bol vedúci IT oddelenia. Som rád, že môžem byť súčasťou blogu a dúfam, že moje skúsenosti budú pre tento blog prospešné.
Picture of Ivan Baroňák

Ivan Baroňák

Volám sa Ivan Baroňák. Vyštudoval som vyššie odborné štúdium na SPšE Zochova 9. Ukončené titulom DiS. Pracoval som na miestnom úrade Karlova ves, kde som bol vedúci IT oddelenia. Som rád, že môžem byť súčasťou blogu a dúfam, že moje skúsenosti budú pre tento blog prospešné.
Zdieľať príspevok:

Súvisiace príspevky