アスタリスク+ Lua + DEFコードの定期的な更新

すべての人への挨拶。 アスタリスクでluaを使用することに関する以前の記事を書いた後、luaでDEFコードを使用することについての少しの説明について考えました。 以前、PHPのスクリプトを使用したコードの生成に関する記事がここに掲載されました。 私はこのスクリプトを正常に使用し、使用しましたが、小さな(非常に大きくない)変更を加えました。





スクリプト自体はリストしません。ここで読むことができます。

habrahabr.ru/post/150793

ここでは、改善点のみを示します。



まず、luaでコードを生成し、標準の「ライブラリ」パス(/usr/lib/lua/5.1または64ビットシステムの場合は/usr/lib64/lua/5.1)に従ってコードを保存する必要があります。 これを行うために、上記のスクリプトでは、最初に以下を記録します。



$dp = fopen('/usr/lib/lua/5.1/mphonetable.lua','w'); //lua dialplan
      
      





この行を直後に挿入しました
 $defs = array();
      
      







さらに、元のスクリプトの最後に、foreachループの後、luaコードを生成する次のエントリを追加しました。



 #        9 $linecode = '98'; fwrite($dp,"extensions.mobile_out={\n"); foreach($regs as $op => $reg) { foreach($reg as $r) { fwrite($dp,"\t[\"_"); echo "\t[\"_"; echo $linecode.$r.'"]=call_mobile;'."\n"; $line = $linecode.$r.'"]=call_mobile;'."\n"; fwrite($dp,$line); } } #        9 $linecode = '8'; foreach($regs as $op => $reg) { foreach($reg as $r) { fwrite($dp,"\t[\"_"); echo "\t[\"_"; echo $linecode.$r.'"]=call_mobile;'."\n"; $line = $linecode.$r.'"]=call_mobile;'."\n"; fwrite($dp,$line); } } fwrite($dp,"\tinclude = {\"out_trunk\"};\n"); fwrite($dp,"}\n"); fclose($dp);
      
      







call_mobileは、携帯電話の終了イベントを処理する関数です。



2番目-アスタリスクの変更を適用する必要があります。



 #-------------------------------------------------------- ob_implicit_flush(true); set_time_limit(0); #  $host="192.168.xxx.xxx"; #    $port="5038"; $user="login"; $pass="password"; $wrets=""; #  $socket = fsockopen("$host","$port"); if (!$socket) exit("no connect to ats"); # fputs($socket, "Action: login\r\n"); fputs($socket, "Events: off\r\n"); fputs($socket, "UserName: $user\r\n"); fputs($socket, "Secret: $pass\r\n\r\n"); fputs($socket, "Action: command\r\n"); fputs($socket, "command: module reload pbx_lua\r\n\r\n"); fputs($socket, "Action: logoff\r\n\r\n"); #  while (!feof($socket)) { $line = fread($socket,8192); echo $line; } fclose($socket); #       ...
      
      







第三に、私たちはスクリプトを無作法にぶら下げ、その存在を忘れます:)私のスクリプトは1日に1回実行されました。



実際、拡張機能の面倒な記録を回避し、関数を介して外部への出口の解析を実装できますが、ここで議論のある質問は、これが最適であるという事実ではありません。 イベントの説明は、手ではなく機械によって均等に構成されているため、書き込み後は一般にこの問題を忘れることができます。



コール自体のルート(どの方向をどの方向または誰に渡すか)については、自分で決定します。 約8個のgsmゲートウェイがありました。 モバイルにアクセスするために、興味深いレートの2つのモバイルオペレーターが使用されました。 Ekonymyは経済的でなければなりません:)。



それだけです さようなら!



All Articles