هڪ منصوبي جي ڪهاڻي يا ڪيئن مون 7 سال گذاريا هڪ PBX ٺاهي Asterisk ۽ Php جي بنياد تي

يقينن توهان مان ڪيترن ئي، مون وانگر، ڪجهه منفرد ڪرڻ جو خيال هو. هن آرٽيڪل ۾ آئون بيان ڪندس ٽيڪنيڪل مسئلا ۽ حل جيڪي مون کي منهن ڏيڻو پيو جڏهن PBX کي ترقي ڪندي. ٿي سگهي ٿو ته اهو ڪنهن کي پنهنجي خيال تي فيصلو ڪرڻ ۾ مدد ڏيندو، ۽ ڪنهن کي چڱيء طرح جي رستي تي عمل ڪرڻ ۾، ڇاڪاڻ ته مون پڻ اڳين جي تجربن مان فائدو ورتو.

هڪ منصوبي جي ڪهاڻي يا ڪيئن مون 7 سال گذاريا هڪ PBX ٺاهي Asterisk ۽ Php جي بنياد تي

خيال ۽ اهم ضرورتون

۽ اهو سڀ ڪجهه صرف پيار سان شروع ٿيو اسٽرڪاس (ڪميونيڪيشن ايپليڪيشنن جي تعمير لاء فريم ورڪ)، ٽيليفون جي خودڪار ۽ تنصيب فري پي بي ايڪس (ويب انٽرفيس لاءِ اسٽرڪاس). جيڪڏهن ڪمپني جي ضرورتن کان سواءِ هئا ۽ قابليتن جي اندر ٿي ويا فري پي بي ايڪس - سڀ ڪجهه عظيم آهي. پوري انسٽاليشن XNUMX ڪلاڪن اندر ٿي وئي، ڪمپني کي هڪ ترتيب ڏنل PBX، هڪ صارف-دوست انٽرفيس ۽ مختصر ٽريننگ پلس سپورٽ ملي ٿي.

پر سڀ کان وڌيڪ دلچسپ ڪم غير معياري هئا ۽ پوء اهو ايترو شاندار نه هو. اسٽرڪاس تمام گهڻو ڪري سگھي ٿو، پر ويب انٽرفيس کي ڪم ڪرڻ جي ترتيب ۾ رکڻ لاء، ان کي ڪيترائي ڀيرا وڌيڪ وقت گذارڻ جي ضرورت ھئي. تنهن ڪري هڪ ننڍڙو تفصيل PBX جي باقي نصب ڪرڻ کان گهڻو وقت وٺي سگهي ٿو. ۽ نقطو اهو ناهي ته اهو هڪ ڊگهو وقت وٺندو آهي ويب انٽرفيس لکڻ ۾، پر اهو نقطو تعميراتي خاصيتن ۾ آهي. فري پي بي ايڪس. فن تعمير جا طريقا ۽ طريقا فري پي بي ايڪس php4 جي وقت تي ٺهرايو ويو، ۽ ان وقت اڳ ۾ ئي php5.6 موجود هو، جنهن تي هر شي کي آسان ۽ وڌيڪ آسان بڻائي سگهجي ٿو.

آخري تارو گرافيڪل ڊائلپلان هڪ ڊاگرام جي صورت ۾ هو. جڏهن مون ڪوشش ڪئي ته اهڙي شيءِ ٺاهڻ جي فري پي بي ايڪس، مون محسوس ڪيو ته مون کي ان کي خاص طور تي ٻيهر لکڻو پوندو ۽ اهو آسان ٿيندو ته ڪجهه نئون ٺاهيو.

اهم ضرورتون ھيون:

  • سادو سيٽ اپ، وجداني طور تي دستياب آهي جيتوڻيڪ هڪ نئين منتظم تائين. اهڙيء طرح، ڪمپنيون اسان جي پاسي تي PBX سار سنڀال جي ضرورت ناهي،
  • آسان تبديليون ته جيئن ڪم مناسب وقت ۾ حل ڪيا وڃن،
  • PBX سان انضمام جي آسان. يو فري پي بي ايڪس سيٽنگون تبديل ڪرڻ لاءِ ڪو به API نه هو، يعني توھان نه ٿا ڪري سگھو، مثال طور، ھڪڙي ٽئين پارٽي جي ايپليڪيشن مان گروپ يا وائس مينيو ٺاھيو، صرف خود API اسٽرڪاس,
  • اوپن سورس - پروگرامرز لاءِ هي ڪلائنٽ لاءِ تبديلين لاءِ انتهائي اهم آهي.

تيزيءَ سان ترقيءَ جو خيال اهو هو ته سموريون ڪارڪردگيءَ کي ماڊيولز تي مشتمل هوندو هو شين جي صورت ۾. سڀني شين کي هڪ عام والدين طبقو هجڻ گهرجي، جنهن جو مطلب آهي سڀني مکيه ڪمن جا نالا اڳ ۾ ئي سڃاتل آهن ۽ تنهن ڪري اڳ ۾ ئي ڊفالٽ لاڳو ٿيل آهن. شيون توهان کي ڊرامي طور تي دليلن جي تعداد کي گهٽائڻ جي اجازت ڏين ٿيون associative arrays جي صورت ۾ string keys، جنهن کي توهان ڳولي سگهو ٿا فري پي بي ايڪس اهو ممڪن هو مڪمل فنڪشن ۽ nested افعال جي جانچ ڪندي. شين جي صورت ۾، باني خودڪار مڪمل ٿيڻ سڀني ملڪيتن کي ڏيکاريندو، ۽ عام طور تي زندگي کي ڪيترائي ڀيرا وڌيڪ آسان بڻائي ڇڏيندو. ان سان گڏ، وراثت ۽ ٻيهر تعريف اڳ ۾ ئي تبديلين سان ڪيترن ئي مسئلن کي حل ڪري ٿو.

ايندڙ شيء جيڪا ٻيهر ڪم جي وقت کي سست ڪري ٿي ۽ ان کان بچڻ جي قابل هئي نقل هئي. جيڪڏھن ھڪڙو ماڊل آھي جيڪو ملازم کي ڊائل ڪرڻ لاءِ ذميوار آھي، پوءِ ٻيا سڀ ماڊيول جيڪي ڪنھن ملازم کي ڪال موڪلڻ گھرجن، انھن کي ان کي استعمال ڪرڻ گھرجي، ۽ انھن جون پنھنجون ڪاپيون نه ٺاھيون. تنهن ڪري، جيڪڏهن توهان کي ڪجهه تبديل ڪرڻ جي ضرورت آهي، ته توهان کي صرف هڪ جاء تي تبديل ڪرڻو پوندو ۽ "اهو ڪيئن ڪم ڪري ٿو" جي ڳولا هڪ جاء تي ٿيڻ گهرجي، ۽ سڄي منصوبي ۾ ڳولا نه ڪئي وڃي.

پهريون نسخو ۽ پهرين غلطيون

پهريون پروٽوٽائپ هڪ سال اندر تيار ٿي ويو. سڄو PBX، جيئن منصوبابندي ڪيو ويو، ماڊلر هو، ۽ ماڊلز نه رڳو پروسيسنگ ڪالن لاءِ نئين ڪارڪردگي شامل ڪري سگھن ٿا، پر پاڻ کي ويب انٽرفيس کي به تبديل ڪري سگھن ٿا.

هڪ منصوبي جي ڪهاڻي يا ڪيئن مون 7 سال گذاريا هڪ PBX ٺاهي Asterisk ۽ Php جي بنياد تي
ها، اهڙي اسڪيم جي صورت ۾ ڊائل پلان ٺاهڻ جو خيال منهنجو ناهي، پر اهو تمام سولو آهي ۽ مون به ائين ئي ڪيو. اسٽرڪاس.

هڪ منصوبي جي ڪهاڻي يا ڪيئن مون 7 سال گذاريا هڪ PBX ٺاهي Asterisk ۽ Php جي بنياد تي

هڪ ماڊل لکڻ سان، پروگرامر اڳ ۾ ئي ڪري سگھن ٿا:

  • ڪال پروسيسنگ لاءِ پنهنجي ڪارڪردگي ٺاهي، جيڪا ڊاگرام تي رکي سگهجي ٿي، ۽ گڏوگڏ کاٻي پاسي عناصر جي مينيو ۾،
  • ويب انٽرفيس لاءِ پنهنجا صفحا ٺاھيو ۽ پنھنجي ٽيمپليٽس کي موجوده صفحن ۾ شامل ڪريو (جيڪڏھن صفحي ڊولپر ھن لاءِ مهيا ڪيو آھي)،
  • مکيه سيٽنگون ٽئب ۾ پنھنجي سيٽنگون شامل ڪريو يا پنھنجي سيٽنگون ٽيب ٺاھيو،
  • پروگرامر موجوده ماڊل مان ورثي ۾ اچي سگھي ٿو، ڪارڪردگي جو حصو تبديل ڪري سگھي ٿو ۽ ان کي نئين نالي سان رجسٽر ڪري سگھي ٿو يا اصل ماڊل کي تبديل ڪري سگھي ٿو.

مثال طور، هن طريقي سان توهان پنهنجو آواز مينيو ٺاهي سگهو ٿا:

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

پهرين پيچيده عملن کي پهريون فخر ۽ پهرين مايوسي آڻيندي. مون کي خوشي هئي ته اهو ڪم ڪيو، ته مان اڳ ۾ ئي مکيه خاصيتون ٻيهر پيدا ڪرڻ جي قابل ٿي چڪو آهيان فري پي بي ايڪس. مون کي خوشي هئي ته ماڻهن ان اسڪيم جو خيال پسند ڪيو. ترقي کي آسان ڪرڻ لاءِ اڃا به ڪيترائي آپشن موجود هئا، پر ان وقت به ڪجهه ڪم اڳ ۾ ئي آسان ڪيا پيا وڃن.

PBX ترتيبن کي تبديل ڪرڻ لاءِ API هڪ مايوسي هئي - نتيجو اهو نه هو جيڪو اسان چاهيون ٿا. مون به ساڳيو اصول ورتو آهي فري پي بي ايڪسلاڳو ڪريو بٽڻ کي دٻائڻ سان، پوري تشڪيل ٻيهر ٺاهي وئي ۽ ماڊل ٻيهر شروع ڪيا ويا.

اهو هن طرح نظر اچي ٿو:

هڪ منصوبي جي ڪهاڻي يا ڪيئن مون 7 سال گذاريا هڪ PBX ٺاهي Asterisk ۽ Php جي بنياد تي
*Dialplan ھڪڙو قاعدو آھي (الورورٿم) جنھن جي ذريعي ڪال تي عمل ڪيو ويندو آھي.

پر هن اختيار سان، PBX سيٽنگون تبديل ڪرڻ لاء هڪ عام API لکڻ ناممڪن آهي. پهريون، تبديلين کي لاڳو ڪرڻ جو آپريشن اسٽرڪاس تمام ڊگهو ۽ وسيع وسيع.
ٻيو، توهان هڪ ئي وقت ۾ ٻه ڪم نه ٿا ڪري سگهو، ڇاڪاڻ ته ٻئي ترتيب ٺاهي سگهندا.
ٽيون، اهو سڀني سيٽنگن تي لاڳو ٿئي ٿو، بشمول منتظم پاران ٺاهيل.

هن نسخي ۾، جيئن ۾ اسڪوزيا، اهو ممڪن هو ته صرف تبديل ٿيل ماڊلز جي تشڪيل پيدا ڪرڻ ۽ صرف ضروري ماڊلز کي ٻيهر شروع ڪرڻ، پر اهي سڀئي اڌ قدم آهن. اهو رويو تبديل ڪرڻ ضروري هو.

ٻيو نسخو. نڙيءَ مان نڪتل دم ڦاسي پيو

مسئلي کي حل ڪرڻ جو خيال نه هو ته ترتيب ڏيڻ ۽ ڊائلپلان لاءِ اسٽرڪاس، پر ڊيٽا کي ڊيٽابيس ۾ محفوظ ڪريو ۽ ڪال پروسيسنگ دوران سڌو ڊيٽابيس مان پڙهو. اسٽرڪاس مون کي اڳ ۾ ئي خبر هئي ته ڊيٽابيس مان ترتيبن کي ڪيئن پڙهو، صرف ڊيٽابيس ۾ قدر کي تبديل ڪريو ۽ ايندڙ ڪال تي عمل ڪيو ويندو تبديلين کي مدنظر رکندي، ۽ فنڪشن ڊائلپلان پيرا ميٽرز پڙهڻ لاءِ مڪمل هو. REALTIME_HASH.

آخر ۾، ٻيهر شروع ڪرڻ جي ڪا به ضرورت نه هئي اسٽرڪاس جڏهن سيٽنگون تبديل ڪرڻ ۽ سڀني سيٽنگن کي فوري طور تي لاڳو ٿيڻ شروع ڪيو اسٽرڪاس.

هڪ منصوبي جي ڪهاڻي يا ڪيئن مون 7 سال گذاريا هڪ PBX ٺاهي Asterisk ۽ Php جي بنياد تي

ڊائلپلان ۾ صرف تبديليون واڌايون نمبرن جو اضافو ۽ اشارو. پر اهي ننڍيون ننڍيون تبديليون هيون

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 تي سيٽنگون لاڳو ڪريو" بٽڻ کان نجات حاصل ڪئي، جيڪي منتظمين اڪثر ڪري وساريندا آهن.

مايوسي اها هئي ته ترقي وڌيڪ پيچيده ٿي وئي. پهرين ورزن کان وٺي، پي ايڇ پي ٻولي ٻولي ۾ هڪ ڊائلپلان ٺاهيو آهي اسٽرڪاس ۽ اهو مڪمل طور تي اڻ پڙهيل ڏسڻ ۾ اچي ٿو، گڏوگڏ ٻولي پاڻ اسٽرڪاس هڪ dialplan لکڻ لاء ان کي انتهائي ابتدائي آهي.

اهو ڪهڙو نظر آيو:

$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 فاسٽاجي ۽ سڀني پروسيسنگ قاعدن کي PHP ۾ لکو. فاسٽاجي اها ڳالهه جي اجازت ڏئي اسٽرڪاس، ڪال کي پروسيس ڪرڻ لاءِ، ساکٽ سان ڳنڍيو. اتان کان حڪم حاصل ڪريو ۽ نتيجا موڪليو. اهڙيء طرح، dialplan جي منطق اڳ ۾ ئي حدن کان ٻاهر آهي اسٽرڪاس ۽ ڪنهن به ٻولي ۾ لکي سگهجي ٿو، منهنجي صورت ۾ PHP ۾.

اتي تمام گهڻي آزمائش ۽ غلطي هئي. بنيادي مسئلو اهو هو ته مون وٽ اڳ ۾ ئي ڪيترائي ڪلاس / فائلون هيون. شيون ٺاھڻ، انھن کي شروع ڪرڻ، ۽ ھڪ ٻئي سان ھڪ ٻئي کي رجسٽر ڪرڻ ۾ اٽڪل 1,5 سيڪنڊ لڳن ٿا، ۽ ھيءَ دير في ڪال ڪا شيءِ نه آھي جنھن کي نظرانداز ڪري سگھجي.

شروعات صرف هڪ ڀيرو ٿيڻ گهرجي ها ۽ تنهن ڪري حل جي ڳولا شروع ٿي php استعمال ڪندي خدمت لکڻ سان ٿلهو. تجربن جي هڪ هفتي کان پوء، هي اختيار محفوظ ڪيو ويو ڇاڪاڻ ته هي واڌارو ڪيئن ڪم ڪري ٿو. هڪ مهيني جي جاچ کان پوءِ، مون کي PHP ۾ هم وقت سازي جي پروگرامنگ کي ڇڏڻو پيو؛ مون کي ڪجهه سادو گهربل هو، جيڪو ڪنهن به پي ايڇ پي جي شروعات ڪندڙ کان واقف هجي، ۽ پي ايڇ پي لاءِ ڪيتريون ئي واڌايون هم وقت ساز آهن.

حل سي ۾ اسان جي پنهنجي گهڻن موضوع واري خدمت هئي، جنهن سان گڏ گڏ ڪيو ويو PHPLIB. اهو سڀني ATS php فائلن کي لوڊ ڪري ٿو، سڀني ماڊلز جي شروعات ڪرڻ جو انتظار ڪري ٿو، هڪ ٻئي ڏانهن ڪال بيڪ شامل ڪري ٿو، ۽ جڏهن سڀ ڪجهه تيار آهي، ان کي ڪيش ڪري ٿو. جڏهن پڇا ڳاڇا ڪندي فاسٽاجي ھڪڙو وهڪرو ٺاھيو ويو آھي، ھڪڙي ڪاپي سڀني طبقن جي ڪيش مان ۽ ڊيٽا ان ۾ ٻيهر ٺاھيو ويندو آھي، ۽ درخواست کي php فنڪشن ڏانھن منتقل ڪيو ويندو آھي.

هن حل سان، اسان جي خدمت کي ڪال موڪلڻ کان وقت پهرين حڪم تائين اسٽرڪاس 1,5s کان 0,05s تائين گھٽجي ويو ۽ ھن وقت منصوبي جي سائيز تي ٿورو منحصر آھي.

هڪ منصوبي جي ڪهاڻي يا ڪيئن مون 7 سال گذاريا هڪ PBX ٺاهي Asterisk ۽ Php جي بنياد تي

نتيجي طور، ڊائلپلان ڊولپمينٽ لاءِ وقت تمام گھڻو گھٽجي ويو، ۽ مان ان جي تعريف ڪري سگھان ٿو ڇو ته مون کي پي ايڇ پي ۾ سڀني ماڊلز جي پوري ڊائلپلان کي ٻيهر لکڻو پيو. پهرين، طريقن کي پهريان ئي php ۾ لکڻ گهرجي ڊيٽابيس مان هڪ اعتراض حاصل ڪرڻ لاء؛ اهي ويب انٽرفيس ۾ ڊسپلي لاء گهربل هئا، ۽ ٻيو، ۽ اهو بنيادي شيء آهي، اهو آخرڪار ممڪن آهي ته آسانيء سان انگن ۽ صفن سان تارن سان ڪم ڪرڻ. ڊيٽابيس سان گڏ ڪيترن ئي پي ايڇ پي واڌارن سان.

ماڊل ڪلاس ۾ ڊائلپلان کي پروسيس ڪرڻ لاءِ توهان کي فنڪشن کي لاڳو ڪرڻو پوندو dialplanDynamicCall ۽ دليل pbxCallRequest هڪ اعتراض تي مشتمل هوندو جنهن سان لهه وچڙ ۾ اچي اسٽرڪاس.

هڪ منصوبي جي ڪهاڻي يا ڪيئن مون 7 سال گذاريا هڪ PBX ٺاهي Asterisk ۽ Php جي بنياد تي

ان کان علاوه، ڊبلپلان کي ڊيب ڪرڻ ممڪن ٿي ويو (php وٽ xdebug آهي ۽ اهو اسان جي خدمت لاء ڪم ڪري ٿو)، توهان قدم قدم تي منتقل ڪري سگهو ٿا متغير جي قدرن کي ڏسڻ سان.

ڪال ڊيٽا

ڪنهن به تجزياتي ۽ رپورٽن کي صحيح طور تي گڏ ڪيل ڊيٽا جي ضرورت آهي، ۽ هي PBX بلاڪ پڻ پهرين کان ٽئين نسخي تائين تمام گهڻي آزمائش ۽ غلطي مان گذريو. گهڻو ڪري، ڪال ڊيٽا هڪ نشاني آهي. هڪ ڪال = هڪ رڪارڊنگ: ڪير سڏ ڪيو، ڪنهن جواب ڏنو، ڪيتري دير ڳالهايو. وڌيڪ دلچسپ اختيارن ۾، اتي ھڪڙو اضافي نشاني آھي جيڪو اشارو ڪري ٿو جيڪو PBX ملازم ڪال دوران سڏيو ويو. پر اهو سڀ ڪجهه صرف ضرورتن جو حصو آهي.

ابتدائي ضرورتون ھيون:

  • محفوظ ڪريو نه رڳو جنهن کي پي بي ايڪس سڏيو ويو، پر اهو پڻ جيڪو جواب ڏنو، ڇاڪاڻ ته اتي مداخلتون آهن ۽ انهن کي حساب ۾ رکڻو پوندو جڏهن ڪالن جو تجزيو ڪرڻ،
  • هڪ ملازم سان ڳنڍڻ کان اڳ وقت. ۾ فري پي بي ايڪس ۽ ڪجھ ٻيا PBXs، ڪال کي جواب ڏنو ويندو آھي جيئن ئي PBX فون کڻندو آھي. پر وائس مينيو لاءِ توهان کي پهريان کان ئي فون کڻڻ جي ضرورت آهي، تنهنڪري سڀني ڪالن جو جواب ڏنو ويندو آهي ۽ جواب جي انتظار جو وقت 0-1 سيڪنڊ ٿي ويندو آهي. تنهن ڪري، اهو فيصلو ڪيو ويو ته نه صرف جواب ڏيڻ کان اڳ جو وقت، پر اهم ماڊلز سان ڳنڍڻ کان اڳ جو وقت (ماڊيول پاڻ هن پرچم کي سيٽ ڪري ٿو. في الحال اهو آهي "ملازمت"، "خارجي لائن")،
  • هڪ وڌيڪ پيچيده ڊائلپلان لاءِ، جڏهن ڪال مختلف گروپن جي وچ ۾ سفر ڪري ٿي، اهو ضروري هو ته هر عنصر کي الڳ الڳ جانچڻ جي قابل هوندو.

بهترين اختيار اهو ثابت ٿيو جڏهن PBX ماڊلز پنهنجي باري ۾ معلومات ڪالن تي موڪليندا آهن ۽ آخرڪار معلومات کي وڻ جي صورت ۾ محفوظ ڪندا آهن.

اهو ئي ڏسڻ جهڙو آهي:

پهرين، ڪال بابت عام معلومات (جهڙوڪ هرڪو - خاص ڪجهه به ناهي).

هڪ منصوبي جي ڪهاڻي يا ڪيئن مون 7 سال گذاريا هڪ PBX ٺاهي Asterisk ۽ Php جي بنياد تي

  1. هڪ ٻاهرئين لائن تي هڪ ڪال موصول ٿي "امتحان لاء"05:55:52 تي نمبر 89295671458 کان نمبر 89999999999 تائين، آخر ۾ اهو هڪ ملازم طرفان جواب ڏنو ويو"سيڪريٽري 2» نمبر 104 سان. ڪلائنٽ 60 سيڪنڊن جو انتظار ڪيو ۽ 36 سيڪنڊن لاءِ ڳالهايو.
  2. ملازم "سيڪريٽري 2"112 تي ڪال ڪري ٿو ۽ هڪ ملازم جواب ڏئي ٿو"مئنيجر1»8 سيڪنڊن کان پوءِ. اهي 14 سيڪنڊن لاء ڳالهائي رهيا آهن.
  3. ڪلائنٽ کي ملازم ڏانهن منتقل ڪيو ويو آهي "مينيجر1"جتي اهي وڌيڪ 13 سيڪنڊن تائين ڳالهائڻ جاري رکندا آهن

پر هي آئس برگ جو ٽپ آهي؛ هر رڪارڊ لاءِ توهان PBX ذريعي تفصيلي ڪال تاريخ حاصل ڪري سگهو ٿا.

هڪ منصوبي جي ڪهاڻي يا ڪيئن مون 7 سال گذاريا هڪ PBX ٺاهي Asterisk ۽ Php جي بنياد تي

سڀ معلومات پيش ڪئي وئي آهي ڪالن جي هڪ nesting طور:

  1. هڪ ٻاهرئين لائن تي هڪ ڪال موصول ٿي "امتحان لاء» 05:55:52 تي نمبر 89295671458 کان نمبر 89999999999 تائين.
  2. 05:55:53 تي ٻاهرئين لڪير انڪمنگ سرڪٽ ڏانهن ڪال موڪلي ٿي "امتحان»
  3. جڏهن اسڪيم جي مطابق ڪال کي پروسيس ڪندي، ماڊل "مينيجر ڪال"، جنهن ۾ ڪال 16 سيڪنڊ آهي. ھي ھڪڙو ماڊل آھي جيڪو ڪلائنٽ لاء تيار ڪيو ويو آھي.
  4. ماڊل "مينيجر ڪال"ڪال موڪلي ٿو ملازم کي نمبر لاءِ ذميوار (ڪلائنٽ)"مئنيجر1”۽ جواب لاءِ 5 سيڪنڊن جو انتظار ڪري ٿو. مئنيجر جواب نه ڏنو.
  5. ماڊل "مينيجر ڪال"گروپ ڏانهن ڪال موڪلي ٿو"CORP مينيجرز" اهي ساڳيا هدايت جا ٻيا مينيجر آهن (ساڳئي ڪمري ۾ ويٺي) ۽ جواب لاءِ 11 سيڪنڊن جو انتظار ڪري رهيا آهن.
  6. ميڙ "CORP مينيجرز"ملازمن کي سڏي ٿو"مئنيجر1, مئنيجر2, مئنيجر311 سيڪنڊن لاءِ. ڪو جواب نه.
  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 سڀني اهم عملن کي گڏ ڪري ٿو ڪالن سان گڏ مدو (انتظار/ڳالهه)، nesting ۽ PBX اصطلاحن ۾ (ملازم، گروپ، خارجي لائن، نه چينل، نمبر). هي توهان کي اجازت ڏئي ٿو مختلف رپورٽون ٺاهڻ لاءِ مخصوص ڪلائنٽ ۽ اڪثر ڪم هڪ صارف دوست انٽرفيس ٺاهڻ آهي.

وقت ٻڌائيندو ته اڳتي ڇا ٿيندو. اڃا به ڪيتريون ئي نونسون آهن جن کي ٻيهر ڪرڻ جي ضرورت آهي، اڃا به ڪيترائي منصوبا آهن، پر ٽيون ورزن جي ٺهڻ کان هڪ سال گذري چڪو آهي ۽ اسان اڳ ۾ ئي چئي سگهون ٿا ته اهو خيال ڪم ڪري رهيو آهي. نسخو 3 جو بنيادي نقصان هارڊويئر وسيلن جو آهي، پر اهو عام طور تي آهي جيڪو توهان کي ترقي جي آسانيءَ لاءِ ادا ڪرڻو پوندو.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو