Protams, daudziem no jums, tÄpat kÄ man, bija ideja darÄ«t kaut ko unikÄlu. Å ajÄ rakstÄ es aprakstÄ«Å”u tehniskÄs problÄmas un risinÄjumus, ar kuriem man bija jÄsaskaras, izstrÄdÄjot PBX. VarbÅ«t tas kÄdam palÄ«dzÄs izlemt par savu ideju un kÄdam iet pa iestaigÄto ceļu, jo arÄ« man noderÄja pionieru pieredze.
Ideja un galvenÄs prasÄ«bas
Un viss sÄkÄs vienkÄrÅ”i ar mÄ«lestÄ«bu pret ZvaigznÄ«te (sakaru lietojumprogrammu ietvars), telefonijas un instalÄciju automatizÄcija Bezmaksas PBX (tÄ«mekļa saskarne priekÅ” ZvaigznÄ«te). Ja uzÅÄmuma vajadzÄ«bas bija bez specifikas un ietilpa iespÄju robežÄs Bezmaksas PBX - viss ir lieliski. Visa instalÄÅ”ana notika XNUMX stundu laikÄ, uzÅÄmums saÅÄma konfigurÄtu PBX, lietotÄjam draudzÄ«gu saskarni un Ä«su apmÄcÄ«bu, kÄ arÄ« atbalstu, ja vÄlÄjÄs.
Bet interesantÄkie uzdevumi bija nestandarta un tad nebija tik pasakaini. ZvaigznÄ«te var izdarÄ«t daudz, taÄu, lai tÄ«mekļa saskarne bÅ«tu darba kÄrtÄ«bÄ, bija nepiecieÅ”ams pavadÄ«t daudzkÄrt vairÄk laika. TÄtad neliela detaļa var aizÅemt daudz ilgÄku laiku nekÄ pÄrÄjÄ PBX instalÄÅ”ana. Un runa nav par to, ka tÄ«mekļa saskarnes rakstÄ«Å”ana prasa ilgu laiku, bet gan jÄga ir arhitektÅ«ras iezÄ«mÄs Bezmaksas PBX. ArhitektÅ«ras pieejas un metodes Bezmaksas PBX tika izlikts php4 laikÄ, un tajÄ brÄ«dÄ« jau bija php5.6, uz kura visu varÄja padarÄ«t vienkÄrÅ”Äku un ÄrtÄku.
PÄdÄjais piliens bija grafiskie zvanu plÄni diagrammas veidÄ. Kad es mÄÄ£inÄju izveidot kaut ko lÄ«dzÄ«gu Å”im Bezmaksas PBX, sapratu, ka bÅ«s bÅ«tiski jÄpÄrraksta un bÅ«s vieglÄk uzbÅ«vÄt ko jaunu.
GalvenÄs prasÄ«bas bija:
- vienkÄrÅ”a iestatÄ«Å”ana, intuitÄ«vi pieejama pat iesÄcÄju administratoram. TÄdÄjÄdi uzÅÄmumiem mÅ«su pusÄ nav nepiecieÅ”ama PBX uzturÄÅ”ana,
- vienkÄrÅ”a modifikÄcija, lai uzdevumi tiktu atrisinÄti atbilstoÅ”Ä laikÄ,
- Ärta integrÄcija ar PBX. U Bezmaksas PBX nebija API iestatÄ«jumu maiÅai, t.i. JÅ«s nevarat, piemÄram, izveidot grupas vai balss izvÄlnes no treÅ”Äs puses lietojumprogrammas, tikai paÅ”u API ZvaigznÄ«te,
- opensource - programmÄtÄjiem tas ir ÄrkÄrtÄ«gi svarÄ«gi klienta modifikÄcijÄm.
ÄtrÄkas attÄ«stÄ«bas ideja bija panÄkt, lai visa funkcionalitÄte sastÄvÄtu no moduļiem objektu formÄ. Visiem objektiem bija jÄbÅ«t kopÄjai vecÄku klasei, kas nozÄ«mÄ, ka visu galveno funkciju nosaukumi jau ir zinÄmi un tÄpÄc jau ir noklusÄjuma implementÄcijas. Objekti ļaus dramatiski samazinÄt argumentu skaitu asociatÄ«vu masÄ«vu veidÄ ar virknes taustiÅiem, ko varat uzzinÄt Bezmaksas PBX Tas bija iespÄjams, pÄrbaudot visu funkciju un ligzdotÄs funkcijas. Objektu gadÄ«jumÄ banÄlÄ automÄtiskÄ pabeigÅ”ana parÄdÄ«s visas Ä«paŔības un kopumÄ daudzkÄrt vienkÄrÅ”os dzÄ«vi. TurklÄt mantoÅ”ana un pÄrdefinÄÅ”ana jau atrisina daudzas problÄmas ar modifikÄcijÄm.
NÄkamÄ lieta, kas palÄninÄja pÄrstrÄdÄÅ”anas laiku un no kuras bija vÄrts izvairÄ«ties, bija dublÄÅ”anÄs. Ja ir modulis, kas atbild par darbinieka izsaukÅ”anu, tad visiem pÄrÄjiem moduļiem, kuriem jÄnosÅ«ta zvans darbiniekam, tas ir jÄizmanto, nevis jÄveido savas kopijas. TÄtad, ja jums kaut kas jÄmaina, jums bÅ«s jÄmaina tikai vienÄ vietÄ, un meklÄÅ”ana ākÄ tas darbojasā ir jÄveic vienuviet, nevis jÄmeklÄ visÄ projektÄ.
PirmÄ versija un pirmÄs kļūdas
Pirmais prototips bija gatavs gada laikÄ. Viss PBX, kÄ plÄnots, bija modulÄrs, un moduļi varÄja ne tikai pievienot jaunu funkcionalitÄti zvanu apstrÄdei, bet arÄ« mainÄ«t paÅ”u tÄ«mekļa saskarni.
JÄ, ideja par numura sastÄdÄ«Å”anas plÄna izveidi Å”Ädas shÄmas veidÄ nav mana, taÄu tas ir ļoti Ärti, un es darÄ«ju to paÅ”u ZvaigznÄ«te.
Rakstot moduli, programmÄtÄji jau varÄja:
- izveidot savu zvanu apstrÄdes funkcionalitÄti, ko varÄtu ievietot diagrammÄ, kÄ arÄ« kreisajÄ pusÄ esoÅ”o elementu izvÄlnÄ,
- izveidojiet savas lapas tÄ«mekļa saskarnei un pievienojiet savas veidnes esoÅ”ajÄm lapÄm (ja lapas izstrÄdÄtÄjs to ir paredzÄjis),
- pievienojiet savus iestatījumus galvenajai iestatījumu cilnei vai izveidojiet savu iestatījumu cilni,
- programmÄtÄjs var mantot no esoÅ”a moduļa, mainÄ«t daļu funkcionalitÄtes un reÄ£istrÄt to ar jaunu nosaukumu vai aizstÄt sÄkotnÄjo moduli.
PiemÄram, Å”Ädi varat izveidot savu balss izvÄlni:
......
class CPBX_MYIVR extends CPBX_IVR
{
function __construct()
{
parent::__construct();
$this->_module = "myivr";
}
}
.....
$myIvrModule = new CPBX_MYIVR();
CPBXEngine::getInstance()->registerModule($myIvrModule,__DIR__); //ŠŠ°ŃŠµŠ³ŠøŃŃŃŠøŃŠ¾Š²Š°ŃŃ Š½Š¾Š²ŃŠ¹ Š¼Š¾Š“ŃŠ»Ń
CPBXEngine::getInstance()->registerModuleExtension($myIvrModule,'ivr',__DIR__); //ŠŠ¾Š“Š¼ŠµŠ½ŠøŃŃ ŃŃŃŠµŃŃŠ²ŃŃŃŠøŠ¹ Š¼Š¾Š“ŃŠ»Ń
PirmÄs sarežģītÄs ievieÅ”anas radÄ«ja pirmo lepnumu un pirmÄs vilÅ”anÄs. PriecÄjos, ka izdevÄs, ka jau varÄju reproducÄt galvenÄs iezÄ«mes Bezmaksas PBX. Man bija prieks, ka cilvÄkiem patika shÄmas ideja. JoprojÄm bija daudz iespÄju vienkÄrÅ”ot izstrÄdi, taÄu pat tajÄ laikÄ daži uzdevumi jau tika atviegloti.
API PBX konfigurÄcijas maiÅai sagÄdÄja vilÅ”anos ā rezultÄts nepavisam nebija tÄds, kÄdu vÄlÄjÄmies. Es izmantoju to paÅ”u principu kÄ Bezmaksas PBX, noklikŔķinot uz pogas Lietot, visa konfigurÄcija tiek izveidota no jauna un moduļi tiek restartÄti.
Tas izskatÄs Å”Ädi:
*Dialplan ir noteikums (algoritms), pÄc kura tiek apstrÄdÄts zvans.
Bet ar Å”o opciju nav iespÄjams uzrakstÄ«t parastu API, lai mainÄ«tu PBX iestatÄ«jumus. PirmkÄrt, izmaiÅu piemÄroÅ”anas darbÄ«ba ZvaigznÄ«te pÄrÄk ilgi un resursietilpÄ«gi.
OtrkÄrt, jÅ«s nevarat izsaukt divas funkcijas vienlaikus, jo abi izveidos konfigurÄciju.
TreÅ”kÄrt, tas piemÄro visus iestatÄ«jumus, tostarp tos, ko veicis administrators.
Å ajÄ versijÄ, tÄpat kÄ Askozia, bija iespÄjams Ä£enerÄt tikai mainÄ«to moduļu konfigurÄciju un restartÄt tikai nepiecieÅ”amos moduļus, taÄu tie visi ir pusmÄri. Bija jÄmaina pieeja.
OtrÄ versija. Deguns izvilkts aste iestrÄdzis
ProblÄmas risinÄÅ”anas ideja nebija no jauna izveidot konfigurÄciju un iezvanes plÄnu ZvaigznÄ«te, bet saglabÄjiet informÄciju datu bÄzÄ un lasiet no datu bÄzes tieÅ”i, apstrÄdÄjot zvanu. ZvaigznÄ«te Es jau zinÄju, kÄ nolasÄ«t konfigurÄcijas no datu bÄzes, vienkÄrÅ”i mainiet vÄrtÄ«bu datu bÄzÄ un nÄkamais zvans tiks apstrÄdÄts, Åemot vÄrÄ izmaiÅas, un funkcija bija ideÄli piemÄrota sastÄdÄ«Å”anas plÄna parametru nolasÄ«Å”anai REALTIME_HASH.
Galu galÄ nebija vajadzÄ«bas pat restartÄt ZvaigznÄ«te mainot iestatÄ«jumus, un visi iestatÄ«jumi tika nekavÄjoties piemÄroti ZvaigznÄ«te.
VienÄ«gÄs izmaiÅas sastÄdÄ«Å”anas plÄnÄ ir paplaÅ”inÄjumu numuru pievienoÅ”ana un mÄjieni. Bet tÄs bija nelielas izmaiÅas
exten=>101,1,GoSub(āsub-callusersā,s,1(1)); - ŃŠ¾ŃŠµŃŠ½Š¾Šµ ŠøŠ·Š¼ŠµŠ½ŠµŠ½ŠøŠµ, Š“Š¾Š±Š°Š²Š»ŃŠµŃŃŃ/ŠøŠ·Š¼ŠµŠ½ŃŠµŃŃŃ ŃŠµŃŠµŠ· ami
; sub-callusers ā ŃŠ½ŠøŠ²ŠµŃŃŠ°Š»ŃŠ½Š°Ń ŃŃŠ½ŠŗŃŠøŃ Š³ŠµŠ½ŠµŃŠøŃŃŃ ŠæŃŠø ŃŃŃŠ°Š½Š¾Š²ŠŗŠµ Š¼Š¾Š“ŃŠ»Ń.
[sub-callusers]
exten =>s,1,Noop()
exten =>s,n,Set(LOCAL(TOUSERID)=${ARG1})
exten =>s,n,ClearHash(TOUSERPARAM)
exten =>s,n,Set(HASH(TOUSERPARAM)=${REALTIME_HASH(rl_users,id,${LOCAL(TOUSERID)})})
exten =>s,n,GotoIf($["${HASH(TOUSERPARAM,id)}"=""]?return)
...
JÅ«s varat viegli pievienot vai mainÄ«t lÄ«niju sastÄdÄ«Å”anas plÄnÄ, izmantojot Ami (vadÄ«bas interfeiss ZvaigznÄ«te), un nav nepiecieÅ”ama visa numura sastÄdÄ«Å”anas plÄna atsÄknÄÅ”ana.
Tas atrisinÄja problÄmu ar konfigurÄcijas API. JÅ«s pat varÄtu tieÅ”i ieiet datu bÄzÄ un pievienot jaunu grupu vai mainÄ«t, piemÄram, grupas iezvanes laiku laukÄ ādialtimeā un nÄkamais zvans jau ilgs norÄdÄ«to laiku (tas nav ieteikums darbÄ«bu, jo ir nepiecieÅ”amas dažas API darbÄ«bas Ami zvani).
PirmÄs sarežģītÄs realizÄcijas atkal radÄ«ja pirmo lepnumu un vilÅ”anos. PriecÄjos, ka izdevÄs. DatubÄze kļuva par kritisku saiti, pieauga atkarÄ«ba no diska, bija vairÄk risku, bet viss darbojÄs stabili un bez problÄmÄm. Un pats galvenais, tagad visu, ko varÄja izdarÄ«t, izmantojot tÄ«mekļa saskarni, varÄja izdarÄ«t, izmantojot API, un tika izmantotas tÄs paÅ”as metodes. TurklÄt tÄ«mekļa saskarne atbrÄ«vojÄs no pogas āLietot iestatÄ«jumus PBXā, par ko administratori bieži aizmirsa.
VilÅ”anÄs bija tÄ, ka izstrÄde kļuva sarežģītÄka. KopÅ” pirmÄs versijas PHP valoda ir Ä£enerÄjusi iezvanes plÄnu Å”ajÄ valodÄ ZvaigznÄ«te un izskatÄs galÄ«gi nelasÄms, plus pati valoda ZvaigznÄ«te sastÄdÄ«Å”anas plÄna rakstÄ«Å”anai tas ir ÄrkÄrtÄ«gi primitÄ«vi.
KÄ tas izskatÄ«jÄs:
$usersInitSection = $dialplan->createExtSection('usersinit-sub','s');
$usersInitSection
->add('',new Dialplanext_gotoif('$["${G_USERINIT}"="1"]','exit'))
->add('',new Dialplanext_set('G_USERINIT','1'))
->add('',new Dialplanext_gosub('1','s','sub-AddOnAnswerSub','usersconnected-sub'))
->add('',new Dialplanext_gosub('1','s','sub-AddOnPredoDialSub','usersinitondial-sub'))
->add('',new Dialplanext_set('LOCAL(TECH)','${CUT(CHANNEL(name),/,1)}'))
->add('',new Dialplanext_gotoif('$["${LOCAL(TECH)}"="SIP"]','sipdev'))
->add('',new Dialplanext_gotoif('$["${LOCAL(TECH)}"="PJSIP"]','pjsipdev'))
OtrajÄ versijÄ sastÄdÄ«Å”anas plÄns kļuva universÄls, tas ietvÄra visas iespÄjamÄs apstrÄdes iespÄjas atkarÄ«bÄ no parametriem un tÄ izmÄrs ievÄrojami palielinÄjÄs. Tas viss ļoti bremzÄja izstrÄdes laiku, un jau pati doma, ka kÄrtÄjo reizi jÄiejaucas iezvanes plÄnÄ, mani sarÅ«gtinÄja.
TreÅ”Ä versija
Ideja atrisinÄt problÄmu nebija Ä£enerÄt ZvaigznÄ«te dialplan no php un izmantot FastAGI un rakstÄ«t visus apstrÄdes noteikumus paÅ”Ä PHP. FastAGI pieļauj ZvaigznÄ«te, lai apstrÄdÄtu zvanu, izveidojiet savienojumu ar kontaktligzdu. SaÅemiet komandas no turienes un nosÅ«tiet rezultÄtus. TÄdÄjÄdi sastÄdÄ«Å”anas plÄna loÄ£ika jau ir Ärpus robežÄm ZvaigznÄ«te un var rakstÄ«t jebkurÄ valodÄ, manÄ gadÄ«jumÄ PHP.
Bija daudz izmÄÄ£inÄjumu un kļūdu. GalvenÄ problÄma bija tÄ, ka man jau bija daudz nodarbÄ«bu/failu. Objektu izveidoÅ”ana, inicializÄcija un cita cita reÄ£istrÄÅ”ana aizÅÄma aptuveni 1,5 sekundes, un Å”o aizkavi vienam zvanam nevar ignorÄt.
InicializÄcijai vajadzÄja notikt tikai vienu reizi un tÄpÄc risinÄjuma meklÄjumi sÄkÄs ar servisa rakstÄ«Å”anu php izmantojot Ppavedieni. PÄc nedÄļas eksperimentÄÅ”anas Ŕī opcija tika atcelta Ŕī paplaÅ”inÄjuma darbÄ«bas sarežģītÄ«bas dÄļ. PÄc mÄneÅ”a testÄÅ”anas man arÄ« bija jÄatsakÄs no asinhronÄs programmÄÅ”anas PHP; man vajadzÄja kaut ko vienkÄrÅ”u, pazÄ«stamu jebkuram PHP iesÄcÄjam, un daudzi PHP paplaÅ”inÄjumi ir sinhroni.
RisinÄjums bija mÅ«su paÅ”u daudzpavedienu pakalpojums C valodÄ, kas tika kompilÄts ar PHPLIB. Tas ielÄdÄ visus ATS php failus, gaida, kamÄr visi moduļi tiks inicializÄti, pievieno viens otram atzvanÄ«Å”anu un, kad viss ir gatavs, saglabÄ to keÅ”atmiÅÄ. JautÄjot pa FastAGI tiek izveidota straume, tajÄ tiek reproducÄta visu klaÅ”u un datu kopija no keÅ”atmiÅas, un pieprasÄ«jums tiek nodots php funkcijai.
Izmantojot Å”o risinÄjumu, laiks no zvana nosÅ«tÄ«Å”anas uz mÅ«su dienestu lÄ«dz pirmajai komandai ZvaigznÄ«te samazinÄjies no 1,5 s uz 0,05 s, un Å”is laiks ir nedaudz atkarÄ«gs no projekta lieluma.
TÄ rezultÄtÄ tika ievÄrojami samazinÄts zvanu plÄna izstrÄdes laiks, un es to varu novÄrtÄt, jo man bija jÄpÄrraksta viss PHP moduļu iezvanes plÄns. PirmkÄrt, metodes jau ir jÄraksta php, lai iegÅ«tu objektu no datu bÄzes, tÄs bija vajadzÄ«gas attÄloÅ”anai tÄ«mekļa saskarnÄ, un, otrkÄrt, un tas ir galvenais, beidzot ir iespÄjams Ärti strÄdÄt ar virknÄm ar cipariem un masÄ«viem ar datu bÄzi un daudziem PHP paplaÅ”inÄjumiem.
Lai apstrÄdÄtu iezvanes plÄnu moduļu klasÄ, jums ir jÄrealizÄ funkcija dialplanDynamicCall un arguments pbxCallRequest saturÄs objektu, ar ko mijiedarboties ZvaigznÄ«te.
TurklÄt kļuva iespÄjams atkļūdot sastÄdÄ«Å”anas plÄnu (php ir xdebug, un tas darbojas mÅ«su pakalpojumÄ), jÅ«s varat pÄrvietoties soli pa solim, apskatot mainÄ«go vÄrtÄ«bas.
Zvanu dati
Jebkurai analÄ«zei un pÄrskatiem ir nepiecieÅ”ami pareizi savÄkti dati, un Å”im PBX blokam arÄ« tika veikts daudz izmÄÄ£inÄjumu un kļūdu, sÄkot no pirmÄs lÄ«dz treÅ”ajai versijai. Bieži vien zvanu dati ir zÄ«me. Viens zvans = viens ieraksts: kurÅ” zvanÄ«ja, kurÅ” atbildÄja, cik ilgi runÄja. InteresantÄkos variantos ir papildu zÄ«me, kas norÄda, kurÅ” PBX darbinieks tika izsaukts zvana laikÄ. Bet tas viss sedz tikai daļu no vajadzÄ«bÄm.
SÄkotnÄjÄs prasÄ«bas bija:
- saglabÄt ne tikai to, kam PBX zvanÄ«ja, bet arÄ« to, kas atbildÄja, jo notiek pÄrtverÅ”ana, un tas bÅ«s jÄÅem vÄrÄ, analizÄjot zvanus,
- laiku pirms saziÅas ar darbinieku. In Bezmaksas PBX un daži citi PBX, uz zvanu tiek uzskatÄ«ts atbildÄts, tiklÄ«dz PBX paceļ klausuli. Bet balss izvÄlnei jau ir jÄpaceļ telefons, tÄpÄc uz visiem zvaniem tiek atbildÄts un atbildes gaidÄ«Å”anas laiks kļūst 0-1 sekunde. TÄpÄc tika nolemts ietaupÄ«t ne tikai laiku pirms atbildes, bet arÄ« laiku pirms savienojuma ar atslÄgas moduļiem (pats modulis uzstÄda Å”o karogu. Å obrÄ«d tas ir āDarbinieksā, āÄrÄjÄ lÄ«nijaā),
- SarežģītÄkam sastÄdÄ«Å”anas plÄnam, kad zvans ceļo starp dažÄdÄm grupÄm, bija jÄspÄj pÄrbaudÄ«t katru elementu atseviŔķi.
LabÄkais variants izrÄdÄ«jÄs, kad PBX moduļi zvana laikÄ nosÅ«ta informÄciju par sevi un galu galÄ saglabÄ informÄciju koka formÄ.
Tas izskatÄs Å”Ädi:
PirmkÄrt, vispÄrÄ«ga informÄcija par zvanu (kÄ visi pÄrÄjie - nekas Ä«paÅ”s).
- SaÅemts zvans uz ÄrÄjo lÄ«niju"Par mÄ«klu"plkst.05:55:52 no numura 89295671458 uz numuru 89999999999, beigÄs atbildÄja darbinieks"SekretÄrs 2Ā» ar numuru 104. Klients gaidÄ«ja 60 sekundes un runÄja 36 sekundes.
- Darbinieks"SekretÄrs 2"zvana uz 112 un darbinieks atbild"VadÄ«tÄjs 1Ā» pÄc 8 sekundÄm. ViÅi runÄ 14 sekundes.
- Klients tiek nodots Darbiniekam "vadÄ«tÄjs 1", kur viÅi turpina runÄt vÄl 13 sekundes
Bet Ŕī ir aisberga redzamÄ daļa; katram ierakstam varat iegÅ«t detalizÄtu zvanu vÄsturi, izmantojot PBX.
Visa informÄcija tiek parÄdÄ«ta kÄ zvanu ligzdas:
- SaÅemts zvans uz ÄrÄjo lÄ«niju"Par mÄ«kluĀ» plkst.05:55:52 no numura 89295671458 uz numuru 89999999999.
- 05:55:53 ÄrÄjÄ lÄ«nija nosÅ«ta zvanu uz ienÄkoÅ”o Ä·Ädi "pÄrbaudeĀ»
- ApstrÄdÄjot zvanu saskaÅÄ ar shÄmu, modulis āmenedžera zvans", kurÄ zvans ir 16 sekundes. Å is ir klientam izstrÄdÄts modulis.
- modulis "menedžera zvans" nosÅ«ta zvanu darbiniekam, kas ir atbildÄ«gs par numuru (klientu)"VadÄ«tÄjs 1ā un gaida 5 sekundes, lai saÅemtu atbildi. VadÄ«tÄjs neatbildÄja.
- modulis "menedžera zvans"nosÅ«ta zvanu grupai"CORP vadÄ«tÄji" Tie ir citi tÄ paÅ”a virziena vadÄ«tÄji (sÄž vienÄ telpÄ) un gaida atbildi 11 sekundes.
- Grupa "CORP vadÄ«tÄji"zvana darbiniekiem"VadÄ«tÄjs 1, VadÄ«tÄjs 2, VadÄ«tÄjs 3"vienlaikus 11 sekundes. Nav atbildes.
- PÄrvaldnieka zvans beidzas. Un Ä·Äde nosÅ«ta zvanu uz moduli "MarÅ”ruta izvÄle no 1c" ArÄ« klientam rakstÄ«ts modulis. Å eit zvans tika apstrÄdÄts 0 sekundes.
- ĶÄde nosÅ«ta zvanu uz balss izvÄlni "Pamata ar papildu numuru sastÄdÄ«Å”anu" Klients tur gaidÄ«ja 31 sekundi, papildu sastÄdÄ«Å”anas nebija.
- ShÄma nosÅ«ta zvanu grupai "SekretÄri", kur klients gaidÄ«ja 12 sekundes.
- GrupÄ vienlaikus tiek izsaukti 2 darbinieki "SekretÄrs 1"Un"SekretÄrs 2"un pÄc 12 sekundÄm darbinieks atbild"SekretÄrs 2" Atbilde uz zvanu tiek dublÄta vecÄku zvanos. IzrÄdÄs, ka grupÄ viÅÅ” atbildÄja "SekretÄrs 2", zvanot Ä·Äde atbildÄja"SekretÄrs 2" un atbildÄja uz zvanu ÄrÄjÄ lÄ«nijÄ ar "SekretÄrs 2'.
TieÅ”i informÄcijas saglabÄÅ”ana par katru darbÄ«bu un to ligzdoÅ”anu ļaus vienkÄrÅ”i veidot atskaites. Balss izvÄlnes pÄrskats palÄ«dzÄs noskaidrot, cik daudz tas palÄ«dz vai traucÄ. Izveidojiet atskaiti par darbinieku neatbildÄtajiem zvaniem, Åemot vÄrÄ, ka zvans tika pÄrtverts un lÄ«dz ar to netiek uzskatÄ«ts par neatbildÄtu, un Åemot vÄrÄ, ka tas bija grupas zvans un kÄds cits atbildÄja agrÄk, kas nozÄ«mÄ, ka zvans arÄ« netika neatbildÄts.
Å Äda informÄcijas glabÄÅ”ana ļaus jums paÅemt katru grupu atseviŔķi un noteikt, cik efektÄ«vi tÄ darbojas, un izveidot grafiku ar atbildÄtajÄm un neatbildÄtajÄm grupÄm pa stundÄm. Varat arÄ« pÄrbaudÄ«t, cik precÄ«zs ir savienojums ar atbildÄ«go pÄrvaldnieku, analizÄjot pÄrskaitÄ«jumus pÄc savienojuma ar pÄrvaldnieku.
Var veikt arÄ« visai netipiskus pÄtÄ«jumus, piemÄram, cik bieži numuri, kas nav datu bÄzÄ, izsauc pareizo paplaÅ”inÄjumu vai cik procenti izejoÅ”o zvanu tiek pÄradresÄti uz mobilo tÄlruni.
RezultÄts?
PBX uzturÄÅ”ana nav nepiecieÅ”ama speciÄlistam, to var izdarÄ«t visparastÄkais administrators ā pÄrbaudÄ«ts praksÄ.
ModifikÄcijÄm nav nepiecieÅ”ami speciÄlisti ar nopietnu kvalifikÄciju, pietiek ar PHP zinÄÅ”anÄm, jo Moduļi jau ir uzrakstÄ«ti gan SIP protokolam, gan rindai, gan darbinieka izsaukÅ”anai un citiem. Ir iesaiÅojuma klase ZvaigznÄ«te. Lai izstrÄdÄtu moduli, programmÄtÄjs var (un labÄ nozÄ«mÄ vajadzÄtu) izsaukt gatavus moduļus. Un zinÄÅ”anas ZvaigznÄ«te ir pilnÄ«gi nevajadzÄ«gi, ja klients lÅ«dz pievienot lapu ar kÄdu jaunu pÄrskatu. TaÄu prakse rÄda, ka, lai gan treÅ”o puÅ”u programmÄtÄji var tikt galÄ, viÅi jÅ«tas nedroÅ”i bez dokumentÄcijas un normÄla komentÄru atspoguļojuma, tÄpÄc vÄl ir ko uzlabot.
Moduļi var:
- izveidot jaunas zvanu apstrÄdes iespÄjas,
- pievienot jaunus blokus tīmekļa saskarnei,
- mantot no jebkura no esoÅ”ajiem moduļiem, no jauna definÄt funkcijas un aizstÄt to vai vienkÄrÅ”i bÅ«t nedaudz pÄrveidota kopija,
- pievienojiet savus iestatījumus citu moduļu iestatījumu veidnei un daudz ko citu.
PBX iestatÄ«jumi, izmantojot API. KÄ aprakstÄ«ts iepriekÅ”, visi iestatÄ«jumi tiek saglabÄti datu bÄzÄ un nolasÄ«ti zvana laikÄ, lai jÅ«s varÄtu mainÄ«t visus PBX iestatÄ«jumus, izmantojot API. Izsaucot API, konfigurÄcija netiek izveidota no jauna un moduļi netiek restartÄti, tÄpÄc nav svarÄ«gi, cik iestatÄ«jumu un darbinieku jums ir. API pieprasÄ«jumi tiek izpildÄ«ti Ätri un viens otru nebloÄ·Ä.
PBX saglabÄ visas galvenÄs darbÄ«bas ar zvaniem ar ilgumu (gaidÄ«Å”ana/saruna), ligzdoÅ”anu un PBX terminos (darbinieks, grupa, ÄrÄjÄ lÄ«nija, nevis kanÄls, numurs). Tas ļauj izveidot dažÄdus pÄrskatus konkrÄtiem klientiem, un lielÄkÄ daļa darba ir lietotÄjam draudzÄ«ga interfeisa izveide.
Laiks rÄdÄ«s, kas notiks tÄlÄk. VÄl ir daudzas nianses, kas jÄpÄrtaisa, vÄl ir daudz plÄnu, bet pagÄjis gads kopÅ” 3. versijas tapÅ”anas un jau tagad var teikt, ka ideja strÄdÄ. Galvenais 3. versijas trÅ«kums ir aparatÅ«ras resursi, taÄu parasti par to ir jÄmaksÄ, lai atvieglotu attÄ«stÄ«bu.
Avots: www.habr.com