ஒரு ப்ராஜெக்ட்டின் கதை அல்லது ஆஸ்டரிஸ்க் மற்றும் Php அடிப்படையில் PBX ஐ உருவாக்க 7 வருடங்கள் செலவிட்டேன்

என்னைப் போலவே உங்களில் பலருக்கும் தனித்துவமாக ஏதாவது செய்ய வேண்டும் என்ற எண்ணம் இருந்தது. இந்த கட்டுரையில் நான் PBX ஐ உருவாக்கும் போது நான் எதிர்கொள்ள வேண்டிய தொழில்நுட்ப சிக்கல்கள் மற்றும் தீர்வுகளை விவரிக்கிறேன். ஒருவேளை இது யாரோ ஒருவர் தங்கள் சொந்த யோசனையைத் தீர்மானிக்கவும், யாரோ அடிக்கப்பட்ட பாதையைப் பின்பற்றவும் உதவும், ஏனென்றால் முன்னோடிகளின் அனுபவத்திலிருந்து நானும் பயனடைந்தேன்.

ஒரு ப்ராஜெக்ட்டின் கதை அல்லது ஆஸ்டரிஸ்க் மற்றும் Php அடிப்படையில் PBX ஐ உருவாக்க 7 வருடங்கள் செலவிட்டேன்

யோசனை மற்றும் முக்கிய தேவைகள்

மேலும் இது அனைத்தும் அன்புடன் தொடங்கியது ஆஸ்டெரிக்கை (தொடர்பு பயன்பாடுகளை உருவாக்குவதற்கான கட்டமைப்பு), தொலைபேசி மற்றும் நிறுவல்களின் ஆட்டோமேஷன் freepbx (வலை இடைமுகம் ஆஸ்டெரிக்கை) நிறுவனத்தின் தேவைகள் விவரங்கள் இல்லாமல் மற்றும் திறன்களுக்குள் இருந்தால் freepbx - எல்லாம் நன்றாக இருக்கிறது. முழு நிறுவலும் XNUMX மணி நேரத்திற்குள் நடந்தது, நிறுவனம் ஒரு கட்டமைக்கப்பட்ட PBX, பயனர் நட்பு இடைமுகம் மற்றும் குறுகிய பயிற்சி மற்றும் விரும்பினால் ஆதரவைப் பெற்றது.

ஆனால் மிகவும் சுவாரஸ்யமான பணிகள் தரமற்றவை, பின்னர் அது மிகவும் அற்புதமானதாக இல்லை. ஆஸ்டெரிக்கை நிறைய செய்ய முடியும், ஆனால் இணைய இடைமுகத்தை வேலை வரிசையில் வைத்திருக்க, பல மடங்கு அதிக நேரத்தை செலவிட வேண்டியிருந்தது. எனவே ஒரு சிறிய விவரம் மீதமுள்ள PBX ஐ நிறுவுவதை விட அதிக நேரம் எடுக்கும். ஒரு வலை இடைமுகத்தை எழுதுவதற்கு நீண்ட நேரம் எடுக்கும் என்பது முக்கியமல்ல, மாறாக கட்டிடக்கலை அம்சங்களில் புள்ளி உள்ளது. freepbx. கட்டிடக்கலை அணுகுமுறைகள் மற்றும் முறைகள் freepbx php4 இன் நேரத்தில் அமைக்கப்பட்டது, அந்த நேரத்தில் ஏற்கனவே php5.6 இருந்தது, அதில் எல்லாவற்றையும் எளிமையாகவும் வசதியாகவும் செய்ய முடியும்.

கடைசி வைக்கோல் ஒரு வரைபட வடிவில் வரைகலை டயல்பிளான்கள் ஆகும். நான் இதுபோன்ற ஒன்றை உருவாக்க முயற்சித்தபோது freepbx, நான் அதை கணிசமாக மீண்டும் எழுத வேண்டும் மற்றும் புதிதாக ஒன்றை உருவாக்குவது எளிதாக இருக்கும் என்பதை உணர்ந்தேன்.

முக்கிய தேவைகள்:

  • எளிமையான அமைப்பு, ஒரு புதிய நிர்வாகிக்கு கூட உள்ளுணர்வுடன் அணுகக்கூடியது. எனவே, நிறுவனங்களுக்கு எங்கள் பக்கத்தில் பிபிஎக்ஸ் பராமரிப்பு தேவையில்லை,
  • எளிதான மாற்றம், இதனால் பணிகள் போதுமான நேரத்தில் தீர்க்கப்படும்,
  • PBX உடன் எளிதாக ஒருங்கிணைப்பது. யு freepbx அமைப்புகளை மாற்றுவதற்கு ஏபிஐ இல்லை, அதாவது. எடுத்துக்காட்டாக, நீங்கள் குழுக்கள் அல்லது குரல் மெனுக்களை மூன்றாம் தரப்பு பயன்பாட்டிலிருந்து உருவாக்க முடியாது, ஏபிஐ மட்டுமே ஆஸ்டெரிக்கை,
  • opensource - புரோகிராமர்களுக்கு, கிளையண்டிற்கான மாற்றங்களுக்கு இது மிகவும் முக்கியமானது.

வேகமான வளர்ச்சியின் யோசனை அனைத்து செயல்பாடுகளும் பொருள்களின் வடிவத்தில் தொகுதிகள் கொண்டிருக்கும். அனைத்து பொருள்களும் பொதுவான பெற்றோர் வகுப்பைக் கொண்டிருக்க வேண்டும், அதாவது அனைத்து முக்கிய செயல்பாடுகளின் பெயர்களும் ஏற்கனவே அறியப்பட்டவை, எனவே ஏற்கனவே இயல்புநிலை செயலாக்கங்கள் உள்ளன. சரம் விசைகளுடன் கூடிய துணை வரிசைகளின் வடிவத்தில் வாதங்களின் எண்ணிக்கையை வியத்தகு முறையில் குறைக்க பொருள்கள் உங்களை அனுமதிக்கும், அதை நீங்கள் காணலாம் freepbx முழு செயல்பாடு மற்றும் உள்ளமை செயல்பாடுகளை ஆராய்வதன் மூலம் இது சாத்தியமானது. பொருள்களின் விஷயத்தில், சாதாரணமான தன்னியக்க நிறைவு அனைத்து பண்புகளையும் காண்பிக்கும், மேலும் பொதுவாக வாழ்க்கையை பல மடங்கு எளிதாக்கும். கூடுதலாக, பரம்பரை மற்றும் மறுவரையறை ஏற்கனவே மாற்றங்களுடன் பல சிக்கல்களைத் தீர்க்கிறது.

மறுவேலை நேரத்தைக் குறைத்த அடுத்த விஷயம், நகல் எடுப்பதைத் தவிர்க்க வேண்டும். ஒரு பணியாளரை டயல் செய்வதற்குப் பொறுப்பான ஒரு தொகுதி இருந்தால், ஒரு பணியாளருக்கு அழைப்பை அனுப்ப வேண்டிய மற்ற அனைத்து தொகுதிகளும் அதைப் பயன்படுத்த வேண்டும், மேலும் அவற்றின் சொந்த நகல்களை உருவாக்கக்கூடாது. எனவே, நீங்கள் எதையாவது மாற்ற வேண்டும் என்றால், நீங்கள் ஒரே இடத்தில் மட்டுமே மாற்ற வேண்டும், மேலும் "அது எப்படி வேலை செய்கிறது" என்பதற்கான தேடல் ஒரே இடத்தில் மேற்கொள்ளப்பட வேண்டும், முழு திட்டத்திலும் தேடக்கூடாது.

முதல் பதிப்பு மற்றும் முதல் பிழைகள்

முதல் முன்மாதிரி ஒரு வருடத்திற்குள் தயாராகிவிட்டது. முழு PBX, திட்டமிட்டபடி, மட்டுப்படுத்தப்பட்டது, மேலும் தொகுதிகள் அழைப்புகளைச் செயலாக்குவதற்கான புதிய செயல்பாட்டைச் சேர்ப்பது மட்டுமல்லாமல், வலை இடைமுகத்தையும் மாற்ற முடியும்.

ஒரு ப்ராஜெக்ட்டின் கதை அல்லது ஆஸ்டரிஸ்க் மற்றும் Php அடிப்படையில் PBX ஐ உருவாக்க 7 வருடங்கள் செலவிட்டேன்
ஆம், அத்தகைய திட்டத்தின் வடிவத்தில் ஒரு டயல் பிளானை உருவாக்கும் யோசனை என்னுடையது அல்ல, ஆனால் அது மிகவும் வசதியானது மற்றும் நான் அதையே செய்தேன். ஆஸ்டெரிக்கை.

ஒரு ப்ராஜெக்ட்டின் கதை அல்லது ஆஸ்டரிஸ்க் மற்றும் Php அடிப்படையில் PBX ஐ உருவாக்க 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. திட்டத்தின் யோசனையை மக்கள் விரும்பியதில் நான் மகிழ்ச்சியடைந்தேன். வளர்ச்சியை எளிதாக்க இன்னும் பல விருப்பங்கள் இருந்தன, ஆனால் அந்த நேரத்தில் கூட சில பணிகள் ஏற்கனவே எளிதாக்கப்பட்டன.

பிபிஎக்ஸ் உள்ளமைவை மாற்றுவதற்கான ஏபிஐ ஏமாற்றத்தை அளித்தது - இதன் விளைவாக நாம் விரும்பியது இல்லை. நான் அதே கொள்கையை எடுத்துக் கொண்டேன் freepbx, விண்ணப்பிக்கும் பொத்தானைக் கிளிக் செய்வதன் மூலம், முழு உள்ளமைவும் மீண்டும் உருவாக்கப்படும் மற்றும் தொகுதிகள் மறுதொடக்கம் செய்யப்படும்.

இது போல் தெரிகிறது:

ஒரு ப்ராஜெக்ட்டின் கதை அல்லது ஆஸ்டரிஸ்க் மற்றும் Php அடிப்படையில் PBX ஐ உருவாக்க 7 வருடங்கள் செலவிட்டேன்
*Dialplan என்பது ஒரு விதி (அல்காரிதம்) மூலம் அழைப்பு செயல்படுத்தப்படுகிறது.

ஆனால் இந்த விருப்பத்தின் மூலம், PBX அமைப்புகளை மாற்றுவதற்கு சாதாரண API ஐ எழுதுவது சாத்தியமில்லை. முதலில், மாற்றங்களைப் பயன்படுத்துவதற்கான செயல்பாடு ஆஸ்டெரிக்கை மிக நீண்ட மற்றும் வள தீவிரம்.
இரண்டாவதாக, நீங்கள் ஒரே நேரத்தில் இரண்டு செயல்பாடுகளை அழைக்க முடியாது, ஏனெனில் இருவரும் கட்டமைப்பை உருவாக்கும்.
மூன்றாவதாக, நிர்வாகியால் உருவாக்கப்பட்ட அமைப்புகள் உட்பட அனைத்து அமைப்புகளுக்கும் இது பொருந்தும்.

இந்த பதிப்பில் உள்ளதைப் போல அஸ்கோசியா, மாற்றப்பட்ட தொகுதிகளின் உள்ளமைவை உருவாக்கி தேவையான தொகுதிகளை மட்டும் மறுதொடக்கம் செய்ய முடிந்தது, ஆனால் இவை அனைத்தும் பாதி நடவடிக்கைகள். அணுகுமுறையை மாற்ற வேண்டியது அவசியம்.

இரண்டாவது பதிப்பு. மூக்கு வால் வெளியே இழுத்தது

சிக்கலைத் தீர்ப்பதற்கான யோசனை, கட்டமைப்பு மற்றும் டயல் திட்டத்தை மீண்டும் உருவாக்குவது அல்ல ஆஸ்டெரிக்கை, ஆனால் தரவுத்தளத்தில் தகவலைச் சேமித்து, அழைப்பைச் செயலாக்கும்போது நேரடியாக தரவுத்தளத்திலிருந்து படிக்கவும். ஆஸ்டெரிக்கை தரவுத்தளத்திலிருந்து உள்ளமைவுகளை எவ்வாறு படிப்பது, தரவுத்தளத்தில் உள்ள மதிப்பை மாற்றுவது மற்றும் மாற்றங்களை கணக்கில் எடுத்துக்கொண்டு அடுத்த அழைப்பு செயலாக்கப்படும், மேலும் டயல்பிளான் அளவுருக்களைப் படிக்க இந்த செயல்பாடு சரியானது. REALTIME_HASH.

இறுதியில், மறுதொடக்கம் செய்ய வேண்டிய அவசியமில்லை ஆஸ்டெரிக்கை அமைப்புகளை மாற்றும்போது மற்றும் அனைத்து அமைப்புகளும் உடனடியாகப் பயன்படுத்தத் தொடங்கியது ஆஸ்டெரிக்கை.

ஒரு ப்ராஜெக்ட்டின் கதை அல்லது ஆஸ்டரிஸ்க் மற்றும் Php அடிப்படையில் PBX ஐ உருவாக்க 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)
...

இதைப் பயன்படுத்தி டயல் பிளானில் ஒரு வரியை எளிதாகச் சேர்க்கலாம் அல்லது மாற்றலாம் அமி (கட்டுப்பாட்டு இடைமுகம் ஆஸ்டெரிக்கை) மற்றும் முழு டயல் பிளானையும் மறுதொடக்கம் செய்ய தேவையில்லை.

இது உள்ளமைவு API உடன் சிக்கலைத் தீர்த்தது. நீங்கள் நேரடியாக தரவுத்தளத்திற்குச் சென்று புதிய குழுவைச் சேர்க்கலாம் அல்லது மாற்றலாம், எடுத்துக்காட்டாக, குழுவிற்கான "டயல் டைம்" புலத்தில் டயல்-அப் நேரம் மற்றும் அடுத்த அழைப்பு ஏற்கனவே குறிப்பிட்ட நேரத்திற்கு நீடிக்கும் (இது ஒரு பரிந்துரை அல்ல. சில API செயல்பாடுகள் தேவைப்படுவதால், நடவடிக்கை அமி அழைப்புகள்).

முதல் கடினமான செயலாக்கங்கள் மீண்டும் முதல் பெருமையையும் ஏமாற்றத்தையும் தந்தன. அது வேலை செய்ததில் நான் மகிழ்ச்சியடைந்தேன். தரவுத்தளம் ஒரு முக்கியமான இணைப்பாக மாறியது, வட்டின் சார்பு அதிகரித்தது, அதிக அபாயங்கள் இருந்தன, ஆனால் எல்லாமே நிலையான மற்றும் சிக்கல்கள் இல்லாமல் வேலை செய்தன. மிக முக்கியமாக, இப்போது வலை இடைமுகம் மூலம் செய்யக்கூடிய அனைத்தையும் API மூலம் செய்ய முடியும், அதே முறைகள் பயன்படுத்தப்பட்டன. கூடுதலாக, வலை இடைமுகம் "PBX க்கு அமைப்புகளைப் பயன்படுத்து" பொத்தானை அகற்றியது, இது நிர்வாகிகள் அடிக்கடி மறந்துவிடும்.

வளர்ச்சி மிகவும் சிக்கலானதாக மாறியது ஏமாற்றம். முதல் பதிப்பிலிருந்து, 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 இலிருந்து dialplan மற்றும் பயன்பாடு FastAGI மற்றும் அனைத்து செயலாக்க விதிகளையும் PHP இல் எழுதவும். FastAGI அது அனுமதிக்கிறது ஆஸ்டெரிக்கை, அழைப்பைச் செயல்படுத்த, சாக்கெட்டுடன் இணைக்கவும். அங்கிருந்து கட்டளைகளைப் பெற்று முடிவுகளை அனுப்பவும். எனவே, டயல்பிளானின் தர்க்கம் ஏற்கனவே எல்லைக்கு வெளியே உள்ளது ஆஸ்டெரிக்கை மற்றும் எந்த மொழியிலும் எழுதலாம், என் விஷயத்தில் PHP இல்.

நிறைய சோதனை மற்றும் பிழை இருந்தது. முக்கிய பிரச்சனை என்னவென்றால், என்னிடம் ஏற்கனவே நிறைய வகுப்புகள்/கோப்புகள் இருந்தன. பொருள்களை உருவாக்கவும், அவற்றைத் துவக்கவும், ஒருவருக்கொருவர் பதிவு செய்யவும் சுமார் 1,5 வினாடிகள் ஆனது, மேலும் ஒரு அழைப்புக்கான இந்த தாமதம் புறக்கணிக்கப்படக்கூடிய ஒன்றல்ல.

துவக்கம் ஒரு முறை மட்டுமே நடந்திருக்க வேண்டும், எனவே php ஐப் பயன்படுத்தி ஒரு சேவையை எழுதுவதன் மூலம் தீர்வுக்கான தேடல் தொடங்கியது Pthreads. ஒரு வார பரிசோதனைக்குப் பிறகு, இந்த நீட்டிப்பு எவ்வாறு செயல்படுகிறது என்பதில் உள்ள சிக்கல்கள் காரணமாக இந்த விருப்பம் கைவிடப்பட்டது. ஒரு மாத சோதனைக்குப் பிறகு, நான் PHP இல் ஒத்திசைவற்ற நிரலாக்கத்தைக் கைவிட வேண்டியிருந்தது; எனக்கு எளிமையான, எந்த PHP தொடக்கநிலையாளருக்கும் தெரிந்த ஒன்று தேவைப்பட்டது, மேலும் PHPக்கான பல நீட்டிப்புகள் ஒத்திசைவானவை.

தீர்வு C இல் எங்கள் சொந்த பல-திரிக்கப்பட்ட சேவை, இது தொகுக்கப்பட்டது PHPLB. இது அனைத்து ATS php கோப்புகளையும் ஏற்றுகிறது, அனைத்து தொகுதிக்கூறுகளும் தொடங்கும் வரை காத்திருக்கிறது, ஒன்றுக்கொன்று மீண்டும் ஒரு அழைப்பைச் சேர்க்கிறது, மேலும் எல்லாம் தயாரானதும், அதை கேச் செய்கிறது. மூலம் விசாரித்த போது FastAGI ஒரு ஸ்ட்ரீம் உருவாக்கப்பட்டது, அனைத்து வகுப்புகளின் தற்காலிக சேமிப்பிலிருந்து ஒரு நகல் மற்றும் தரவு அதில் மீண்டும் உருவாக்கப்படுகிறது, மேலும் கோரிக்கை php செயல்பாட்டிற்கு அனுப்பப்படுகிறது.

இந்த தீர்வு மூலம், எங்கள் சேவைக்கு அழைப்பை அனுப்பும் நேரம் முதல் கட்டளைக்கு ஆஸ்டெரிக்கை 1,5 வினாடிகளில் இருந்து 0,05 வினாடிகளாகக் குறைந்துள்ளது, இந்த நேரம் திட்டத்தின் அளவைப் பொறுத்தது.

ஒரு ப்ராஜெக்ட்டின் கதை அல்லது ஆஸ்டரிஸ்க் மற்றும் Php அடிப்படையில் PBX ஐ உருவாக்க 7 வருடங்கள் செலவிட்டேன்

இதன் விளைவாக, டயல்பிளான் மேம்பாட்டிற்கான நேரம் கணிசமாகக் குறைக்கப்பட்டது, மேலும் PHP இல் உள்ள அனைத்து மாட்யூல்களின் முழு டயல் பிளானையும் மீண்டும் எழுத வேண்டியிருந்ததால் இதை நான் பாராட்டுகிறேன். முதலாவதாக, தரவுத்தளத்திலிருந்து ஒரு பொருளைப் பெறுவதற்கான முறைகள் ஏற்கனவே php இல் எழுதப்பட்டிருக்க வேண்டும்; அவை வலை இடைமுகத்தில் காட்சிக்கு தேவைப்பட்டன, இரண்டாவதாக, இது முக்கிய விஷயம், எண்கள் மற்றும் வரிசைகளுடன் சரங்களுடன் வசதியாக வேலை செய்வது இறுதியாக சாத்தியமாகும். தரவுத்தளத்துடன் பல PHP நீட்டிப்புகளுடன்.

தொகுதி வகுப்பில் டயல்பிளானைச் செயல்படுத்த, நீங்கள் செயல்பாட்டைச் செயல்படுத்த வேண்டும் dialplanDynamicCall மற்றும் வாதம் pbxCallRequest தொடர்பு கொள்ள ஒரு பொருளைக் கொண்டிருக்கும் ஆஸ்டெரிக்கை.

ஒரு ப்ராஜெக்ட்டின் கதை அல்லது ஆஸ்டரிஸ்க் மற்றும் Php அடிப்படையில் PBX ஐ உருவாக்க 7 வருடங்கள் செலவிட்டேன்

கூடுதலாக, dialplan ஐ பிழைத்திருத்தம் செய்ய முடிந்தது (php xdebug ஐக் கொண்டுள்ளது மற்றும் இது எங்கள் சேவைக்கு வேலை செய்கிறது), மாறிகளின் மதிப்புகளைப் பார்ப்பதன் மூலம் நீங்கள் படிப்படியாக நகர்த்தலாம்.

அழைப்பு தரவு

எந்தவொரு பகுப்பாய்வு மற்றும் அறிக்கைகளுக்கும் சரியாக சேகரிக்கப்பட்ட தரவு தேவைப்படுகிறது, மேலும் இந்த PBX தொகுதி முதல் பதிப்பு முதல் மூன்றாவது பதிப்பு வரை நிறைய சோதனை மற்றும் பிழையை சந்தித்தது. பெரும்பாலும், அழைப்பு தரவு ஒரு அறிகுறியாகும். ஒரு அழைப்பு = ஒரு பதிவு: யார் அழைத்தார்கள், யார் பதிலளித்தார்கள், எவ்வளவு நேரம் பேசினார்கள். மிகவும் சுவாரஸ்யமான விருப்பங்களில், அழைப்பின் போது எந்த பிபிஎக்ஸ் ஊழியர் அழைக்கப்பட்டார் என்பதைக் குறிக்கும் கூடுதல் அடையாளம் உள்ளது. ஆனால் இவை அனைத்தும் தேவைகளின் ஒரு பகுதியை மட்டுமே உள்ளடக்கியது.

ஆரம்ப தேவைகள்:

  • PBX யாரை அழைத்தது மட்டுமல்லாமல், யார் பதிலளித்தார்கள் என்பதையும் சேமிக்கவும் குறுக்கீடுகள் உள்ளன மற்றும் அழைப்புகளை பகுப்பாய்வு செய்யும் போது இது கணக்கில் எடுத்துக்கொள்ளப்பட வேண்டும்,
  • ஒரு பணியாளருடன் இணைவதற்கு முன் நேரம். இல் freepbx மற்றும் வேறு சில பிபிஎக்ஸ்கள், பிபிஎக்ஸ் ஃபோனை எடுத்தவுடனேயே அழைப்பு பதிலளித்ததாகக் கருதப்படுகிறது. ஆனால் குரல் மெனுவிற்கு நீங்கள் ஏற்கனவே தொலைபேசியை எடுக்க வேண்டும், எனவே அனைத்து அழைப்புகளும் பதிலளிக்கப்படும் மற்றும் பதிலுக்கான காத்திருப்பு நேரம் 0-1 வினாடி ஆகும். எனவே, ஒரு பதிலுக்கு முன் நேரத்தை மட்டும் சேமிக்க முடிவு செய்யப்பட்டது, ஆனால் முக்கிய தொகுதிகளுடன் இணைக்கும் முன் நேரத்தை சேமிக்க முடிவு செய்யப்பட்டது (தொகுதியே இந்த கொடியை அமைக்கிறது. தற்போது இது "பணியாளர்", "வெளிப்புற வரி"),
  • மிகவும் சிக்கலான டயல் பிளானுக்கு, ஒரு அழைப்பு வெவ்வேறு குழுக்களுக்கு இடையே பயணிக்கும்போது, ​​ஒவ்வொரு உறுப்புகளையும் தனித்தனியாக ஆய்வு செய்ய வேண்டியது அவசியம்.

பிபிஎக்ஸ் தொகுதிகள் அழைப்புகளில் தங்களைப் பற்றிய தகவல்களை அனுப்பும் போது சிறந்த விருப்பமாக மாறியது மற்றும் இறுதியில் தகவலை மரத்தின் வடிவத்தில் சேமிக்கிறது.

இது இப்படி தெரிகிறது:

முதலில், அழைப்பைப் பற்றிய பொதுவான தகவல் (எல்லோரையும் போல - சிறப்பு எதுவும் இல்லை).

ஒரு ப்ராஜெக்ட்டின் கதை அல்லது ஆஸ்டரிஸ்க் மற்றும் Php அடிப்படையில் PBX ஐ உருவாக்க 7 வருடங்கள் செலவிட்டேன்

  1. வெளியே லைனில் அழைப்பு வந்தது"சோதனைக்கு"05:55:52 மணிக்கு 89295671458 என்ற எண்ணிலிருந்து 89999999999 என்ற எண்ணுக்கு, இறுதியில் ஒரு பணியாளரால் பதில் அளிக்கப்பட்டது"செயலாளர்2» எண் 104. வாடிக்கையாளர் 60 வினாடிகள் காத்திருந்து 36 வினாடிகள் பேசினார்.
  2. பணியாளர்"செயலாளர்2"112 க்கு ஒரு அழைப்பு மற்றும் ஒரு பணியாளர் பதிலளிக்கிறார்"மேலாளர்18 வினாடிகளுக்குப் பிறகு. அவர்கள் 14 வினாடிகள் பேசுகிறார்கள்.
  3. வாடிக்கையாளர் பணியாளருக்கு மாற்றப்படுகிறார் "மேலாளர்1"அவர்கள் இன்னும் 13 வினாடிகள் தொடர்ந்து பேசுகிறார்கள்

ஆனால் இது பனிப்பாறையின் முனை; ஒவ்வொரு பதிவுக்கும் நீங்கள் PBX மூலம் விரிவான அழைப்பு வரலாற்றைப் பெறலாம்.

ஒரு ப்ராஜெக்ட்டின் கதை அல்லது ஆஸ்டரிஸ்க் மற்றும் Php அடிப்படையில் PBX ஐ உருவாக்க 7 வருடங்கள் செலவிட்டேன்

அனைத்து தகவல்களும் அழைப்புகளின் கூட்டாக வழங்கப்படுகின்றன:

  1. வெளியே லைனில் அழைப்பு வந்தது"சோதனைக்கு» 05:55:52 மணிக்கு 89295671458 என்ற எண்ணிலிருந்து 89999999999 என்ற எண்ணுக்கு.
  2. 05:55:53 மணிக்கு வெளிப்புற வரி உள்வரும் சுற்றுக்கு அழைப்பை அனுப்புகிறது "சோதனை»
  3. திட்டத்தின் படி அழைப்பைச் செயலாக்கும்போது, ​​தொகுதி "மேலாளர் அழைப்பு", இதில் அழைப்பு 16 வினாடிகள். இது வாடிக்கையாளருக்காக உருவாக்கப்பட்ட ஒரு தொகுதி.
  4. தொகுதி"மேலாளர் அழைப்பு" எண்ணுக்கு (வாடிக்கையாளர்) பொறுப்பான பணியாளருக்கு அழைப்பு அனுப்புகிறது"மேலாளர்1” மற்றும் பதிலுக்காக 5 வினாடிகள் காத்திருக்கிறது. மேலாளர் பதில் சொல்லவில்லை.
  5. தொகுதி"மேலாளர் அழைப்பு"குழுவிற்கு அழைப்பு அனுப்புகிறது"CORP மேலாளர்கள்" இவர்கள் ஒரே திசையில் உள்ள மற்ற மேலாளர்கள் (ஒரே அறையில் அமர்ந்து) பதிலுக்காக 11 வினாடிகள் காத்திருக்கிறார்கள்.
  6. குழு "CORP மேலாளர்கள்"ஊழியர்களை அழைக்கிறது"மேலாளர்1, மேலாளர்2, மேலாளர்3"ஒரே நேரத்தில் 11 வினாடிகள். பதில் இல்லை.
  7. மேலாளரின் அழைப்பு முடிவடைகிறது. மேலும் சுற்று தொகுதிக்கு அழைப்பை அனுப்புகிறது "1c இலிருந்து ஒரு வழியைத் தேர்ந்தெடுக்கிறது" வாடிக்கையாளருக்காக எழுதப்பட்ட ஒரு தொகுதி. இங்கே அழைப்பு 0 வினாடிகள் செயலாக்கப்பட்டது.
  8. சுற்று குரல் மெனுவிற்கு அழைப்பை அனுப்புகிறது "கூடுதல் டயலிங்குடன் அடிப்படை" வாடிக்கையாளர் 31 வினாடிகள் அங்கு காத்திருந்தார், கூடுதல் டயல் எதுவும் இல்லை.
  9. திட்டம் குழுவிற்கு அழைப்பு அனுப்புகிறது "செயலாளர்கள்", அங்கு வாடிக்கையாளர் 12 வினாடிகள் காத்திருந்தார்.
  10. ஒரு குழுவில், 2 ஊழியர்கள் ஒரே நேரத்தில் அழைக்கப்படுகிறார்கள் "செயலாளர்1"மேலும்"செயலாளர்2"மற்றும் 12 விநாடிகளுக்குப் பிறகு பணியாளர் பதிலளிக்கிறார்"செயலாளர்2" அழைப்பிற்கான பதில் பெற்றோர் அழைப்புகளாக நகலெடுக்கப்படுகிறது. குழுவில் அவர் பதிலளித்தார் என்று மாறிவிடும் "செயலாளர்2", சர்க்யூட்டை அழைத்தபோது பதில் வந்தது"செயலாளர்2" மற்றும் வெளிப்புற வரிசையில் அழைப்புக்கு பதிலளித்தார் "செயலாளர்2".

ஒவ்வொரு செயல்பாட்டையும் பற்றிய தகவல்களைச் சேமிப்பது மற்றும் அவற்றின் கூடு கட்டுதல் ஆகியவை வெறுமனே அறிக்கைகளை உருவாக்குவதை சாத்தியமாக்கும். குரல் மெனுவில் உள்ள அறிக்கை, அது எவ்வளவு உதவுகிறது அல்லது தடுக்கிறது என்பதைக் கண்டறிய உதவும். ஊழியர்கள் தவறவிட்ட அழைப்புகள் குறித்த அறிக்கையை உருவாக்கவும், அழைப்பு இடைமறிக்கப்பட்டது, எனவே தவறியதாக கருதப்படவில்லை, மேலும் இது ஒரு குழு அழைப்பு என்பதை கணக்கில் எடுத்துக்கொண்டு, வேறு யாரோ இதற்கு முன்பு பதிலளித்தனர், அதாவது அழைப்பையும் தவறவிடவில்லை.

இத்தகைய தகவல் சேமிப்பகம் ஒவ்வொரு குழுவையும் தனித்தனியாக எடுத்து, அது எவ்வளவு திறம்பட செயல்படுகிறது என்பதைத் தீர்மானிக்கவும், மணிநேரத்திற்கு பதிலளிக்கப்பட்ட மற்றும் தவறவிட்ட குழுக்களின் வரைபடத்தை உருவாக்கவும் உங்களை அனுமதிக்கும். மேலாளருடன் இணைந்த பிறகு இடமாற்றங்களை பகுப்பாய்வு செய்வதன் மூலம் பொறுப்பான மேலாளருடனான இணைப்பு எவ்வளவு துல்லியமானது என்பதை நீங்கள் சரிபார்க்கலாம்.

நீங்கள் மிகவும் வித்தியாசமான ஆய்வுகளையும் நடத்தலாம், எடுத்துக்காட்டாக, தரவுத்தளத்தில் இல்லாத எண்கள் சரியான நீட்டிப்பை டயல் செய்யும் அல்லது எத்தனை சதவீதம் வெளிச்செல்லும் அழைப்புகள் மொபைல் ஃபோனுக்கு அனுப்பப்படுகின்றன.

இறுதியில் என்ன?

PBX ஐ பராமரிக்க ஒரு நிபுணர் தேவையில்லை; மிகவும் சாதாரண நிர்வாகி அதை செய்ய முடியும் - நடைமுறையில் சோதிக்கப்பட்டது.

மாற்றங்களுக்கு, தீவிர தகுதிகள் கொண்ட நிபுணர்கள் தேவையில்லை; PHP பற்றிய அறிவு போதுமானது, ஏனெனில் தொகுதிகள் ஏற்கனவே SIP நெறிமுறைக்காகவும், வரிசைக்காகவும், பணியாளரை அழைப்பதற்காகவும், மற்றவர்களுக்கும் எழுதப்பட்டுள்ளன. ஒரு போர்வை வகுப்பு உள்ளது ஆஸ்டெரிக்கை. ஒரு தொகுதியை உருவாக்க, ஒரு புரோகிராமர் ஆயத்த தொகுதிகளை அழைக்கலாம் (மற்றும் ஒரு நல்ல வழியில்). மற்றும் அறிவு ஆஸ்டெரிக்கை வாடிக்கையாளர் சில புதிய அறிக்கையுடன் ஒரு பக்கத்தைச் சேர்க்கச் சொன்னால் முற்றிலும் தேவையற்றது. ஆனால் நடைமுறையில் மூன்றாம் தரப்பு புரோகிராமர்கள் சமாளிக்க முடியும் என்றாலும், ஆவணங்கள் மற்றும் கருத்துகளின் இயல்பான கவரேஜ் இல்லாமல் பாதுகாப்பற்றதாக உணர்கிறார்கள், எனவே முன்னேற்றத்திற்கு இன்னும் இடம் உள்ளது.

தொகுதிகள் முடியும்:

  • புதிய அழைப்பு செயலாக்க திறன்களை உருவாக்கவும்,
  • இணைய இடைமுகத்தில் புதிய தொகுதிகளைச் சேர்க்கவும்,
  • தற்போதுள்ள தொகுதிகளில் ஏதேனும் இருந்து பெறவும், செயல்பாடுகளை மறுவரையறை செய்து அதை மாற்றவும் அல்லது சற்று மாற்றியமைக்கப்பட்ட நகலாகவும்,
  • உங்கள் அமைப்புகளை மற்ற தொகுதிகளின் அமைப்புகள் டெம்ப்ளேட்டில் சேர்க்கவும் மேலும் பல.

API வழியாக PBX அமைப்புகள். மேலே விவரிக்கப்பட்டுள்ளபடி, அனைத்து அமைப்புகளும் தரவுத்தளத்தில் சேமிக்கப்பட்டு அழைப்பின் போது படிக்கப்படும், எனவே நீங்கள் API மூலம் அனைத்து PBX அமைப்புகளையும் மாற்றலாம். API ஐ அழைக்கும் போது, ​​கட்டமைப்பு மீண்டும் உருவாக்கப்படவில்லை மற்றும் தொகுதிகள் மறுதொடக்கம் செய்யப்படவில்லை, எனவே, உங்களிடம் எத்தனை அமைப்புகள் மற்றும் பணியாளர்கள் உள்ளனர் என்பது முக்கியமல்ல. API கோரிக்கைகள் விரைவாகச் செயல்படுத்தப்படும் மற்றும் ஒன்றையொன்று தடுக்காது.

PBX அனைத்து முக்கிய செயல்பாடுகளையும் கால அளவுகள் (காத்திருப்பு/உரையாடல்), கூடு கட்டுதல் மற்றும் PBX விதிமுறைகளுடன் (பணியாளர், குழு, வெளி வரி, சேனல், எண் அல்ல) ஆகியவற்றுடன் சேமிக்கிறது. குறிப்பிட்ட வாடிக்கையாளர்களுக்கு பல்வேறு அறிக்கைகளை உருவாக்க இது உங்களை அனுமதிக்கிறது மற்றும் பெரும்பாலான வேலை பயனர் நட்பு இடைமுகத்தை உருவாக்குவதாகும்.

அடுத்து என்ன நடக்கும் என்பதை காலம் சொல்லும். இன்னும் பல நுணுக்கங்கள் மீண்டும் செய்யப்பட வேண்டும், இன்னும் பல திட்டங்கள் உள்ளன, ஆனால் 3 வது பதிப்பை உருவாக்கி ஒரு வருடம் கடந்துவிட்டது, மேலும் யோசனை செயல்படுகிறது என்று நாம் ஏற்கனவே கூறலாம். பதிப்பு 3 இன் முக்கிய தீமை வன்பொருள் வளங்கள் ஆகும், ஆனால் இது பொதுவாக நீங்கள் எளிதாக உருவாக்குவதற்கு பணம் செலுத்த வேண்டும்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்