Bir layihənin hekayəsi və ya 7 il ərzində Asterisk və Php əsasında PBX yaratmağım

Əminəm ki, bəzilərinizdə, mənim kimi, unikal bir şey yaratmaq fikri olub. Bu məqalədə mən telefon mərkəzinin inkişafı zamanı qarşılaşdığım texniki problemləri və həll yollarını təsvir edəcəyəm. Bəlkə bu, birinin öz ideyasına qərar verməsinə, bəzilərinin isə açılmış yolu izləməsinə kömək edəcək, çünki mən də birinci addım atanların təcrübəsindən istifadə etdim.

Bir layihənin hekayəsi və ya 7 il ərzində Asterisk və Php əsasında PBX yaratmağım

Fikir və əsas tələblər

Hər şey, sadəcə, sevgi ilə başladı Asterisk (kommunikasiya tətbiqləri yaratmaq üçün çərçivə), telefoniyanın avtomatlaşdırılması və quraşdırmalar FreePBX (vəb interfeysi üçün Asterisk). Şirkətin tələbləri xüsusi deyilsə və FreePBX – hər şey mükəmməl. Bütün quraşdırma bir gündə bitdi, şirkət konfiqurasiya edilmiş telefon mərkəzi, rahat interfeys və qısa təlim aldı, əlavə olaraq istəyə uyğun dəstək.

Amma ən maraqlı tapşırıqlar qeyri-standart idi və o vaxtlar bu qədər fantastik deyildi. Asterisk çox şey edə bilər, amma veb-interfeysi işlək vəziyyətdə saxlamaq üçün xeyli daha çox vaxt sərf etmək lazım idi. Beləliklə, kiçik bir detal bütün telefon mərkəzinin quraşdırılmasından çox daha uzun zaman ala bilərdi. Məsələ veb interfeysini yazmağın uzun zaman alması ilə deyil, daha çox arxitekturanın xüsusiyyətləri ilə bağlıdır. FreePBXArхitektura yanaşmaları və metodları FreePBX php4 dövründə qoyulub, o vaxt php5.6 artıq var idi və burada hər şeyi daha asan və rahat etmək olardı.

Son damla qrafik diaqramları oldu. Onları yaratmağa çalışdığımda FreePBX, başa düşdüm ki, onu ciddi şəkildə yenidən yazmaq lazım olacaq və daha asan başdan bir şey yaratmaqdır.

Əsas tələblər bunlardı:

  • sadə konfiqurasiya, yeni başlayan administrator üçün belə intuitiv əlçatan olmalıdır. Buna görə də şirkətlərin bizim tərəfdən telefon mərkəzinin saxlanmasına ehtiyacı yoxdur,
  • asan təkmilləşdirmə, beləliklə, məsələlər məqbul müddətdə həll olunmalıdır,
  • telefon mərkəzi ilə inteqrasiya rahatlığı. A FreePBX yox idi API tənzimləmələrini dəyişmək üçün, yəni, məsələn, qruplar və ya səs menyuları yaratmaq üçün xarici tətbiqdən istifadə edilə bilməzdi, yalnız Asterisk,
  • opensource-in öz API-si – proqramçılar üçün müştəri tələblərinə uyğun təkmilləşdirmələr etmək üçün çox önəmlidir.

Daha sürətli inkişaf ideyası, bütün funksionallığın obyekt şəklində modullardan ibarət olması idi. Bütün obyektlərin ortaq bir valideyn sinfi olmalı idi, yəni bütün əsas funksiyaların adları artıq məlum idi və demək ki, default olaraq reallaşmalar var idi. Obyektlər, assosiativ massivlər şəklində dəyişənlərin sayını kəskin azaldacaq, hansı ki, onları FreePBX bütün funksiyaları və daxili funksiyaları araşdırmaqla öyrənmək mümkün idi. Obyektlərdə adi avtomatik tamamlama bütün xüsusiyyətləri göstərəcək, hətta həyatı çox asanlaşdıracaq. Üstəlik, irsilik və yenidən müəyyən etmə bir çox təkmilləşdirmə problemində həll yolu təqdim edir.

Sonra, layihənin icra müddətini uzadan və qaçınmaq lazım olan şey – təkrarlamadır. Bir işçi ilə əlaqə saxlamağa məsul modul varsa, o, işçiyə zəng göndərməli olan bütün digər modullar tərəfindən istifadə olunmalıdır, öz nüsxələrini yaratmaqdansa. Beləliklə, bir şeyi dəyişmək lazım olduqda, yalnız bir yerdə dəyişiklik etməli və «bu necə işləyir» yazmaq üçün yalnız bir yeri axtarmalı olacaqsınız, bütün layihə üzrə axtarmaq lazım deyil.

İlk versiya və ilk səhvlər

İlk prototip artıq bir ildən sonra hazır oldu. Bütün ATS, planlandığı kimi, modul strukturda idi, modullar yalnız zənglərin işlənməsi üçün yeni funksionallar əlavə edə bilməz, həm də veb-interfeysi dəyişdirə bilərdi.

Bir layihənin hekayəsi və ya 7 il ərzində Asterisk və Php əsasında PBX yaratmağım
Bəli, dialplana belə bir sxem şəklində qurulması fikri mənim deyil, amma o, çox rahatdır və mən də eyni şeyi etdiyim Asterisk.

Bir layihənin hekayəsi və ya 7 il ərzində Asterisk və Php əsasında PBX yaratmağım

Modul yazmaqla, proqramçılar artıq:

  • zəngin işlənməsi üçün öz funksionallarını yaratmaq, onları sxemdə yerləşdirmək və sol tərəfdəki elementlər menyusuna daxil etmək,
  • veb-interfeysi üçün öz səhifələrini yaratmaq və mövcud səhifələrə öz şablonlarını əlavə etmək (əgər səhifə inkişaf etdiricisi bunu nəzərdə tutubsa),
  • əsas parametrlər sekmesine öz tənzimləmələrini əlavə etmək və ya öz tənzimləmələr sekmesini yaratmaq,
  • proqramçı mövcud moduldan irsi ola bilər, funksionallığın bir hissəsini dəyişə bilər və yeni adla qeyd edə bilər və ya orijinal modulu əvəz edə bilər.

Məsələn, belə bir səsli menyu yaratmaq mümkündür:

......
class CPBX_MYIVR extends CPBX_IVR
{
 function __construct()
 {
 parent::__construct();
 $this->_module = "myivr";
 }
}
.....
$myIvrModule = new CPBX_MYIVR();
CPBXEngine::getInstance()->registerModule($myIvrModule,__DIR__); //Yeni modulu qeyd et
CPBXEngine::getInstance()->registerModuleExtension($myIvrModule,'ivr',__DIR__); //Mövcud modulu əvəz et

İlk mürəkkəb tətbiqlər ilk qürur və ilk məyusluqları gətirdi. Bunu işlədiyini görmək sevindirirdi, artıq əsas imkanları təkrarlaya bilmişdim. FreePBXİnsanların sxem ideyasını bəyəndiyinə sevindim. İstifadə inkişafını asanlaşdıracaq daha çox variant var idi, amma o vaxtdan artıq bəzi vəzifələr daha asan yerinə yetirilirdi.

Məyusluq, ATS-nin konfiqurasiyasını dəyişdirmək üçün API oldu – istədiyimdən tamamilə fərqli çıxdı. Eynilə, düyməyə basıldıqda, bütün konfiqurasiya yenidən yaradılır və modullar yenidən başladılır. FreePBXMəsələn, bu cür görünür:

Belə görünür:

Bir layihənin hekayəsi və ya 7 il ərzində Asterisk və Php əsasında PBX yaratmağım
*Dialplan – zəngi işləyən qayda (alqoritm).

Amma belə bir variantla ATS-nin tənzimləmələrini dəyişdirmək üçün normal API yazmaq mümkün deyil. Birincisi, dəyişikliklərin tətbiq edilməsi prosesi Asterisk çox uzun və resurs tələb edən.
İkincisi, eyni anda iki funksiyanı çağırmaq mümkün deyil, çünki hər ikisi konfiqurasiya yaradacaq.
Üçüncüsü, bütün tənzimləmələri, o cümlədən administrator tərəfindən edilənləri tətbiq edir.

Bu versiyada, eləcə də Askozia, modifikasi edilən modullardan yalnız konfiqurasiya yaratmaq və yalnız lazım olan modulları yenidən başlatmaq mümkün idi, lakin bunlar son dərəcə yarımçıq həllər idi. Yanaşmanı dəyişdirmək lazım idi.

İkinci versiya. Burnunu çıxardı, quyruğu isə batdı.

Problemin həlli üçün ideya konfiqurasiyanı və dial-planı yenidən yaratmamaq oldu Asterisk, ancaq məlumatları bazada saxlamaq və zəng emalı zamanı birbaşa bazadan oxumaq. Asterisk artıq konfiqurasiyaları bazadan oxumağı bacarırdı, bazadakı dəyərin dəyişdirilməsi kifayət idi və növbəti zəng artıq dəyişiklikləri nəzərə alaraq emal olunacaqdı, dial-plan parametrlərini oxumaq üçün isə REALTIME_HASH.

Nəticədə hətta konfiqurasiyanın dəyişdirilməsi zamanı belə, yenidən başlatmağa ehtiyac olmadan Asterisk bütün parametrlər dərhal Asterisk.

Bir layihənin hekayəsi və ya 7 il ərzində Asterisk və Php əsasında PBX yaratmağım

saralan dia-planında – yalnız daxili nömrələrin əlavə olunması və hints. Ancaq bunlar kiçik müdaxilələr idi.

exten=>101,1,GoSub(‘sub-callusers’,s,1(1)); - kiçik müdaxilə, ami vasitəsilə əlavə olunur/dəyişdirilir

; sub-callusers - modul quraşdırılan zaman yaradılan ümumi funksiyadır.
[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)
...

Dial-planda bir sətiri əlavə etmək və ya dəyişmək asanlıqla Ami (idarəetmə interfeysi Asterisk) və bütün dial-planın yenidən yüklənməsi tələb olunmur.

Beləliklə, konfiqurasiya üçün API ilə bağlı problem həll olundu. Hətta birbaşa bazaya daxil olmaq və yeni bir qrup əlavə etmək və ya məsələn, qrupun “dialtime” sahəsində zəngin vaxtını dəyişdirmək olar və növbəti zəng artıq göstərilən müddətə davam edəcək (Bu, hərəkət üçün tövsiyə deyil, çünki bəziləri API əməliyyatları üçün Ami zənglər) tələb olunacaq.

İlk mürəkkəb tətbiqlər yenidən first pride və disappointment gətirdi. Bu, işlədiyini görmək sevindirirdi. Verilənlər bazası kritik əhəmiyyət kəsb edən bir halqaya çevrildi, diskdən asılılıq artdı, risklər daha çox oldu, lakin hər şey sabit və problemsiz işləyirdi. Əsas odur ki, indi web interfeysindən həyata keçirilə biləcəklər API vasitəsilə də edilə bilərdi və bu zaman eyni metodlar istifadə edilirdi. Əlavə olaraq, web interfeysi, administratorların tez-tez unudduğu “parametrləri PBX-ə tətbiq et” düyməsini silmişdi.

Təəssüf ki, inkişafın çətinləşməsi oldu. İlk versiyadan başlayaraq PHP dili dial-planı Asterisk də vurğulandı, və bunun oxunması tamamilə çətindir, üstəlik bu dil Asterisk dial-planın yazılması üçün son dərəcə sadədir.

Bu necə görünürdü:

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

İkinci versiyada dialplan universal hala gəldi, orada parametrlərə görə işləmlərin bütün mümkün variantları daxil edilib və onun ölçüsü əhəmiyyətli dərəcədə artıb. Bütün bunlar inkişaf müddətini xeyli yavaşıdıb və dialplanın bir daha dəyişdirilməli olduğu fikri kədər gətirirdi.

Üçüncü versiya

Problemin həlli ideyası, dialplanı php-dən yaratmamaqdır, əvəzində Asterisk FastAGI istifadə olunmalı və bütün işləmə qaydaları artıq php-də yazılmalıdır. , zəngin işlənməsi üçün soketə qoşulmaq. Oradan əmrləri almaq və nəticələri göndərmək. Beləliklə, dialplanın məntiqi artıq sərhədlərdən kənardadır istifadə olunmalı və bütün işləmə qaydaları artıq php-də yazılmalıdır. rezerv dəyəri göstərmək üçün, əgər yoxdur Asteriskvə istənilən dildə, bu halda php-də yazıla bilər. Asterisk Bu sürətdə çoxlu sınaqlar və səhvlər oldu. Əsas problem, mənim artıq çoxlu siniflərim/fayllarımın olması idi. Obyektlərin yaradılması, başlanğıc və bir-birinə qeydiyyatdan keçməsi üçün təxminən 1,5 saniyə vaxt gedirdi və bu gecikmə hər zəng üçün gözardına alına bilməzdi.

Başlanğıc yalnız bir dəfə olmalı idi və buna görə də, həlletmə axtarışları php-də

Pthreads istifadə edərək bir xidmət yazmaqla başladı. Bir həftəlik sınaqlardan sonra bu variant, bu genişlənmənin incəlikləri səbəbindən dayandırıldı. Php-də asinxron proqramlaşdırmadan da bir ay testdən sonra imtina etməli oldum, sadə, php-yə yeni başlayan hər kəsin tanıdığı bir şey olmalı idi, üstəlik, php üçün bir çox genişlənmə sinxron idi.Həll, 'C' dilində xüsusi çoxşaxəli xidmət oldu, bu isə

PHPLIB ilə yığılır. O, bütün php fayllarını yükləyir, bütün modulların başlanmasını gözləyir, bir-biri ilə geri çağırmaları əlavə edirlər və hər şey hazır olduqda - keşi saxlayır. Sorğu edildikdəbir iplik yaradılır, burada keştən bütün siniflərin və məlumatların nüsxəsi oxunur və sorğu php funksiyasına ötürülür. istifadə olunmalı və bütün işləmə qaydaları artıq php-də yazılmalıdır. Belə bir həll ilə, zəngin bizim xidmətə göndərilməsindən ilk əmrlə qədər olan vaxt

1,5 s-dən 0,05 s-ə qədər azaldıldı və bu vaxt layihənin böyüklüyündən az asılıdır. Asterisk Nəticədə, dialplanın inkişafı üçün vaxt əhəmiyyətli dərəcədə azaldı və bunu qiymətləndirmək mümkündür, çünki mən bütün modullardakı dialplanı php-də yenidən yazmalı oldum. Birincisi, php-də obyekti bazadan almaq üçün artıq metodlar yazılmalıdır, bunlar veb interfeysdə göstərilmək üçün lazım idi, ikincisi və bu da əsasdır – nəhayət, ədədi sətrərlə verilənlər bazası ilə işləmədə rahatlıq təmin edən bir çox php genişlənməsi ilə yanaşı çalışmaq imkanı yaradıldı.

Bir layihənin hekayəsi və ya 7 il ərzində Asterisk və Php əsasında PBX yaratmağım

Dialplanı işləmək üçün modul sinfinda aşağıdakı funksiyanı tətbiq etmək lazımdır

dialplanDynamicCall və arqument pbxCallRequest obrasını mübadiləyə imkan tanıyır. Əlavə olaraq, dialplanın debuq edilməsi imkanı yarandı (php-də xdebug var və bizim xidmətimizdə işləyir), addım-addım irəliləyib dəyişənlərin dəyərlərini gözdən keçirmək mümkündür. Asterisk.

Bir layihənin hekayəsi və ya 7 il ərzində Asterisk və Php əsasında PBX yaratmağım

Zəng məlumatları

Zəng məlumatları

Hər hansı bir analitika və hesabat üçün düzgün toplanmış məlumatlar tələb olunur və bu ATS bloku da birincidən üçüncü versiyaya qədər çox sayda sınaqlar və səhvlərdən keçirildi. Tez-tez çağırışlarla bağlı məlumatlar cədvəl şəklində təqdim olunur. Bir çağırış = bir qeydi: kim zəng edib, kim cavab verib, nə qədər danışılıb. Daha maraqlı variantlarda, çağırış zamanı ATS tərəfindən çağırılan işçilər haqqında əlavə cədvəl də var. Lakin bunlar yalnız ehtiyacların bir hissəsini qarşılayır.

İlkin tələblər bunlar oldu:

  • ATS-in yalnız kimlərə zəng etdiyini deyil, kimlərin cavab verdiyini də saxlamaq, çünki əsərlərlə analiz edilərkən bu nəzərə alınmalıdır,
  • işçi ilə əlaqənin zamanını. Burada FreePBX və bəzi digər ATS-lərdə, zəng cavab verildiyi zaman ATS xətti qaldırdıqda hesab edilir. Lakin səsli menyu üçün xətti qaldırmaq lazımdır, beləliklə bütün zənglər cavab verilmiş olur və gözləmə vaxtı 0-1 saniyə olur. Buna görə, yalnız cavab müddətini deyil, əsas modullarla əlaqənin zamanını saxlamağa qərar verilib (modul bu bayrağı özündə təyin edir. İndiki dövr «İşçi», «Xarici xətt»dir),
  • daha mürəkkəb dial planda, zəngin müxtəlif qruplar arasında gəzintisi zamanı hər elementi ayrı-ayrılıqda araşdırmaq imkanı lazım idi.

Ən yaxşı variant, ATS modullarının zənglər haqqında məlumat göndərməsi və nəticədə məlumatı ağac şəklində saxlamasıdır.

Bu belə görünür:

İlk öncə zəng haqqında ümumi məlumat (hər kəsdə olduğu kimi — heç bir xüsusi şey).

Bir layihənin hekayəsi və ya 7 il ərzində Asterisk və Php əsasında PBX yaratmağım

  1. Xarici xəttdən zəng qəbul edildi «Test üçün» saat 05:55:52-də 89295671458 nömrəsindən 89999999999 nömrəsinə, nəticədə ona «Katib2» nömrə 104-ə cavab verib. Müştəri 60 saniyə gözləyib və 36 saniyə danışıb.
  2. İşçi «Katib2112 nömrəsinə zəng edir və ona «Menecer1» 8 saniyədən sonra cavab verir. 14 saniyə danışırlar.
  3. Müştəri «menecer1»-ə keçirilir və burada daha 13 saniyə danışmağa davam edirlər.

Lakin bu yalnız buzdağının görünən hissəsidir, hər bir qeyddə zəngin ATS-da keçidini ətraflı əldə etmək mümkündür.

Bir layihənin hekayəsi və ya 7 il ərzində Asterisk və Php əsasında PBX yaratmağım

Bütün məlumat çağırışların iç-içə təqdimatı şəklindədir:

  1. Xarici xəttdən zəng qəbul edildi «Test üçün» saat 05:55:52-də 89295671458 nömrəsindən 89999999999 nömrəsinə.
  2. Saat 05:55:53-də xarici xətt zəngi Giriş sxeminə «test»
  3. Zəngin işlənməsi zamanı sxem vasitəsilə «menecerlə zəng» moduluna çağırılır, burada zəng 16 saniyə qaldı. Bu, müştəri üçün hazırlanmış moduldur.
  4. Modul «menecerlə zəng» zəngi cavab verilməsi üçün məsul işçiyə «Menecer1» göndərir və 5 saniyəlik gözləmə müddətini gözləyir. Menecer cavab vermədi.
  5. Modul «menecerlə zəng» zəngi «KORP Menecerləri» qrupuna göndərir. Bunlar eyni istiqamət üzrə digər menecerlərdir (eyni otaqda otururlar) və 11 saniyəlik cavab gözləyir.
  6. Qrup «KORP Menecerləri» eyni anda «Menecer1, Menecer2, Menecer3» işçilərini 11 saniyə müddətində çağırır. Cavab yoxdur.
  7. Menecer çağrısı sona eriyor. Ve çağrı şemasının modülüne gönderiyor «1C'ten güzergah seçimi». Bu da müşteri için yazılmış bir modül. Burada çağrı 0 saniye işlendi.
  8. Şema çağrıyı «sesli menü»ye gönderiyor «Ana ile yeniden arama». Müşteri burada 31 saniye bekledi, yeniden arama olmadı.
  9. Şema çağrıyı «Grup»a gönderiyor «Sekreterler», burada müşteri 12 saniye bekledi.
  10. Grup içinde aynı anda 2 çalışan çağrılacak «Sekreter1» və «Katib2» ve 12 saniye sonra çalışan «Katib2» cevap veriyor. Çağrı cevabı üst çağrılara iletiliyor. Yani grupta: «Katib2» cevapladı, şema çağrısında «Katib2» cevapladı ve dış hat çağrısına «Katib2».

» cevap verdi. Her işlemin ve bu işlemlerin iç içeliğinin bilgilerini saklamak, raporların kolayca yapılmasını sağlayacak. Sesli menü raporu, bunun ne kadar faydalı veya engelleyici olduğunu anlamaya yardımcı olacaktır. Çalışanlar tarafından kaçırılan çağrılar hakkında bir rapor oluşturmak, çağrının alındığını ve dolayısıyla talep edilmediğini göz önünde bulundurarak ve bunun grup çağrısı olduğunu, başka birinin daha önce aldığını dikkate alarak da geçerli olmayan çağrıları rapor etmek mümkün.

Bu tür bilgi saklama, her grubu ayrı ayrı ele almaya ve ne kadar etkin çalıştığını belirlemeye olanak tanıyacak, saatlere göre cevaplanan ve kaçırılan çağrıların grafiğini oluşturabilecektir. Ayrıca, yöneticinin cevaplama süreciyle ilgili bağlantının ne kadar doğru olduğuna dair verileri analiz ederek, yöneticinin bağlantıdan sonraki üzerindeki geçişleri incelemeye imkan verecektir.

Bunun yanı sıra, tipik olmayan araştırmalar yapmak da mümkündür; örneğin, veritabanında bulunmayan numaraların ne sıklıkla doğru ek numarayı çevirtiği ya da çıkış çağrılarının ne kadarının mobil telefonlara yönlendirme olduğunu belirlemek.

Nəticədə nə oldu?

PBX bakım için uzman gerektirmemektedir, bu işi en sıradan bir yönetici rahatlıkla halledebilir – pratikte kanıtlandı.

Geliştirmeler için ciddi bir uzmanlık gerekmez, yalnızca PHP bilgisi yeterlidir; çünkü SIP protokolü, kuyruk ve çalışan çağrısı gibi modüller zaten yazılmıştır. " Asterisk. Modül geliştirmek için programcı mevcut modülleri çağırabilir (ve aslında çağırması gerekir). Ancak, müşteri herhangi bir yeni raporla yeni bir sayfa eklemeyi istediğinde bilgiye ihtiyaç yoktur. Ancak pratik gösteriyor ki, dış programcılar başarılı olsalar da, belgeler ve yeterli yorum kapsamı olmaksızın kendilerini güvensiz hissediyorlar, bu nedenle ilerlemek için hala çok yol var. Asterisk Modüller şunları yapabilir:

çağrı işleme için yeni olanaklar yaratmak,

  • web arayüzüne yeni bloklar eklemek,
  • mevcut modüllerden herhangi birinden kalıtım almak, fonksiyonları yeniden tanımlamak ve onu değiştirmek veya sadece hafifçe değiştirilmiş bir kopyası olmak,
  • diğer modüllerin ayar şablonuna kendi ayarlarını eklemek ve daha fazlası.
  • добавлять свои настройки в шаблон настроек других модулей и многое другое.

API vasitəsilə PBX parametrləri. Yuxarıda qeyd edildiyi kimi, bütün parametrlər verilənlər bazasında saxlanılır və çağırış zamanı oxunur, buna görə də API vasitəsilə PBX-in bütün parametrlərini dəyişdirmək mümkündür. API çağırışları zamanı konfiqurasiya yenidən yaradılmır və modullar yenidən başladılmır, beləliklə, sahələrinizin və işçilərinizin sayı nə qədər çox olursa olsun, bu, vacib deyil. API sorğuları tez yerinə yetirilir və bir-birini bloklamır.

PBX, zənglər ilə bağlı bütün əsas əməliyyatları onların müddətləri (gözləmə / danışıq), dərinlikləri və PBX terminologiyası (işçi, qrup, xarici xətt, kanal deyil, nömrə) ilə birlikdə saxlayır. Bu, spesifik müştərilər üçün müxtəlif hesabatlar hazırlamağa imkan verir və işin böyük hissəsi rahat bir interfeys yaratmaqdır.

Gələcəkdə nələrin olacağını zaman göstərəcək. Dəyişməyə ehtiyacı olan hələ çox nüans var, planlar da var, amma 3-cü versiyanın yaradılmasından bir il keçib və artıq bu ideyanın işlədiyini deyə bilərik. 3-cü versiyanın əsas mənfi cəhəti - hardware resurslarıdır, amma inkişaf asanlığına görə adətən həmişə bu cür ödəmək lazım olur.

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster