Viktor Hlača 20/09/2018

Asterisk kao IVR bez licenci uz malo truda (2/2)

Tehnologija
Tehnologija
0

U prethodnom dijelu ovog članka prikazane su osnovne postavke potrebne na Asterisk platformi za uspostavu funkcionalnosti, a u ovom dijelu bavit ćemo se glasovnim izbornikom.

U prošlom članku zaključili smo da da su osnovne postavke na platformi Asterisk za uspostavu fukncionalnosti:

  • upiti prema vanjskim sustavima radi donošenja odluke
  • pružanje informacija pozivateljima temeljem podataka skupljenih u vanjskim sustavima

Glasovni izbornici

U navedenom primjeru prikazani su:

  • Usmjeravanje poziva prema internom telefonu
  • Usmjeravanje poziva prema glasovnoj pošti
  • Usmjeravanje poziva prema ACD redu čekanja
  • Reprodukcija poruke (npr. „naša adresa je...“)
  • Podmeni
  • Povezivanje sa recepcijom/glavnim telefonom
  • Ponavljanje

Dijelovi izbornika prikazani su u tablici:

 

Prvu stvar koji treba učiniti je snimiti objave (datoteke). Za to je jednostavan način kreirati u dialplanu izbornike iako je moguće prebaciti datoteke standardnim načinima koji su mogući na Linux operativnom sustavu:

;za snimanje objava za glasovni meni
;Objava pozdravne poruke u radno vrijeme.
exten => 601,1,Playback(vm-intro)
same => n,Record(daygreeting.wav)
same => n,Wait(2)
same => n,Playback(daygreeting)
same => n,Hangup
;Objava pozdravne poruke van radnog vremena
exten => 602,1,Playback(vm-intro)
same => n,Record(nightgreeting.wav)
same => n,Wait(2)
same => n,Playback(nightgreeting)
same => n,Hangup
;Objava glavnog menia.
exten => 603,1,Playback(vm-intro)
same => n,Record(mainmenu.wav)
same => n,Wait(2)
same => n,Playback(mainmenu)
same => n,Hangup
;Objava Molim vas sacekajte dok vas preusmjerivmo
exten => 604,1,Playback(vm-intro)
same => n,Record(holdwhileweconnect.wav)
same => n,Wait(2)
same => n,Playback(holdwhileweconnect)
same => n,Hangup
;Objava osnovnih podataka
exten => 605,1,Playback(vm-intro)
same => n,Record(faxandaddress.wav)
same => n,Wait(2)
same => n,Playback(faxandaddress)
same => n,Hangup
;Objava Molim vas sacekajte dok vas preusmjerimo na recepciju
exten => 606,1,Playback(vm-intro)
same => n,Record(transfertoreception.wav)
same => n,Wait(2)
same => n,Playback(transfertoreception)
same => n,Hangup
; Objava Pogrešan odabir
exten => 607,1,Playback(vm-intro)
same => n,Record(invalid.wav)
same => n,Wait(2)
same => n,Playback(invalid)
same => n,Hangup

Zatim kreiramo poseban kontekst u kojem se odrađuje govorni izbornik

[glavni_menu]
; ispiši da je AA pokrenut
exten => s,1,Verbose(1, Caller ${CALLERID(all)} je usao u AutoAttendant)
       same => n,Answer()
; postavi vrijeme čekanja između tipki
       same => n,Set(TIMEOUT(digit)=2)
; sačekaj sekudu da se uspostavi RTP put
       same => n,Wait(1)
; Ako je Mon-Fri 8-16 idi na „daygreeting“
       same => n,GotoIfTime(8:00-16:00,mon-fri,*,*?daygreeting:afterhoursgreeting)
       same => n(afterhoursgreeting),Background(nightgreeting) ; AFTER HOURS GREETING
       same => n,Goto(menuprompt) ;idi na menuprompt točku
       same => n(daygreeting),Background(daygreeting) ; DAY GREETING
       same => n,Goto(menuprompt) ;idi na menuprompt točku
       same => n(menuprompt),Background(mainmenu) ; menuprompt točka
       same => n,WaitExten(4) ; Čeka 4 sekunde i ako pozivatelj ne bira ide na sljedeću točku
       same => n,Goto(0,1) ; Kao da je pozivatelj birao '0'

exten => 1,1,Verbose(1, Caller ${CALLERID(all)} je ušao u red čekanja za prodaju)
       same => n,Goto(Queues,592,1) ;šalji na red čekanja prodaja
exten => 2,1,Verbose(1, Caller ${CALLERID(all)} je ušao u red čekanja za usluge)
       same => n,Goto(Queues,591,1) ;šalji na red čekanja usluge
exten => 3,1,Verbose(1, Caller ${CALLERID(all)} je tražio informacije o faksu i adresi)
       same => n,Background(faxandaddress) ; Podaci o faksu i adresi
       same => n,Goto(s,menuprompt) ; Vrati pozivatelja na glavni menu
; Use InternalSets as the dialing context
exten => 0,1,Verbose(1, Caller ${CALLERID(all)} zove operatera)
       same => n,Dial(SIP/peti) ; Šalji poziv operateru
exten => i,1,Verbose(1, Caller ${CALLERID(all)} je pogrešno birao.)
       same => n,Playback(invalid)
       same => n,Goto(s,menuprompt);vrati pozivatelja na glavni menu
exten => t,1,Verbose(1, Caller ${CALLERID(all)} nije ništa birao)
       same => n,Goto(0,1) ; šalji poziv kao da je pozivatelj birao '0'

exten => _5XX,1,Goto(telefoni,${EXTEN},1); šalji poziv na biranu ekstenziju

Na kraju je potrebno preusmjeriti broj na glavni izbornik u kontekstu kojeg mogu doći dolazni pozivi:

exten => 500,1,Goto(glavni_menu,s,1)