Bir layihənin hekayəsi və ya Asterisk və Php əsasında PBX yaratmaq üçün 7 il sərf etdiyim hekayə

Şübhəsiz ki, bir çoxunuzun mənim kimi unikal bir şey etmək fikri var idi. Bu yazıda mən PBX-i inkişaf etdirərkən qarşılaşmalı olduğum texniki problemləri və həll yollarını təsvir edəcəyəm. Ola bilsin ki, bu, kiməsə öz ideyası ilə bağlı qərar verməyə, kiməsə yaxşı keçilmiş yolla getməyə kömək edəcək, çünki mən də qabaqcılların təcrübəsindən yararlanmışam.

Bir layihənin hekayəsi və ya Asterisk və Php əsasında PBX yaratmaq üçün 7 il sərf etdiyim hekayə

İdeya və əsas tələblər

Və hər şey sadəcə sevgi ilə başladı Asterisk (kommunikasiya proqramlarının qurulması üçün çərçivə), telefoniya və qurğuların avtomatlaşdırılması PulsuzPBX (üçün veb interfeysi Asterisk). Əgər şirkətin ehtiyacları konkretliksiz olsaydı və imkanlar daxilində olsaydı PulsuzPBX -hər şey əladır. Bütün quraşdırma XNUMX saat ərzində baş verdi, şirkət konfiqurasiya edilmiş PBX, istifadəçi dostu interfeys və qısa təlim və arzu olunarsa dəstək aldı.

Ancaq ən maraqlı tapşırıqlar qeyri-standart idi və o qədər də inanılmaz deyildi. Asterisk çox şey edə bilər, lakin veb interfeysini işlək vəziyyətdə saxlamaq üçün dəfələrlə çox vaxt sərf etmək lazım idi. Beləliklə, kiçik bir detal ATS-in qalan hissəsini quraşdırmaqdan daha uzun çəkə bilər. Məsələ onda deyil ki, veb-interfeys yazmaq uzun müddət tələb edir, əksinə, əsas memarlıq xüsusiyyətlərindədir. PulsuzPBX. Memarlıq yanaşmaları və metodları PulsuzPBX php4 zamanı tərtib edilmişdi və o anda hər şeyi daha sadə və daha rahat etmək üçün artıq php5.6 var idi.

Son damla diaqram şəklində qrafik dialplanlar idi. Bunun üçün belə bir şey qurmağa çalışdığımda PulsuzPBX, başa düşdüm ki, onu əhəmiyyətli dərəcədə yenidən yazmalıyam və yeni bir şey qurmaq daha asan olacaq.

Əsas tələblər bunlar idi:

  • sadə quraşdırma, hətta təcrübəsiz administrator üçün intuitiv olaraq əlçatandır. Beləliklə, şirkətlər bizdən ATS texniki xidmət tələb etmir,
  • tapşırıqların adekvat vaxtda həll edilməsi üçün asan modifikasiya,
  • ATS ilə inteqrasiya asanlığı. U PulsuzPBX parametrləri dəyişdirmək üçün heç bir API yox idi, yəni. Siz, məsələn, üçüncü tərəf proqramından qruplar və ya səsli menyular yarada bilməzsiniz, yalnız API-nin özündən Asterisk,
  • açıq mənbə - proqramçılar üçün bu, müştəri üçün dəyişikliklər üçün son dərəcə vacibdir.

Daha sürətli inkişaf ideyası bütün funksionallığın obyektlər şəklində modullardan ibarət olması idi. Bütün obyektlərin ümumi ana sinfi olmalıdır, yəni bütün əsas funksiyaların adları artıq məlumdur və buna görə də artıq standart tətbiqlər mövcuddur. Obyektlər sətir düymələri ilə assosiativ massivlər şəklində arqumentlərin sayını kəskin şəkildə azaltmağa imkan verəcək. PulsuzPBX Bütün funksiyanı və iç-içə funksiyaları tədqiq etməklə mümkün oldu. Obyektlərin vəziyyətində, banal avtomatik tamamlama bütün xüsusiyyətləri göstərəcək və ümumiyyətlə həyatı dəfələrlə sadələşdirəcəkdir. Üstəlik, miras və yenidən təyinetmə artıq dəyişikliklərlə bir çox problemi həll edir.

Yenidən işləmə vaxtını yavaşlatan və qarşısını almağa dəyər olan növbəti şey təkrarlama idi. Bir işçiyə zəng etmək üçün məsul bir modul varsa, işçiyə zəng göndərməli olan bütün digər modullar ondan istifadə etməli və öz nüsxələrini yaratmamalıdır. Beləliklə, bir şeyi dəyişdirmək lazımdırsa, onda yalnız bir yerdə dəyişməli olacaqsınız və "necə işləyir" axtarışı bir yerdə aparılmalı və bütün layihə boyunca axtarılmamalıdır.

İlk versiya və ilk səhvlər

İlk prototip bir il ərzində hazır oldu. Bütün ATS, planlaşdırıldığı kimi, modul idi və modullar nəinki zənglərin emalı üçün yeni funksionallıq əlavə edə, həm də veb interfeysinin özünü dəyişdirə bildi.

Bir layihənin hekayəsi və ya Asterisk və Php əsasında PBX yaratmaq üçün 7 il sərf etdiyim hekayə
Bəli, belə bir sxem şəklində dialplan qurmaq fikri mənim deyil, amma çox rahatdır və mən də eyni şeyi etdim Asterisk.

Bir layihənin hekayəsi və ya Asterisk və Php əsasında PBX yaratmaq üçün 7 il sərf etdiyim hekayə

Modul yazmaqla proqramçılar artıq:

  • diaqramda, eləcə də soldakı elementlər menyusunda yerləşdirilə bilən zəng emalı üçün öz funksionallığınızı yaradın;
  • veb interfeysi üçün öz səhifələrinizi yaradın və şablonlarınızı mövcud səhifələrə əlavə edin (əgər səhifə tərtibçisi bunu təmin edibsə),
  • parametrlərinizi əsas parametrlər sekmesine əlavə edin və ya öz parametrlər nişanınızı yaradın,
  • proqramçı mövcud moduldan miras ala, funksionallığın bir hissəsini dəyişdirə və onu yeni adla qeydiyyatdan keçirə və ya orijinal modulu əvəz edə bilər.

Məsələn, öz səs menyunuzu belə yarada bilərsiniz:

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

İlk kompleks tətbiqlər ilk qürur və ilk məyusluqları gətirdi. İşə yaradığına, əsas xüsusiyyətləri artıq canlandıra bildiyimə görə sevindim PulsuzPBX. İnsanların sxem ideyasını bəyənməsinə sevindim. İnkişafı sadələşdirmək üçün hələ də bir çox variant var idi, lakin hətta o dövrdə bəzi tapşırıqlar artıq asanlaşdırılırdı.

PBX konfiqurasiyasını dəyişdirmək üçün API məyus oldu - nəticə heç də istədiyimiz kimi olmadı. Əvvəlki kimi eyni prinsipi götürdüm PulsuzPBX, Tətbiq düyməsini klikləməklə, bütün konfiqurasiya yenidən yaradılır və modullar yenidən işə salınır.

Belə görünür:

Bir layihənin hekayəsi və ya Asterisk və Php əsasında PBX yaratmaq üçün 7 il sərf etdiyim hekayə
*Dialplan zəngin işləndiyi bir qaydadır (alqoritm).

Ancaq bu seçimlə PBX parametrlərini dəyişdirmək üçün normal API yazmaq mümkün deyil. Birincisi, dəyişikliklərin tətbiqi əməliyyatı Asterisk çox uzun və resurs tələb edir.
İkincisi, eyni anda iki funksiyanı çağıra bilməzsiniz, çünki hər ikisi konfiqurasiya yaradacaq.
Üçüncüsü, administrator tərəfindən edilənlər də daxil olmaqla bütün parametrləri tətbiq edir.

Bu versiyada olduğu kimi Askozia, yalnız dəyişdirilmiş modulların konfiqurasiyasını yaratmaq və yalnız zəruri modulları yenidən başlatmaq mümkün idi, lakin bunların hamısı yarım ölçülərdir. Yanaşma tərzini dəyişmək lazım idi.

İkinci versiya. Burun quyruğunu çıxardı ilişdi

Problemi həll etmək fikri konfiqurasiya və dialplanı yenidən yaratmaq deyildi Asterisk, lakin məlumatı verilənlər bazasında saxlayın və zəngi emal edərkən birbaşa verilənlər bazasından oxuyun. Asterisk Mən artıq verilənlər bazasından konfiqurasiyaları necə oxumağı bilirdim, sadəcə verilənlər bazasında dəyəri dəyişdirin və növbəti zəng dəyişikliklər nəzərə alınmaqla işlənəcək və funksiya dialplan parametrlərini oxumaq üçün mükəmməl idi. REALTIME_HASH.

Sonda yenidən başlamağa belə ehtiyac qalmadı Asterisk parametrləri dəyişdirərkən və bütün parametrlər dərhal tətbiq olunmağa başladı Asterisk.

Bir layihənin hekayəsi və ya Asterisk və Php əsasında PBX yaratmaq üçün 7 il sərf etdiyim hekayə

Dialplanda yeganə dəyişikliklər əlavə nömrələrin əlavə edilməsidir və göstərişlər. Ancaq bunlar kiçik nöqtə dəyişiklikləri idi

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

Siz asanlıqla dialplana xətt əlavə edə və ya dəyişə bilərsiniz Ami (nəzarət interfeysi Asterisk) və bütün dial planının yenidən başlaması tələb olunmur.

Bu, konfiqurasiya API ilə problemi həll etdi. Siz hətta birbaşa verilənlər bazasına daxil olub yeni qrup əlavə edə və ya dəyişə bilərsiniz, məsələn, qrup üçün “dialtime” sahəsində dial-up vaxtını dəyişdirə bilərsiniz və növbəti zəng artıq müəyyən edilmiş vaxta qədər davam edəcək (Bu tövsiyə deyil. əməliyyat, çünki bəzi API əməliyyatları tələb edir Ami zənglər).

İlk çətin tətbiqlər yenə ilk qürur və məyusluğu gətirdi. İşə yaradığına sevindim. Verilənlər bazası kritik bir əlaqəyə çevrildi, diskdən asılılıq artdı, daha çox risk var idi, lakin hər şey sabit və problemsiz işləyirdi. Ən əsası isə, indi veb-interfeys vasitəsilə edilə bilən hər şey API vasitəsilə edilə bilərdi və eyni üsullardan istifadə olunurdu. Bundan əlavə, veb-interfeys idarəçilərin tez-tez unutduğu “Parametrləri PBX-ə tətbiq et” düyməsindən xilas oldu.

Məyusluq, inkişafın daha da mürəkkəbləşməsi idi. İlk versiyadan bəri PHP dili dildə dialplan yaratmışdır Asterisk və tamamilə oxunmaz görünür, üstəlik dilin özü Asterisk dialplan yazmaq üçün son dərəcə primitivdir.

Nə kimi 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 oldu, parametrlərdən asılı olaraq bütün mümkün emal variantlarını ehtiva etdi və ölçüsü əhəmiyyətli dərəcədə artdı. Bütün bunlar inkişaf vaxtını xeyli ləngitdi və dialplana yenidən müdaxilə etmək lazım olduğu fikri məni kədərləndirdi.

Üçüncü versiya

Problemi həll etmək üçün ideya yaratmaq mümkün deyildi Asterisk php-dən dialplan və istifadə edin FastAGI və bütün emal qaydalarını PHP-nin özündə yazın. FastAGI imkan Asterisk, zəngi emal etmək üçün rozetkaya qoşulun. Oradan əmrlər alın və nəticələri göndərin. Beləliklə, dialplanın məntiqi artıq sərhədlərdən kənardadır Asterisk və istənilən dildə yazıla bilər, mənim vəziyyətimdə PHP-də.

Çox sınaq və səhv var idi. Əsas problem o idi ki, məndə artıq çoxlu siniflər/fayllar var idi. Obyektləri yaratmaq, onları işə salmaq və bir-birini qeydiyyatdan keçirmək təxminən 1,5 saniyə çəkdi və hər zəngə görə bu gecikmə göz ardı edilə biləcək bir şey deyil.

İnisiallaşdırma yalnız bir dəfə baş verməli idi və buna görə də həll axtarışı php-dən istifadə edərək bir xidmət yazmaqla başladı Mövzular. Bir həftəlik sınaqdan sonra, bu genişləndirmənin necə işlədiyinin incəliklərinə görə bu seçim dayandırıldı. Bir aylıq sınaqdan sonra mən də PHP-də asinxron proqramlaşdırmadan imtina etməli oldum; mənə hər hansı bir PHP yeni başlayana tanış olan sadə bir şey lazım idi və PHP üçün bir çox uzantılar sinxrondur.

Həll C-də tərtib edilmiş öz çox yivli xidmətimiz idi PHPLIB. O, bütün ATS php fayllarını yükləyir, bütün modulların işə salınmasını gözləyir, bir-birinə geri çağırış əlavə edir və hər şey hazır olduqda onu önbelleğe alır. tərəfindən soruşduqda FastAGI axın yaradılır, bütün siniflərin və verilənlərin keşindən surəti orada çoxaldılır və sorğu php funksiyasına ötürülür.

Bu həll ilə xidmətimizə zəng göndərməkdən ilk əmrə qədər olan vaxt Asterisk 1,5 saniyədən 0,05 saniyəyə qədər azaldı və bu vaxt layihənin ölçüsündən bir qədər asılıdır.

Bir layihənin hekayəsi və ya Asterisk və Php əsasında PBX yaratmaq üçün 7 il sərf etdiyim hekayə

Nəticədə dialplanın hazırlanması üçün vaxt əhəmiyyətli dərəcədə azaldı və mən bunu qiymətləndirə bilərəm, çünki PHP-də bütün modulların bütün dialplanını yenidən yazmalı oldum. Birincisi, verilənlər bazasından obyekt əldə etmək üçün metodlar artıq php-də yazılmalıdır; onlar veb-interfeysdə nümayiş etdirmək üçün lazım idi, ikincisi, əsas odur ki, nəhayət, rəqəmlər və massivlərlə sətirlərlə rahat işləmək mümkündür. verilənlər bazası və bir çox PHP uzantıları ilə.

Modul sinfində dialplanı emal etmək üçün funksiyanı həyata keçirməlisiniz dialplanDynamicCall və mübahisə pbxCallRequest qarşılıqlı əlaqə üçün obyekti ehtiva edəcəkdir Asterisk.

Bir layihənin hekayəsi və ya Asterisk və Php əsasında PBX yaratmaq üçün 7 il sərf etdiyim hekayə

Əlavənin dialplanı sazlamaq imkanı var (php-də xdebug var və o, bizim xidmətimiz üçün işləyir), dəyişənlərin dəyərlərinə baxaraq addım-addım hərəkət edə bilərsiniz.

Zəng məlumatları

İstənilən analitik və hesabat düzgün toplanmış məlumatları tələb edir və bu PBX bloku da birincidən üçüncü versiyaya qədər çoxlu sınaq və səhvlərdən keçdi. Çox vaxt zəng məlumatları bir işarədir. Bir zəng = bir qeyd: kim zəng etdi, kim cavab verdi, nə qədər danışdılar. Daha maraqlı variantlarda zəng zamanı hansı PBX əməkdaşının çağırıldığını göstərən əlavə işarə var. Ancaq bütün bunlar ehtiyacların yalnız bir hissəsini əhatə edir.

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

  • təkcə ATS-nin kimə zəng etdiyini deyil, həm də kimin cavab verdiyini nəzərə al, çünki dinləmələr var və zəngləri təhlil edərkən bunu nəzərə almaq lazımdır,
  • bir işçi ilə əlaqə qurmazdan əvvəl vaxt. In PulsuzPBX və bəzi digər ATS-lərdə zəng ATS telefonu götürən kimi cavablandırılmış sayılır. Ancaq səs menyusu üçün siz artıq telefonu götürməlisiniz, beləliklə bütün zənglər cavablandırılır və cavab gözləmə müddəti 0-1 saniyə olur. Buna görə də, nəinki cavabdan əvvəl, həm də əsas modullarla əlaqə qurmazdan əvvəl vaxta qənaət etmək qərara alındı ​​(modul özü bu bayrağı təyin edir. Hazırda "İşçi", "Xarici xətt"),
  • daha mürəkkəb dialplan üçün, zəng müxtəlif qruplar arasında səyahət edərkən, hər bir elementi ayrıca yoxlamaq lazım idi.

Ən yaxşı seçim, PBX modullarının zənglərdə özləri haqqında məlumat göndərməsi və nəticədə məlumatları ağac şəklində saxlaması oldu.

Belə görünür:

Birincisi, zəng haqqında ümumi məlumat (hamı kimi - xüsusi bir şey yoxdur).

Bir layihənin hekayəsi və ya Asterisk və Php əsasında PBX yaratmaq üçün 7 il sərf etdiyim hekayə

  1. Xarici xəttə zəng gəldi "xəmir üçün"saat 05:55:52-də 89295671458 nömrədən 89999999999 nömrəsinə, sonda işçi cavab verdi"Katib 2» nömrəsi ilə 104. Müştəri 60 saniyə gözlədi və 36 saniyə danışdı.
  2. işçi"Katib 2"112-yə zəng edir və işçi cavab verir"Menecer 1» 8 saniyədən sonra. 14 saniyə danışırlar.
  3. Müştəri İşçiyə köçürülür "menecer1"13 saniyə daha danışmağa davam edirlər

Ancaq bu aysberqin görünən tərəfidir, hər bir qeyd üçün PBX vasitəsilə ətraflı zəng tarixçəsi əldə edə bilərsiniz.

Bir layihənin hekayəsi və ya Asterisk və Php əsasında PBX yaratmaq üçün 7 il sərf etdiyim hekayə

Bütün məlumatlar zənglərin yuvası kimi təqdim olunur:

  1. Xarici xəttə zəng gəldi "xəmir üçün» saat 05:55:52-də 89295671458 nömrəsindən 89999999999 nömrəsinə zəng edin.
  2. 05:55:53-də xarici xətt Gələn dövrəyə zəng göndərir "sınaq»
  3. Zəngi sxemə uyğun işləyərkən modul “menecer çağırışı", bu zaman zəng 16 saniyədir. Bu müştəri üçün hazırlanmış moduldur.
  4. Modul "menecer çağırışı"Nömrəyə (müştəriyə) cavabdeh olan işçiyə zəng göndərir"Menecer 1” yazır və cavab üçün 5 saniyə gözləyir. Menecer cavab vermədi.
  5. Modul "menecer çağırışı"qrupa zəng göndərir"CORP menecerləri" Bunlar eyni istiqamətin (eyni otaqda oturan) digər menecerləridir və 11 saniyə cavab gözləyirlər.
  6. Qrup "CORP menecerləri"işçiləri çağırır"Menecer 1, Menecer 2, Menecer 3"11 saniyə eyni vaxtda. Cavab yoxdur.
  7. Menecerin zəngi bitir. Və dövrə modula zəng göndərir "1c-dən marşrutun seçilməsi" Həmçinin müştəri üçün yazılmış modul. Burada zəng 0 saniyə ərzində işləndi.
  8. Dövrə səs menyusuna zəng göndərir "Əlavə yığım ilə əsas" Müştəri orada 31 saniyə gözlədi, əlavə zəng olmadı.
  9. Sxem Qrupa zəng göndərir "Katiblər", burada müştəri 12 saniyə gözlədi.
  10. Qrupda eyni vaxtda 2 işçi çağırılır "Katib 1"Və"Katib 2"və 12 saniyədən sonra işçi cavab verir"Katib 2" Zəngə verilən cavab valideyn zənglərinə təkrarlanır. Belə çıxır ki, qrupda o, “Katib 2", zəng edərkən dövrə cavab verdi"Katib 2" və kənar xəttdəki zəngə " ilə cavab verdi.Katib 2.

Məhz hər bir əməliyyat haqqında məlumatın saxlanması və onların yuvalanması sadəcə hesabat verməyə imkan verəcəkdir. Səs menyusundakı hesabat bunun nə qədər kömək etdiyini və ya mane olduğunu öyrənməyə kömək edəcək. Zəngin tutulduğunu və buna görə də buraxılmış hesab olunmadığını və bunun qrup zəngi olduğunu və başqasının daha əvvəl cavab verdiyini nəzərə alaraq, zənglərin də buraxılmadığını nəzərə alaraq işçilər tərəfindən buraxılmış zənglər haqqında hesabat tərtib edin.

Belə məlumatların saxlanması sizə hər bir qrupu ayrıca götürməyə və onun nə dərəcədə effektiv işlədiyini müəyyən etməyə, cavablandırılmış və buraxılmış qrupların saatlar üzrə qrafikini qurmağa imkan verəcək. Siz həmçinin menecerə qoşulduqdan sonra köçürmələri təhlil edərək məsul menecerlə əlaqənin nə dərəcədə düzgün olduğunu yoxlaya bilərsiniz.

Siz həmçinin kifayət qədər atipik tədqiqatlar apara bilərsiniz, məsələn, verilənlər bazasında olmayan nömrələrin nə qədər tez-tez düzgün uzantı yığır və ya gedən zənglərin neçə faizi cib telefonuna yönləndirilir.

Nəticədə?

PBX-ə qulluq etmək üçün mütəxəssis tələb olunmur, ən adi idarəçi bunu edə bilər - praktikada sınaqdan keçirilmişdir.

Dəyişikliklər üçün ciddi ixtisaslara malik mütəxəssislərə ehtiyac yoxdur, PHP biliyi kifayətdir, çünki Modullar artıq SIP protokolu, növbə, işçi çağırmaq və başqaları üçün yazılmışdır. üçün sarğı sinfi var Asterisk. Bir modul hazırlamaq üçün bir proqramçı hazır modulları çağıra bilər (və yaxşı mənada lazımdır). Və bilik Asterisk Müştəri yeni hesabatı olan bir səhifə əlavə etməyi xahiş edərsə, tamamilə lazımsızdır. Amma təcrübə göstərir ki, üçüncü tərəf proqramçıları öhdəsindən gələ bilsələr də, sənədləşmə və şərhlərin normal işıqlandırılması olmadan özlərini etibarsız hiss edirlər, buna görə də təkmilləşdirmə üçün hələ də yer var.

Modullar ola bilər:

  • yeni zəng emalı imkanları yaratmaq,
  • veb interfeysinə yeni bloklar əlavə etmək,
  • hər hansı bir mövcud moduldan miras alın, funksiyaları yenidən müəyyənləşdirin və dəyişdirin və ya sadəcə bir az dəyişdirilmiş bir nüsxə olun,
  • parametrlərinizi digər modulların parametrlər şablonuna əlavə edin və daha çox.

API vasitəsilə PBX parametrləri. Yuxarıda təsvir edildiyi kimi, bütün parametrlər verilənlər bazasında saxlanılır və zəng zamanı oxunur, beləliklə siz API vasitəsilə bütün PBX parametrlərini dəyişə bilərsiniz. API-yə zəng edərkən konfiqurasiya yenidən yaradılmır və modullar yenidən işə salınmır, buna görə də neçə parametr və işçiniz olmasının əhəmiyyəti yoxdur. API sorğuları tez yerinə yetirilir və bir-birini bloklamır.

PBX bütün əsas əməliyyatları müddəti (gözləmə/söhbət), yuvalama və PBX terminləri ilə (kanal, nömrə deyil, işçi, qrup, xarici xətt) olan zənglərlə saxlayır. Bu, xüsusi müştərilər üçün müxtəlif hesabatlar yaratmağa imkan verir və işin çoxu istifadəçi dostu interfeys yaratmaqdır.

Bundan sonra nə olacağını zaman göstərəcək. Hələ bir çox nüanslar var ki, onları yenidən etmək lazımdır, hələ çox planlar var, lakin 3-cü versiyanın yaradılmasından bir il keçib və artıq ideyanın işlədiyini deyə bilərik. 3-cü versiyanın əsas çatışmazlığı aparat resurslarıdır, lakin bu, adətən inkişafın asanlığı üçün ödəməli olduğunuz şeydir.

Mənbə: www.habr.com

Добавить комментарий