Бир долбоордун окуясы же мен жылдызча жана Php негизинде АТС түзүүгө 7 жыл сарптаганым

Албетте, мага окшоп, силердин көбүңдө өзгөчө бир нерсе жасоо идеясы бар болчу. Бул макалада мен АТСти иштеп чыгууда мен туш болгон техникалык көйгөйлөрдү жана чечимдерди сүрөттөп берем. Балким, бул кимдир бирөөнө өз идеясын чечүүгө, ал эми кимдир-бирөө басып өткөн жолду ээрчүүгө жардам берет, анткени мен да пионерлердин тажрыйбасынан пайдаландым.

Бир долбоордун окуясы же мен жылдызча жана Php негизинде АТС түзүүгө 7 жыл сарптаганым

Идея жана негизги талаптар

Анан баары жөн гана сүйүүдөн башталды жылдызча (байланыш тиркемелерин куруу үчүн негиз), телефонияны жана установкаларды автоматташтыруу freepbx (Интерфейс үчүн жылдызча). Эгерде компаниянын муктаждыктары спецификасыз болуп, мүмкүнчүлүктөрүнө кирсе freepbx - баары сонун. Бүт орнотуу 24 сааттын ичинде ишке ашты, компания конфигурацияланган АТС, колдонуучуга ыңгайлуу интерфейс жана кыска тренинг жана кааласа колдоо алды.

Бирок эң кызыктуу тапшырмалар стандарттуу эмес болчу, андан кийин бул укмуштуудай эмес. жылдызча көп нерсе кыла алат, бирок веб-интерфейстин иштөө тартибинде болушу үчүн, бир нече эсе көп убакыт коротуш керек болчу. Ошентип, кичинекей деталь АТСтин калган бөлүгүн орнотууга караганда бир топ убакытты талап кылышы мүмкүн. Кеп веб-интерфейсти жазууга көп убакыт талап кылынганында эмес, тескерисинче, кеп архитектуралык өзгөчөлүктөрдө. freepbx. Архитектуралык ыкмалар жана методдор freepbx php4 учурунда түзүлгөн жана ошол учурда бардыгын жөнөкөй жана ыңгайлуураак кыла турган php5.6 бар болчу.

Акыркы саман диаграмма түрүндөгү графикалык диалпландар болду. Мен ушул сыяктуу нерсени курууга аракет кылганда freepbx, Мен аны олуттуу түрдө кайра жазууга туура келерин жана жаңы нерсени куруу оңой болорун түшүндүм.

Негизги талаптар:

  • жөнөкөй орнотуу, ал тургай башталгыч администратор үчүн интуитивдик жеткиликтүү. Ошентип, компаниялар биз тараптан АТС тейлөөнү талап кылбайт,
  • милдеттерди адекваттуу убакытта чечүү үчүн жеңил өзгөртүү,
  • АТС менен интеграциянын жеңилдиги. У freepbx орнотууларды өзгөртүү үчүн API болгон эмес, б.а. Сиз, мисалы, үчүнчү тараптын колдонмосунан топторду же үн менюларын түзө албайсыз, API өзү гана жылдызча,
  • opensource - программисттер үчүн бул кардар үчүн өзгөртүүлөр үчүн өтө маанилүү болуп саналат.

Тезирээк өнүктүрүү идеясы бардык функцияларды объекттер түрүндөгү модулдардан турган болушу керек болчу. Бардык объекттердин жалпы ата-эне классы болушу керек болчу, бул бардык негизги функциялардын аттары мурунтан эле белгилүү жана андыктан демейки ишке ашыруулар бар дегенди билдирет. Объекттер сап баскычтары менен ассоциативдик массивдер түрүндөгү аргументтердин санын кескин кыскартууга мүмкүндүк берет, аларды сиз бул жерден таба аласыз. freepbx Бул бүт функцияны жана уяланган функцияларды карап чыгуу менен мүмкүн болду. Объекттердин учурда, баналдык автотолуктоо бардык касиеттерин көрсөтөт жана жалпысынан жашоону бир нече эсе жөнөкөйлөтөт. Мындан тышкары, мурастоо жана кайра аныктоо буга чейин өзгөртүүлөр менен көптөгөн көйгөйлөрдү чечет.

Кайра иштетүү убактысын жайлаткан жана андан качууга арзырлык болгон кийинки нерсе кайталоо болду. Кызматкерди терүү үчүн жооптуу модул бар болсо, анда кызматкерге чалуу жөнөтүү керек болгон бардык башка модулдар аны колдонушу керек жана өз көчүрмөсүн түзбөйт. Демек, бир нерсени өзгөртүү керек болсо, анда сиз бир жерде гана өзгөртүүгө туура келет жана "бул кантип иштейт" издөө бир жерде жүргүзүлүшү керек, бүткүл долбоор боюнча изделбейт.

Биринчи версия жана биринчи каталар

Биринчи прототиби бир жылдын ичинде даяр болгон. Бүтүндөй АТС, пландаштырылгандай, модулдук болгон жана модулдар чалууларды иштетүү үчүн жаңы функцияларды гана кошпостон, веб-интерфейстин өзүн да өзгөртө алган.

Бир долбоордун окуясы же мен жылдызча жана Php негизинде АТС түзүүгө 7 жыл сарптаганым
Ооба, мындай схема түрүндө диаплан куруу идеясы меники эмес, бирок бул абдан ыңгайлуу жана мен да ушундай кылдым. жылдызча.

Бир долбоордун окуясы же мен жылдызча жана Php негизинде АТС түзүүгө 7 жыл сарптаганым

Модуль жазуу менен программисттер буга чейин:

  • диаграммада, ошондой эле сол жактагы элементтердин менюсунда жайгаштырылышы мүмкүн болгон чалууну иштетүү үчүн өзүңүздүн функцияңызды түзүңүз,
  • веб-интерфейс үчүн өзүңүздүн баракчаларыңызды түзүңүз жана шаблондоруңузду учурдагы барактарга кошуңуз (эгерде баракты иштеп чыгуучу муну камсыз кылган болсо),
  • негизги орнотуулар өтмөгүнө орнотууларды кошуу же өз орнотуулар өтмөктү түзүү,
  • программист бар болгон модулдан мурастап, функциянын бир бөлүгүн өзгөртүп, аны жаңы ат менен каттай алат же баштапкы модулду алмаштыра алат.

Мисалы, сиз өз үн менюңузду кантип түзө аласыз:

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

Биринчи комплекстүү ишке ашыруу биринчи сыймыктанууну жана биринчи көңүл калууларды алып келди. Анын иштегенине, негизги өзгөчөлүктөрүн кайра чыгара алганыма сүйүндүм freepbx. Эл схеманын идеясын жактырганына кубандым. Иштеп чыгууну жөнөкөйлөштүрүүнүн көптөгөн варианттары дагы эле бар болчу, бирок ошол убакта да кээ бир милдеттер жеңилделип жаткан.

АТС конфигурациясын өзгөртүү үчүн API капа болду - натыйжа биз каалагандай болгон жок. Мен мурункудай эле принципти кармандым freepbx, Колдонуу баскычын чыкылдатуу менен, бүт конфигурация кайра түзүлөт жана модулдар кайра иштетилет.

Бул төмөнкүдөй көрүнөт:

Бир долбоордун окуясы же мен жылдызча жана Php негизинде АТС түзүүгө 7 жыл сарптаганым
*Диалплан - бул чалуу иштетилүүчү эреже (алгоритм).

Бирок бул параметр менен АТС орнотууларын өзгөртүү үчүн кадимки API жазуу мүмкүн эмес. Биринчиден, өзгөртүүнү колдонуу операциясы жылдызча өтө узак жана ресурстарды талап кылат.
Экинчиден, бир эле учурда эки функцияны чакыра албайсыз, анткени экөө тең конфигурацияны түзөт.
Үчүнчүдөн, ал бардык орнотууларды, анын ичинде администратор тарабынан жасалгандарды колдонот.

Бул версияда, ошондой эле Askozia, ал бир гана өзгөртүлгөн модулдардын конфигурациясын түзүү жана зарыл болгон модулдарды гана кайра иштетүү мүмкүн болгон, бирок бул бардык жарым чаралар. Ал үчүн мамилени өзгөртүү керек болчу.

Экинчи версия. Мурдун куйругу тыгылып чыкты

Маселени чечүү идеясы конфигурацияны жана диалпланды кайра түзүү эмес болчу жылдызча, бирок маалыматты маалымат базасына сактап, чалууну иштеп жатканда түздөн-түз маалымат базасынан окуйсуз. жылдызча Мен маалымат базасынан конфигурацияларды кантип окууну билчүмүн, жөн гана маалымат базасындагы маанини өзгөртүп, кийинки чалуу өзгөрүүлөрдү эске алуу менен иштетилет жана функция диалпландын параметрлерин окуу үчүн эң сонун болду. REALTIME_HASH.

Акыр-аягы, кайра баштоонун кереги жок болчу жылдызча орнотууларды өзгөртүүдө жана бардык орнотуулар дароо колдонула баштады жылдызча.

Бир долбоордун окуясы же мен жылдызча жана Php негизинде АТС түзүүгө 7 жыл сарптаганым

Диалпланга бирден-бир өзгөртүүлөр кошумча номерлер жана кошумча болуп саналат кенештер. Бирок булар майда так өзгөрүүлөр болду

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

Сиз диалпланга сызыкты оңой кошуп же өзгөртө аласыз Ami (башкаруу интерфейси жылдызча) жана бүт терүү планын кайра жүктөө талап кылынбайт.

Бул конфигурация API менен көйгөйдү чечти. Сиз түз эле маалымат базасына кирип, жаңы топту кошуп же өзгөртө аласыз, мисалы, топ үчүн "терүү убактысы" талаасында терүү убактысын өзгөртө аласыз жана кийинки чалуу көрсөтүлгөн убакытка чейин созулушу мүмкүн (Бул сунуш эмес аракет, анткени кээ бир API операциялары талап кылынат Ami чалуулар).

Биринчи татаал ишке ашыруу кайрадан биринчи сыймыктанууну жана көңүл калууларды алып келди. Иштегенине сүйүндүм. Маалымат базасы критикалык шилтемеге айланды, дискке көз карандылык күчөдү, тобокелдиктер көбүрөөк болду, бирок баары туруктуу жана көйгөйсүз иштеди. Эң негизгиси, азыр веб-интерфейс аркылуу жасала турган нерселердин бардыгы API аркылуу жасалышы мүмкүн жана ошол эле ыкмалар колдонулду. Кошумчалай кетсек, веб-интерфейс администраторлор унутуп калган "ПБХке орнотууларды колдонуу" баскычынан арылды.

Өнүгүү татаалдашып кеткени капа болду. Биринчи версиядан бери PHP тили тилде диалплан түздү жылдызча жана ал толугу менен окулбайт окшойт, плюс тилдин өзү жылдызча диаплан жазуу үчүн бул өтө примитивдүү.

Ал кандай көрүндү:

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

Экинчи версияда диалплан универсалдуу болуп калды, ал параметрлерге жараша бардык мүмкүн болгон иштетүү варианттарын камтыды жана анын өлчөмү бир кыйла өстү. Мунун баары иштеп чыгуу убактысын бир топ жайлатты жана диапланга дагы бир жолу кийлигишүү керек деген ойдун өзү мени капа кылды.

Үчүнчү версия

Көйгөйдү чечүү идеясы жаратуу эмес болчу жылдызча phpден терүү жана колдонуу FastAGI жана бардык иштетүү эрежелерин PHPде жазыңыз. FastAGI Бул берет жылдызча, чалууну иштетүү үчүн розеткага туташыңыз. Ал жерден буйруктарды алып, натыйжаларды жөнөтүңүз. Ошентип, диалпландын логикасы чектерден тышкары жылдызча жана каалаган тилде жазылышы мүмкүн, менин учурда PHPде.

Сыноо жана каталар көп болду. Негизги көйгөй менде класстар/файлдар көп болгон. Объекттерди түзүү, аларды инициализациялоо жана бири-бирин каттоо үчүн болжол менен 1,5 секунд талап кылынган жана ар бир чалуудагы бул кечигүү көз жаздымда калтыра турган нерсе эмес.

Инициализация бир гана жолу болушу керек болчу, ошондуктан чечимди издөө PHP аркылуу кызмат жазуудан башталды Pthreads. Бир жумалык эксперименттен кийин, бул кеңейтүү кантип иштөөнүн татаалдыгынан улам бул параметр токтотулду. Бир айлык тестирлөөдөн кийин мен PHPде асинхрондук программалоодон баш тартууга туура келди; мага жөнөкөй, ар бир PHP башталгычына тааныш нерсе керек болчу жана PHP үчүн көптөгөн кеңейтүүлөр синхрондуу.

Чечим C тилиндеги өзүбүздүн көп жиптүү кызматыбыз болгон, ал компиляцияланган PHPLIB. Ал бардык ATS PHP файлдарын жүктөйт, бардык модулдардын инициализациясын күтөт, бири-бирине кайра чалууларды кошот жана баары даяр болгондо, аны кэштейт. тарабынан сурап жатканда FastAGI агым түзүлөт, анда бардык класстардын жана маалыматтардын кэшинен көчүрмө чыгарылат жана суроо-талап php функциясына өткөрүлүп берилет.

Бул чечимдин жардамы менен биздин кызматка чалууну жөнөтүүдөн биринчи буйрукка чейинки убакыт жылдызча 1,5 сектен 0,05 секундага чейин азайды жана бул жолу долбоордун көлөмүнөн бир аз көз каранды.

Бир долбоордун окуясы же мен жылдызча жана Php негизинде АТС түзүүгө 7 жыл сарптаганым

Натыйжада, диалпланды иштеп чыгуу убактысы кыйла кыскарды жана мен муну баалай алам, анткени мен PHPдеги бардык модулдардын диалпланын толугу менен кайра жазууга туура келди. Биринчиден, методдор маалымат базасынан объектти алуу үчүн PHPде жазылган болушу керек, алар веб-интерфейсте көрсөтүү үчүн керек болчу, экинчиден, бул эң негизгиси, акырында сандар жана массивдер менен саптар менен ыңгайлуу иштөөгө болот. маалымат базасы жана көптөгөн PHP кеңейтүүлөрү менен.

Модул классында терүү планын иштетүү үчүн функцияны ишке ашыруу керек dialplanDynamicCall жана аргумент pbxCallRequest өз ара аракеттене турган объектти камтыйт жылдызча.

Бир долбоордун окуясы же мен жылдызча жана Php негизинде АТС түзүүгө 7 жыл сарптаганым

Мындан тышкары, терүү планын оңдоо мүмкүн болду (phpде xdebug бар жана ал биздин кызматыбызда иштейт), сиз өзгөрмөлөрдүн маанилерин көрүү менен кадам сайын жыла аласыз.

Чалуу дайындары

Ар кандай аналитика жана отчеттор туура чогултулган маалыматтарды талап кылат, жана бул АТС блогу да биринчиден үчүнчү версияга чейин көптөгөн сыноолордон жана каталардан өткөн. Көбүнчө, чалуу маалыматтары белги болуп саналат. Бир чалуу = бир жазуу: ким чалды, ким жооп берди, канча убакыт сүйлөштү. Кызыктуу варианттарда чалуу учурунда кайсы АТСтин кызматкери чакырылганын көрсөткөн кошумча белги бар. Бирок мунун баары муктаждыктын бир бөлүгүн гана камтыйт.

Алгачкы талаптар:

  • АТС кимди чакырганын гана эмес, ошондой эле ким жооп бергенин сакта, анткени тыюулар бар жана бул чалууларды талдоодо эске алынышы керек,
  • кызматкер менен байланышууга чейин убакыт. In freepbx жана кээ бир башка АТСтер, чалуулар АТС телефонду көтөрөөр замат жооп берилди деп эсептелет. Бирок үн менюсу үчүн сиз телефонду алышыңыз керек, андыктан бардык чалууларга жооп берилет жана жооп күтүү убактысы 0-1 секундга созулат. Ошондуктан, жооп бергенге чейинки убакытты гана эмес, негизги модулдар менен туташууга чейинки убакытты да үнөмдөө чечими кабыл алынды (модуль өзү бул желекти орнотот. Учурда ал “Кызматкер”, “Тышкы линия”),
  • татаал терүү планы үчүн, чалуу ар кандай топтордун ортосунда жүргөндө, ар бир элементти өзүнчө карап чыгуу керек болчу.

АТС модулдары чалууларда өздөрү жөнүндө маалыматты жөнөтүп, акырында маалыматты дарак түрүндө сактаганда эң жакшы вариант болуп чыкты.

Бул окшойт:

Биринчиден, чалуу жөнүндө жалпы маалымат (башкаларга окшоп - өзгөчө эч нерсе жок).

Бир долбоордун окуясы же мен жылдызча жана Php негизинде АТС түзүүгө 7 жыл сарптаганым

  1. Сырткы линияга чалуу келип түштү "болушчу"саат 05:55:52де 89295671458 номеринен 89999999999 номерине чейин, аягында кызматкер жооп берди"секретарь 2» номери менен 104. Кардар 60 секунд күтүп, 36 секунд сүйлөдү.
  2. Кызматкер "секретарь 2"112ге чалып, кызматкер жооп берет"Менеджер1» 8 секунддан кийин. Алар 14 секунд сүйлөшөт.
  3. Кардар Кызматкерге өткөрүлүп берилет "менеджер1"Мында алар дагы 13 секунд сүйлөшүүнү улантышат

Бирок бул айсбергдин учу; ар бир жазуу үчүн сиз АТС аркылуу чалуунун толук тарыхын ала аласыз.

Бир долбоордун окуясы же мен жылдызча жана Php негизинде АТС түзүүгө 7 жыл сарптаганым

Бардык маалымат чалуулардын уячасы катары берилет:

  1. Сырткы линияга чалуу келип түштү "болушчу» саат 05:55:52де 89295671458 номеринен 89999999999 номерине чейин.
  2. Саат 05:55:53тө тышкы линия Кирүүчү схемага чалуу жөнөтөт "текшерүү»
  3. Схема боюнча чалууну иштеп чыгууда, модулу "менеджер чакыруу", анда чалуу 16 секунд. Бул кардар үчүн иштелип чыккан модулу.
  4. модулу"менеджер чакыруу" номур (кардар) үчүн жооптуу кызматкерге чалуу жөнөтөт"Менеджер1” жана жоопту 5 секунд күтөт. Менеджер жооп берген жок.
  5. модулу"менеджер чакыруу"топко чакыруу жөнөтөт"CORP менеджерлери" Булар ошол эле багыттагы башка менеджерлер (бир бөлмөдө отурушат) жана жоопту 11 секунд күтүшөт.
  6. Group "CORP менеджерлери"кызматкерлерди чакырат"Менеджер1, Менеджер2, Менеджер3"бир эле учурда 11 секунда. Жооп жок.
  7. Жетекчинин чалуусу аяктайт. Ал эми схема модулга чакыруу жөнөтөт "1c баштап маршрут тандоо" Ошондой эле кардар үчүн жазылган модулу. Бул жерде чалуу 0 секундга иштетилди.
  8. Схема үн менюсуна чакыруу жөнөтөт "Кошумча терүү менен негизги" Кардар ал жерде 31 секунд күткөн, кошумча терүү болгон эмес.
  9. Схема Топко чакыруу жөнөтөт "секретарлары", кардар 12 секунд күткөн.
  10. Топто бир эле учурда 2 кызматкер чакырылат "секретарь 1"Ал эми"секретарь 2"жана 12 секунддан кийин кызматкер жооп берет"секретарь 2" Чакырууга жооп ата-эне чалууларына кайталанат. Көрсө, ал группада “ деп жооп берген экен.секретарь 2", чалып жатканда райондук жооп берди "секретарь 2"жана сырткы линиядагы чалууга" деп жооп берди.секретарь 2«.

Бул жөн гана отчетторду түзүүгө мүмкүндүк берет ар бир операция жана алардын уясы жөнүндө маалыматты сактоо болуп саналат. Үн менюсунун отчету анын канчалык жардам берип же тоскоолдук кылып жатканын билүүгө жардам берет. Кызматкерлер тарабынан өткөрүлбөй калган чалуулар боюнча отчетту түзүңүз, чалуу кармалып калганын, демек, өткөрүлбөйт деп эсептелбейт жана бул топтук чалуу болгондугун жана башка бирөө мурда жооп бергендигин эске алуу менен, чалуу да кабыл алынбаганын билдирет.

Мындай маалыматты сактоо ар бир топту өз-өзүнчө алып, анын канчалык натыйжалуу иштээрин аныктоого жана жооп берилген жана өтпөгөн топтордун сааттары боюнча графигин түзүүгө мүмкүндүк берет. Ошондой эле менеджерге туташкандан кийин которууларды талдоо аркылуу жооптуу менеджер менен байланыш канчалык так экенин текшере аласыз.

Сиз ошондой эле өтө типтүү эмес изилдөөлөрдү жүргүзсөңүз болот, мисалы, маалымат базасында жок номерлер канчалык көп учурда туура кеңейтүүнү терет же чыккан чалуулардын канча пайызы уюлдук телефонго багытталат.

Мунун натыйжасы кандай болот?

АТСти тейлөө үчүн адис талап кылынбайт, аны эң жөнөкөй администратор жасай алат - иш жүзүндө текшерилген.

Өзгөртүү үчүн олуттуу квалификациясы бар адистердин кереги жок, PHP тилин билүү жетиштүү, анткени Модулдар буга чейин SIP протоколу үчүн, кезек үчүн, кызматкерди чакыруу үчүн жана башкалар үчүн жазылган. үчүн каптоочу класс бар жылдызча. Модулду иштеп чыгуу үчүн программист даяр модулдарды чакыра алат (жана жакшы жол менен керек). Жана билим жылдызча кардар кандайдыр бир жаңы отчет менен баракты кошууну суранса, таптакыр кереги жок. Бирок практика көрсөткөндөй, үчүнчү тараптын программисттери туруштук бере алышса да, алар документациясыз жана комментарийлерди нормалдуу камтуусуз кооптуу сезишет, ошондуктан дагы деле жакшыртууга мүмкүнчүлүк бар.

Модулдар:

  • жаңы чалууларды иштетүү мүмкүнчүлүктөрүн түзүү,
  • веб-интерфейске жаңы блокторду кошуу,
  • учурдагы модулдардын каалаганынан мураска алуу, функцияларды кайра аныктоо жана аны алмаштыруу, же жөн гана бир аз өзгөртүлгөн көчүрмөсү болуу,
  • орнотууларыңызды башка модулдардын жөндөө шаблонуна жана башка көптөгөн нерселерге кошуңуз.

API аркылуу PBX орнотуулары. Жогоруда айтылгандай, бардык орнотуулар маалымат базасында сакталат жана чалуу учурунда окулат, ошондуктан сиз API аркылуу бардык АТС орнотууларын өзгөртө аласыз. API чакырганда, конфигурация кайра түзүлбөйт жана модулдар кайра иштетилбейт, ошондуктан сизде канча орнотуулар жана кызматкерлер бар экендиги маанилүү эмес. API сурамдары тез аткарылат жана бири-бирине бөгөт койбойт.

АТС бардык негизги операцияларды узактыгы (күтүү/сүйлөшүү) менен чалуулар менен жана АТС терминдеринде (кызматкер, топ, тышкы линия эмес, канал, номер) сактайт. Бул конкреттүү кардарлар үчүн ар кандай отчетторду түзүүгө мүмкүндүк берет жана иштин көбү колдонуучуга ыңгайлуу интерфейсти түзүү болуп саналат.

Мындан ары эмне болорун убакыт көрсөтөт. Дагы көп нюанстар бар, алар дагы эле кайра жасалышы керек, дагы көп пландар бар, бирок 3-версия түзүлгөндөн бери бир жыл өттү жана биз идея иштеп жатат деп айта алабыз. 3-версиянын негизги кемчилиги - бул аппараттык ресурстар, бирок бул, адатта, иштеп чыгуунун оңойлугу үчүн төлөшүңүз керек.

Source: www.habr.com

Комментарий кошуу