1

アスタリスク 11.3.0 用に php で agi を作成しました。サーバーで ps ux を使用すると、いくつかの agi 呼び出しがキューにスタックします。
6:42 /usr/bin/php -q /var/lib/asterisk/agi-bin/php/myagi.php Unknown 190090

このような多くのプロセスがキューに詰まっています。

番号のようなすべてのプロセス 0:00 /usr/bin/php -q /var/lib/asterisk/agi-bin/php/myagi.php 954332 190053

不明な番号から電話がかかってきた場合に agi をデバッグする方法を知る必要があります。

私の AGI スクリプト

#!/usr/bin/php -q
<?php
pcntl_signal(SIGHUP, SIG_IGN);
require('phpagi/phpagi.php');

$agi                = new AGI();

$calleridnum    = $agi->request['agi_callerid'];
$callerid       = $agi->request['agi_callerid'];
$callidname     = $agi->request['agi_calleridname'];
$phoneno        = $agi->request['agi_dnid'];
$channel        = $agi->request['agi_channel'];
$uniqueid       = $agi->request['agi_uniqueid'];

if(substr($phoneno,0,3)==011)
{
    $phoneno = substr($phoneno, 3);
}

$URL = '12121@mysip.abc.com';

$dialstr = "SIP/" . $URL;

$res = $agi->exec("DIAL $dialstr");

$dialstatus = $agi->get_variable("DIALSTATUS");
$answeredtime = $agi->get_variable("ANSWEREDTIME");


if($dialstatus['data'] != "ANSWER")
{
    //No answer
}
if($dialstatus['data'] == "ANSWER") 
{
    $agi->verbose("I am in Cutting Balance!!");
}
savecdr($URL,"$callerid", $phoneno, $trunk, $dialstatus['data'], $answeredtime['data'], $PerMinuteCharges,$callstart,$TriggerCharge,$OID,$callidname,$IP,$NodeID,$MinutesUsed,$TalkTime,$TTCut,$pTTRemain,$pHash[Expiry],$pMinTotal,$VOID);


$agi->hangup();

?>
4

2 に答える 2

0

チャネルが切断された場合 ( Call Disconnect ) 、SIGHUP シグナルを無視します。

gダイヤルに追加:

g: Proceed with dialplan execution at the next priority in the current extension if the destination channel hangs up.

$agi->exec('DIAL', $dialstring.",30,g");

AGI デバッグ

スクリプトにいくつかのデバッグ メッセージを出力できます。

// debug infos
$agi->verbose("before dial",3); 
// ...
$agi->verbose("Number: ".$argv[2]); 

アスタリスクに接続します (Verbosity 3 を使用) : asterisk -rvvv

CLI コマンド agi show コマンドを使用して、使用可能な agi コマンドを一覧表示します。
*CLI> agi show

Asterisk CLI で AGI とデバッグ メッセージを確認します。
*CLI> agi set debug on

「不明」が指定されている場合は、AGI スクリプトを詳細に設定し、ファイルにログを記録できます。

if ($argv[1] == "Unknown") {
  define ('VERBOSE', true);
} else {
  define ('VERBOSE', false);
}

if (VERBOSE) file_put_contents("/tmp/unknown.log", time().": ".$msg, FILE_APPEND | LOCK_EX);
于 2013-04-02T07:48:35.780 に答える