Sejarah satu proyek atau bagaimana saya membuat 7 tahun PBX berdasarkan Asterisk dan Php

Tentunya banyak dari Anda, seperti saya, punya ide untuk membuat sesuatu yang unik. Dalam artikel ini saya akan menjelaskan masalah teknis dan solusi yang harus dihadapi dalam pengembangan pertukaran telepon otomatis. Mungkin ini akan membantu seseorang untuk memutuskan ide mereka, dan seseorang untuk mengikuti jalan yang terpukul, karena saya juga menggunakan pengalaman para perintis.


gambar


Persyaratan Ide dan Kunci


Asterisk (framework ), FreePBX ( Asterisk). FreePBX – . , , .


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


. FreePBX, , - .


:


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

, . , . , FreePBX , . , . .


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



. , , , , -.


gambar
, , Asterisk.


gambar


, :


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

, :


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


:


gambar
* — (), .


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


, Askozia, , . .


.


Asterisk, . Asterisk , , REALTIME_HASH.


Asterisk Asterisk.


gambar


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 .


gambar


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


dialplanDynamicCall pbxCallRequest Asterisk.


gambar


( php xdebug ), .



. – . = : , , . , . .


:


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

, .


:


( — ).


gambar


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

, .


gambar


:


  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 .


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


Apa yang akan terjadi selanjutnya akan menunjukkan waktu. Ada banyak lagi nuansa yang layak dibuat kembali, ada banyak lagi rencana, tetapi satu tahun telah berlalu sejak penciptaan versi ke-3 dan sudah dapat dikatakan bahwa idenya berhasil. Kekurangan utama dari versi ke-3 adalah sumber daya perangkat keras, tetapi untuk kenyamanan pengembangan biasanya selalu cara untuk membayarnya.


All Articles