L-istorja ta 'proġett wieħed jew kif qattajt 7 snin noħolqu PBX ibbażat fuq Asterisk u PHP

Żgur li ħafna minnkom, bħali, kellhom idea li jagħmlu xi ħaġa unika. F'dan l-artikolu ser niddeskrivi l-problemi tekniċi u s-soluzzjonijiet li kelli niffaċċja meta niżviluppa l-PBX. Forsi dan jgħin lil xi ħadd jiddeċiedi fuq l- idea tiegħu stess, u lil xi ħadd biex isegwi t- triq mifxula sew, għax jien bbenefikajt ukoll mill- esperjenza tal- pijunieri.

L-istorja ta 'proġett wieħed jew kif qattajt 7 snin noħolqu PBX ibbażat fuq Asterisk u PHP

Idea u rekwiżiti ewlenin

U kollox beda sempliċement bl-imħabba għal Asterisk (qafas għall-bini ta' applikazzjonijiet ta' komunikazzjoni), awtomazzjoni tat-telefonija u installazzjonijiet freepbx (interface tal-web għal Asterisk). Jekk il-bżonnijiet tal-kumpanija kienu mingħajr ispeċifiċitajiet u jaqgħu fi ħdan il-kapaċitajiet freepbx - kollox huwa kbir. L-installazzjoni kollha seħħet fi żmien 24 siegħa, il-kumpanija rċeviet PBX konfigurat, interface faċli għall-utent u taħriġ qasir flimkien ma 'appoġġ jekk mixtieq.

Iżda l-kompiti l-aktar interessanti kienu mhux standard u allura ma kienx daqshekk fabulous. Asterisk jista 'jagħmel ħafna, iżda biex iżżomm l-interface tal-web f'kundizzjoni li taħdem, kien meħtieġ li tqatta' ħafna drabi aktar ħin. Allura dettall żgħir jista 'jieħu ħafna aktar żmien mill-installazzjoni tal-bqija tal-PBX. U l-punt mhuwiex li tieħu ħafna żmien biex tikteb interface tal-web, iżda pjuttost il-punt huwa fil-karatteristiċi arkitettoniċi freepbx. Approċċi u metodi tal-arkitettura freepbx kien stabbilit fil-ħin ta 'php4, u f'dak il-mument diġà kien hemm php5.6 li fuqu kollox jista' jsir aktar sempliċi u aktar konvenjenti.

L-aħħar tiben kien dialplans grafiċi fil-forma ta 'dijagramma. Meta ppruvajt nibni xi ħaġa bħal din għal freepbx, Irrealizzajt li jkolli niktebha b'mod sinifikanti u jkun aktar faċli li nibni xi ħaġa ġdida.

Ir-rekwiżiti ewlenin kienu:

  • setup sempliċi, aċċessibbli b'mod intuwittiv anke għal amministratur novizzi. Għalhekk, il-kumpaniji ma jeħtiġux manutenzjoni tal-PBX min-naħa tagħna,
  • modifika faċli sabiex il-kompiti jiġu solvuti fi żmien xieraq,
  • faċilità ta 'integrazzjoni ma' PBX. U freepbx ma kien hemm l-ebda API għat-tibdil tas-settings, i.e. Ma tistax, pereżempju, toħloq gruppi jew menus tal-vuċi minn applikazzjoni ta’ parti terza, l-API nnifisha biss Asterisk,
  • opensource - għall-programmaturi dan huwa estremament importanti għal modifiki għall-klijent.

L-idea ta 'żvilupp aktar mgħaġġel kienet li l-funzjonalità kollha tikkonsisti f'moduli fil-forma ta' oġġetti. L-oġġetti kollha kellhom ikollhom klassi ġenitur komuni, li jfisser li l-ismijiet tal-funzjonijiet ewlenin kollha huma diġà magħrufa u għalhekk diġà hemm implimentazzjonijiet default. L-oġġetti jippermettulek tnaqqas b'mod drammatiku n-numru ta 'argumenti fil-forma ta' arrays assoċjattivi b'ċwievet ta 'sekwenza, li tista' ssib f' freepbx Kien possibbli billi teżamina l-funzjoni kollha u l-funzjonijiet nested. Fil-każ ta 'oġġetti, l-awtokompletazzjoni banali se turi l-proprjetajiet kollha, u b'mod ġenerali se jissimplifika l-ħajja ħafna drabi. Barra minn hekk, il-wirt u d-definizzjoni mill-ġdid diġà jsolvu ħafna problemi bil-modifiki.

Il-ħaġa li jmiss li naqqset il-ħin tax-xogħol mill-ġdid u ta' min tevita kienet id-duplikazzjoni. Jekk hemm modulu responsabbli biex issejjaħ impjegat, allura l-moduli l-oħra kollha li għandhom bżonn jibagħtu sejħa lil impjegat għandhom jużawh, u mhux joħolqu l-kopji tagħhom stess. Għalhekk, jekk għandek bżonn tibdel xi ħaġa, allura jkollok tibdel biss f'post wieħed u t-tfittxija għal "kif taħdem" għandha titwettaq f'post wieħed, u mhux imfittxa matul il-proġett kollu.

L-ewwel verżjoni u l-ewwel żbalji

L-ewwel prototip kien lest fi żmien sena. Il-PBX kollu, kif ippjanat, kien modulari, u l-moduli mhux biss setgħu jżidu funzjonalità ġdida għall-ipproċessar tas-sejħiet, iżda wkoll ibiddlu l-interface tal-web innifsu.

L-istorja ta 'proġett wieħed jew kif qattajt 7 snin noħolqu PBX ibbażat fuq Asterisk u PHP
Iva, l-idea li tinbena dialplan fil-forma ta 'skema bħal din mhix tiegħi, iżda hija konvenjenti ħafna u għamilt l-istess għal Asterisk.

L-istorja ta 'proġett wieħed jew kif qattajt 7 snin noħolqu PBX ibbażat fuq Asterisk u PHP

Billi tikteb modulu, il-programmaturi diġà jistgħu:

  • oħloq il-funzjonalità tiegħek stess għall-ipproċessar tas-sejħa, li tista 'titqiegħed fuq id-dijagramma, kif ukoll fil-menu ta' elementi fuq ix-xellug,
  • oħloq il-paġni tiegħek stess għall-interface tal-web u żid il-mudelli tiegħek mal-paġni eżistenti (jekk l-iżviluppatur tal-paġna pprovda għal dan),
  • żid is-settings tiegħek mat-tab tas-settings prinċipali jew oħloq it-tab tas-settings tiegħek stess,
  • il-programmatur jista 'jiret minn modulu eżistenti, ibiddel parti mill-funzjonalità u jirreġistraha taħt isem ġdid jew jissostitwixxi l-modulu oriġinali.

Pereżempju, dan huwa kif tista' toħloq il-menu tal-vuċi tiegħek stess:

......
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__); //Подменить существующий модуль

L-ewwel implimentazzjonijiet kumplessi ġabu l-ewwel kburija u l-ewwel diżappunti. Kont ferħan li ħadmet, li kont diġà kapaċi nirriproduċi l-karatteristiċi ewlenin freepbx. Kont ferħan li n-nies għoġobhom l-idea tal-iskema. Kien għad hemm ħafna għażliet biex jiġi ssimplifikat l-iżvilupp, iżda anke dak iż-żmien xi wħud mill-kompiti kienu diġà qed isiru aktar faċli.

L-API biex tinbidel il-konfigurazzjoni tal-PBX kienet diżappunt - ir-riżultat ma kien xejn dak li ridna. Ħadt l-istess prinċipju bħal fi freepbx, billi tikklikkja l-buttuna Applika, il-konfigurazzjoni kollha tinħoloq mill-ġdid u l-moduli jerġgħu jibdew.

Jidher bħal dan:

L-istorja ta 'proġett wieħed jew kif qattajt 7 snin noħolqu PBX ibbażat fuq Asterisk u PHP
*Dialplan hija regola (algoritmu) li biha tiġi pproċessata sejħa.

Iżda b'din l-għażla, huwa impossibbli li tikteb API normali biex tbiddel is-settings tal-PBX. L-ewwel, l-operazzjoni ta 'applikazzjoni ta' bidliet għal Asterisk twil wisq u intensiv fir-riżorsi.
It-tieni, ma tistax issejjaħ żewġ funzjonijiet fl-istess ħin, għaliex it-tnejn se joħolqu l-konfigurazzjoni.
It-tielet nett, tapplika s-settings kollha, inklużi dawk magħmula mill-amministratur.

F'din il-verżjoni, bħal fi Askozia, kien possibbli li tiġġenera l-konfigurazzjoni ta 'moduli mibdula biss u terġa' tibda biss il-moduli meħtieġa, iżda dawn huma kollha nofs miżuri. Kien meħtieġ li jinbidel l-approċċ.

It-tieni verżjoni. Imnieħer miġbud barra denb imwaħħal

L-idea li tissolva l-problema ma kinitx li tinħoloq mill-ġdid il-konfigurazzjoni u d-dialplan għal Asterisk, iżda ssalva l-informazzjoni fid-database u aqra mid-database direttament waqt l-ipproċessar tas-sejħa. Asterisk Diġà kont naf kif naqra konfigurazzjonijiet mid-database, ibiddel biss il-valur fid-database u s-sejħa li jmiss tiġi pproċessata b'kont meħud tal-bidliet, u l-funzjoni kienet perfetta għall-qari tal-parametri tad-dialplan REALTIME_HASH.

Fl-aħħar, ma kien hemm l-ebda ħtieġa li jerġa 'jibda Asterisk meta tbiddel is-settings u s-settings kollha bdew jiġu applikati immedjatament Asterisk.

L-istorja ta 'proġett wieħed jew kif qattajt 7 snin noħolqu PBX ibbażat fuq Asterisk u PHP

L-uniċi bidliet fid-dialplan huma ż-żieda tan-numri tal-estensjoni u ideat. Iżda dawn kienu bidliet żgħar fuq il-post

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

Tista 'faċilment iżżid jew tibdel linja fid-dialplan bl-użu Ami (interface tal-kontroll Asterisk) u l-ebda reboot tad-dialplan kollu mhu meħtieġ.

Dan solviet il-problema bl-API tal-konfigurazzjoni. Tista’ anki tidħol direttament fid-database u żżid grupp ġdid jew tibdel, pereżempju, il-ħin tad-dial-up fil-qasam “dialtime” għall-grupp u s-sejħa li jmiss tkun diġà ddum iż-żmien speċifikat (Din mhix rakkomandazzjoni għal azzjoni, peress li xi operazzjonijiet API jeħtieġu Ami sejħiet).

L-ewwel implimentazzjonijiet diffiċli reġgħu ġabu l-ewwel kburija u diżappunt. Kont ferħan li ħadmet. Id-database saret rabta kritika, id-dipendenza fuq id-diska żdiedet, kien hemm aktar riskji, iżda kollox ħadem b'mod stabbli u mingħajr problemi. U l-aktar importanti, issa dak kollu li jista 'jsir permezz tal-interface tal-web seta' jsir permezz tal-API, u ntużaw l-istess metodi. Barra minn hekk, l-interface tal-web ħelset mill-buttuna "applika settings għall-PBX", li l-amministraturi spiss insew dwarha.

Id-diżappunt kien li l-iżvilupp sar aktar ikkumplikat. Mill-ewwel verżjoni, il-lingwa PHP ġġenerat dialplan fil-lingwa Asterisk u jidher kompletament li ma jinqarax, flimkien mal-lingwa nnifisha Asterisk għall-kitba ta 'dialplan huwa estremament primittiv.

Kif deher:

$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'))

Fit-tieni verżjoni, id-dialplan sar universali, inkluda l-għażliet kollha ta 'proċessar possibbli skont il-parametri u d-daqs tiegħu żdied b'mod sinifikanti. Dan kollu naqqas ħafna l-ħin tal-iżvilupp, u l-ħsieb stess li għal darb'oħra kien meħtieġ li jinterferixxi mad-dialplan għamilni imdejjaq.

It-tielet verżjoni

L-idea li tissolva l-problema ma kinitx li tiġġenera Asterisk dialplan minn PHP u l-użu FastAGI u ikteb ir-regoli kollha tal-ipproċessar fil-PHP innifsu. FastAGI tippermetti Asterisk, biex tipproċessa s-sejħa, qabbad mas-sokit. Irċievi kmandi minn hemm u ibgħat ir-riżultati. Għalhekk, il-loġika tad-dialplan hija diġà barra mill-konfini Asterisk u jista 'jinkiteb fi kwalunkwe lingwa, fil-każ tiegħi fil-PHP.

Kien hemm ħafna prova u żball. Il-problema ewlenija kienet li diġà kelli ħafna klassijiet/fajls. Ħa madwar 1,5 sekondi biex jinħolqu oġġetti, jinizjalizzawhom, u jirreġistraw lil xulxin, u dan id-dewmien għal kull sejħa mhix xi ħaġa li tista 'tiġi injorata.

L-inizjalizzazzjoni kellha seħħet darba biss u għalhekk it-tfittxija għal soluzzjoni bdiet bil-kitba ta 'servizz f'php bl-użu Pthreads. Wara ġimgħa ta 'esperimentazzjoni, din l-għażla twaqqfet minħabba l-intricacies ta' kif taħdem din l-estensjoni. Wara xahar ta 'ttestjar, kelli wkoll nabbanduna l-ipprogrammar asinkroniku fil-PHP; kelli bżonn xi ħaġa sempliċi, familjari għal kull Bidu PHP, u ħafna estensjonijiet għall-PHP huma sinkroniċi.

Is-soluzzjoni kienet is-servizz multi-threaded tagħna stess f'C, li ġie kkompilat magħhom PHPLIB. Huwa jgħabbi l-fajls php ATS kollha, jistenna li l-moduli kollha jinizjalizzaw, iżid callback ma 'xulxin, u meta kollox ikun lest, idaħħalha fil-caches. Meta tistaqsi minn FastAGI tinħoloq fluss, kopja mill-cache tal-klassijiet u d-dejta kollha hija riprodotta fiha, u t-talba tiġi mgħoddija lill-funzjoni php.

B'din is-soluzzjoni, iż-żmien minn meta tibgħat sejħa lis-servizz tagħna sal-ewwel kmand Asterisk naqas minn 1,5s għal 0,05s u din id-darba tiddependi kemmxejn fuq id-daqs tal-proġett.

L-istorja ta 'proġett wieħed jew kif qattajt 7 snin noħolqu PBX ibbażat fuq Asterisk u PHP

Bħala riżultat, iż-żmien għall-iżvilupp tad-dialplan tnaqqas b'mod sinifikanti, u nista' napprezza dan peress li kelli nikteb mill-ġdid id-dialplan kollu tal-moduli kollha fil-PHP. L-ewwelnett, il-metodi għandhom diġà jinkitbu f'php biex jinkiseb oġġett mid-database; kienu meħtieġa għall-wiri fl-interface tal-web, u t-tieni, u din hija l-ħaġa prinċipali, fl-aħħar huwa possibbli li taħdem b'mod konvenjenti ma 'kordi b'numri u arrays. b'database flimkien ma 'ħafna estensjonijiet PHP.

Biex tipproċessa d-dialplan fil-klassi tal-modulu trid timplimenta l-funzjoni dialplanDynamicCall u argument pbxCallRequest se jkun fih oġġett biex jinteraġixxi miegħu Asterisk.

L-istorja ta 'proġett wieħed jew kif qattajt 7 snin noħolqu PBX ibbażat fuq Asterisk u PHP

Barra minn hekk, sar possibbli li tiddibaggja d-dialplan (php għandu xdebug u jaħdem għas-servizz tagħna), tista 'timxi pass pass billi tara l-valuri tal-varjabbli.

Sejħa data

Kwalunkwe analiżi u rapporti jeħtieġu data miġbura b'mod korrett, u dan il-blokk PBX għadda wkoll minn ħafna prova u żball mill-ewwel sat-tielet verżjoni. Ħafna drabi, id-data tas-sejħa hija sinjal. Sejħa waħda = reġistrazzjoni waħda: min ċempel, min wieġeb, kemm damu tkellmu. F'għażliet aktar interessanti, hemm sinjal addizzjonali li jindika liema impjegat tal-PBX ġie msejjaħ waqt is-sejħa. Iżda dan kollu jkopri biss parti mill-bżonnijiet.

Ir-rekwiżiti inizjali kienu:

  • ħlief mhux biss min sejjaħ il-PBX, iżda wkoll min wieġeb, għaliex hemm interċettazzjonijiet u dan ikun jeħtieġ li jitqies meta jiġu analizzati t-telefonati,
  • ħin qabel ma tqabbad ma’ impjegat. Fil freepbx u xi PBXs oħra, is-sejħa titqies bħala mwieġba hekk kif il-PBX jiġbor it-telefon. Iżda għall-menu tal-vuċi diġà għandek bżonn tieħu t-telefon, sabiex is-sejħiet kollha jiġu mwieġba u l-ħin ta 'stennija għal tweġiba jsir 0-1 sekonda. Għalhekk, ġie deċiż li jiġi ffrankat mhux biss il-ħin qabel rispons, iżda l-ħin qabel il-konnessjoni ma 'moduli ewlenin (il-modulu innifsu jistabbilixxi din il-bandiera. Bħalissa huwa "Impjegat", "Linja esterna"),
  • għal dialplan aktar kumpless, meta sejħa tivvjaġġa bejn gruppi differenti, kien meħtieġ li tkun tista 'teżamina kull element separatament.

L-aħjar għażla rriżulta li kienet meta l-moduli PBX jibagħtu informazzjoni dwarhom infushom fuq sejħiet u fl-aħħar mill-aħħar isalvaw l-informazzjoni fil-forma ta 'siġra.

Jidher hekk:

L-ewwel, informazzjoni ġenerali dwar is-sejħa (bħal kulħadd - xejn speċjali).

L-istorja ta 'proġett wieħed jew kif qattajt 7 snin noħolqu PBX ibbażat fuq Asterisk u PHP

  1. Irċevejt sejħa fuq linja barra "Għat-test"fil-05:55:52 min-numru 89295671458 għan-numru 89999999999, fl-aħħar mill-aħħar wieġeb minn impjegat"Segretarju2» bin-numru 104. Il-klijent stenna 60 sekonda u tkellem għal 36 sekonda.
  2. Impjegat "Segretarju2"jagħmel sejħa lill-112 u impjegat iwieġeb"Maniġer1» wara 8 sekondi. Huma jitkellmu għal 14-il sekonda.
  3. Il-Klijent jiġi trasferit lill-Impjegat "maniġer1“fejn ikomplu jitkellmu għal 13-il sekonda oħra

Iżda din hija l-ponta tal-iceberg; għal kull rekord tista 'tikseb storja dettaljata tas-sejħiet permezz tal-PBX.

L-istorja ta 'proġett wieħed jew kif qattajt 7 snin noħolqu PBX ibbażat fuq Asterisk u PHP

L-informazzjoni kollha hija ppreżentata bħala nesting ta' sejħiet:

  1. Irċevejt sejħa fuq linja barra "Għat-test» fil-05:55:52 min-numru 89295671458 għan-numru 89999999999.
  2. F'05:55:53 il-linja ta' barra tibgħat sejħa liċ-ċirkwit Dħul "test»
  3. Meta tipproċessa sejħa skont l-iskema, il-modulu "sejħa tal-maniġer", li fiha s-sejħa hija 16-il sekonda. Dan huwa modulu żviluppat għall-klijent.
  4. Modulu "sejħa tal-maniġer"tibgħat sejħa lill-impjegat responsabbli għan-numru (klijent)"Maniġer1” u jistenna 5 sekondi għal tweġiba. Il-maniġer ma weġibx.
  5. Modulu "sejħa tal-maniġer"tibgħat sejħa lill-grupp"maniġers CORP" Dawn huma maniġers oħra tal-istess direzzjoni (bilqiegħda fl-istess kamra) u jistennew 11-il sekonda għal tweġiba.
  6. Grupp "maniġers CORP"jsejjaħ lill-impjegati"Maniġer1, Maniġer2, Maniġer3"fl-istess ħin għal 11-il sekonda. Bla tweġiba.
  7. Is-sejħa tal-maniġer tispiċċa. U ċ-ċirkwit jibgħat sejħa lill-modulu "Għażla ta' rotta minn 1c" Wkoll modulu miktub għall-klijent. Hawnhekk is-sejħa ġiet ipproċessata għal 0 sekondi.
  8. Iċ-ċirkwit jibgħat sejħa lill-menu tal-vuċi "Bażiku bi tisselezzjona addizzjonali" Il-klijent stenna hemm għal 31 sekonda, ma kien hemm l-ebda tisselezzjona addizzjonali.
  9. L-iskema tibgħat sejħa lill-Grupp "Segretarji", fejn il-klijent stenna 12-il sekonda.
  10. Fi grupp, 2 impjegati jissejħu fl-istess ħin "Segretarju1"U"Segretarju2"u wara 12-il sekonda l-impjegat iwieġeb"Segretarju2" It-tweġiba għas-sejħa hija duplikata f'sejħiet għall-ġenituri. Jirriżulta li fil-grupp wieġeb “Segretarju2", meta ċempel iċ-ċirkwit wieġeb "Segretarju2" u wieġeb is-sejħa fuq il-linja ta' barra b'"Segretarju2".

Huwa l-iffrankar ta 'informazzjoni dwar kull operazzjoni u t-tbejjit tagħhom li se jagħmilha possibbli li sempliċiment isiru rapporti. Rapport dwar il-menu tal-vuċi jgħinek issir taf kemm jgħin jew ifixkel. Ibni rapport dwar sejħiet mitlufa mill-impjegati, filwaqt li tqis li s-sejħa ġiet interċettata u għalhekk ma titqiesx mitlufa, u filwaqt li tqis li kienet sejħa tal-grupp, u xi ħadd ieħor wieġeb qabel, li jfisser li s-sejħa wkoll ma ntilfitx.

Ħażna ta 'informazzjoni bħal din tippermettilek tieħu kull grupp separatament u tiddetermina kemm taħdem b'mod effettiv, u tibni graff ta' gruppi mwieġba u mitlufa skond is-siegħa. Tista 'wkoll tiċċekkja kemm hija preċiża l-konnessjoni mal-maniġer responsabbli billi tanalizza t-trasferimenti wara li tikkonnettja mal-maniġer.

Tista 'wkoll twettaq studji pjuttost atipiċi, pereżempju, kemm-il darba numri li mhumiex fid-database jċemplu l-estensjoni korretta jew liema perċentwal ta' sejħiet ħerġin jintbagħtu lil mowbajl.

Ir-riżultat?

Speċjalista mhux meħtieġ li jżomm il-PBX; l-aktar amministratur ordinarju jista 'jagħmel dan - ittestjat fil-prattika.

Għal modifiki, speċjalisti bi kwalifiki serji mhumiex meħtieġa; għarfien tal-PHP huwa biżżejjed, għaliex Moduli diġà nkitbu għall-protokoll SIP, u għall-kju, u għas-sejħa ta 'impjegat, u oħrajn. Hemm klassi tgeżwir għal Asterisk. Biex tiżviluppa modulu, programmatur jista' (u b'mod tajjeb għandu) isejjaħ moduli lesti. U l-għarfien Asterisk huma kompletament bla bżonn jekk il-klijent jitlob li jżid paġna b'xi rapport ġdid. Iżda l-prattika turi li għalkemm programmaturi ta 'partijiet terzi jistgħu jlaħħqu, iħossuhom insiguri mingħajr dokumentazzjoni u kopertura normali ta' kummenti, għalhekk għad hemm lok għal titjib.

Il-moduli jistgħu:

  • toħloq kapaċitajiet ġodda għall-ipproċessar tas-sejħiet,
  • żid blokki ġodda mal-interface tal-web,
  • jiret minn kwalunkwe moduli eżistenti, tiddefinixxi mill-ġdid il-funzjonijiet u tibdilha, jew sempliċement tkun kopja kemmxejn modifikata,
  • żid is-settings tiegħek mal-mudell tas-settings ta 'moduli oħra u ħafna aktar.

Issettjar tal-PBX permezz tal-API. Kif deskritt hawn fuq, is-settings kollha huma maħżuna fid-database u jinqraw fil-ħin tas-sejħa, sabiex tkun tista 'tbiddel is-settings kollha tal-PBX permezz tal-API. Meta ssejjaħ l-API, il-konfigurazzjoni mhix ikkreata mill-ġdid u l-moduli ma jerġgħux jinbdew, għalhekk, ma jimpurtax kemm għandek settings u impjegati. It-talbiet tal-API jiġu esegwiti malajr u ma jimblukkawx lil xulxin.

Il-PBX jaħżen l-operazzjonijiet ewlenin kollha b'sejħiet b'tul ta' żmien (stennija/konversazzjoni), nesting u f'termini PBX (impjegat, grupp, linja esterna, mhux kanal, numru). Dan jippermettilek tibni diversi rapporti għal klijenti speċifiċi u ħafna mix-xogħol huwa li toħloq interface faċli għall-utent.

Iż-żmien se jgħid x'se jiġri wara. Għad hemm ħafna sfumaturi li jridu jsiru mill-ġdid, għad hemm ħafna pjanijiet, iżda għaddiet sena mill-ħolqien tat-3 verżjoni u diġà nistgħu ngħidu li l-idea qed taħdem. L-iżvantaġġ ewlieni tal-verżjoni 3 huwa r-riżorsi tal-ħardwer, iżda normalment dan huwa dak li għandek tħallas għalih għall-faċilità ta 'żvilupp.

Sors: www.habr.com

Żid kumment