تاريخ مشروع واحد أو كيف قمت بإنشاء 7 سنوات PBX على أساس النجمة وفب

من المؤكد أن العديد منكم ، مثلي ، كانت لديهم فكرة لجعل شيء فريد. في هذه المقالة سأصف المشاكل والحلول التقنية التي كان يجب مواجهتها في تطوير بدالات الهاتف الأوتوماتيكية. ربما سيساعد هذا شخصًا ما على اتخاذ قرار بشأن فكرته ، وشخص ما يجب أن يتبع المسار المطروق ، لأنني استخدمت أيضًا تجربة الرواد.


صورة


متطلبات الفكرة والمفتاح


كل شيء مبتذل التي بمحبة النجمة (إطارا لبناء تطبيقات الاتصالات)، والتشغيل الآلي من الاتصالات الهاتفية والمنشآت FreePBX (واجهة ويب لل النجمة ). إذا كانت احتياجات الشركة غير ملحوظة وملائمة لقدرات FreePBX - كل شيء رائع . تم التثبيت بالكامل في يوم واحد ، تلقت الشركة مقسم هاتف آلي تم تكوينه ، وواجهة مريحة وتدريب قصير ، بالإضافة إلى الدعم حسب الرغبة.


. Asterisk , -, . , . , , FreePBX. FreePBX php4, php5.6  .


. FreePBX, , - .


:


  • , . ,
  • , ,
  • . FreePBX API , .. , , , API Asterisk,
  • opensource – .

, . , . , FreePBX , . , . .


, — . , , , , . , - , « » , .



. , , , , -.


صورة
, , Asterisk.


صورة


, :


  • , , ,
  • - ( ),
  • ,
  • , .

, :


......
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, Apply .


:


صورة
* — (), .


API . -, Asterisk .
-, , .. .
-, .


, Askozia, , . .


.


Asterisk, . Asterisk , , REALTIME_HASH.


Asterisk Asterisk.


صورة


hints.


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


API . , , “dialtime” ( , .. API Ami ).


. , . , , , . , -, API . , - « », .


. php Asterisk , Asterisk .


:


$usersInitSection = $dialplan->createExtSection('usersinit-sub','s');
$usersInitSection
 ->add('',new \Dialplan\ext_gotoif('$["${G_USERINIT}"="1"]','exit'))
 ->add('',new \Dialplan\ext_set('G_USERINIT','1'))
 ->add('',new \Dialplan\ext_gosub('1','s','sub-AddOnAnswerSub','usersconnected-sub'))
 ->add('',new \Dialplan\ext_gosub('1','s','sub-AddOnPredoDialSub','usersinitondial-sub'))
 ->add('',new \Dialplan\ext_set('LOCAL(TECH)','${CUT(CHANNEL(name),/,1)}'))
 ->add('',new \Dialplan\ext_gotoif('$["${LOCAL(TECH)}"="SIP"]','sipdev'))
 ->add('',new \Dialplan\ext_gotoif('$["${LOCAL(TECH)}"="PJSIP"]','pjsipdev'))

, . , .



Asterisk php, FastAGI php. FastAGI Asterisk, , . . Asterisk , php.


. , /. , 1,5 , , .


1 php Pthreads. - . php , - , php, php .


‘’, PHPLIB. php , , , – . FastAGI , php .


Asterisk 1,5 0,05 .


صورة


, , c php. -, php , -, -, – - php.


dialplanDynamicCall pbxCallRequest Asterisk.


صورة


( php xdebug ), .



. – . = : , , . , . .


:


  • , , .. ,
  • . FreePBX , , . , 0-1 . , ( . «», « »),
  • , , .

, .


:


( — ).


صورة


  1. « » 05:55:52 89295671458 89999999999, «2» 104. 60 36 .
  2. «2» 112 «1» 8 . 14 .
  3. «1» 13

, .


صورة


:


  1. « » 05:55:52 89295671458 89999999999.
  2. 05:55:53 «test»
  3. « », 16 . .
  4. « » () «1» 5 . .
  5. « » « ». ( ) 11 .
  6. « » «1, 2, 3» 11 . .
  7. . « 1». . 0 .
  8. « ». 31 , .
  9. «», 12 .
  10. 2 «1» «2» 12 «2». . «2», «2» «2».

. , . , , , , - , .


, . , , .


, , , , .


?


, – .


php, .. sip , , . Asterisk. ( - ) . Asterisk , - . , , , .


:


  • ,
  • -,
  • , ,
  • .

API. , , API . API , , . API .


(/), (, , , , ). – .


ما سيحدث بعد ذلك سيظهر الوقت. هناك العديد من الفروق الدقيقة التي تستحق العودة ، وهناك العديد من الخطط ، ولكن مر عام بالفعل منذ إنشاء الإصدار الثالث ويمكننا القول بالفعل أن الفكرة تعمل. ناقص الإصدار الثالث الرئيسي هو موارد الأجهزة ، ولكن من أجل راحة التطوير ، عادةً ما يكون عليك بهذه الطريقة أن تدفع.


All Articles