1

アスタリスク サーバーと GSM ゲートウェイがあります。現在のアスタリスクにかかってくる電話番号を知りたいです。コマンドでSIPを取得できるcore show channelsようになりましたが、電話番号を取得する方法がわかりません。私はphpAGIライブラリを使用しています:

$agi_manager = new AGI_AsteriskManager(null, $agi_config);
$connect = $agi_manager->connect();
$result = $agi_manager->command('core show channels');
4

1 に答える 1

1

「core show channels」出力の最初の行はチャネル ID です。これを使用してコマンドを発行しcore show channel <id>(チャネルの最後に 's' はありません!)、発呼者の番号を含むチャネルに関する詳細情報を表示します。

foreach(explode("\n", $result) as $line) {
   $cols = explode(" ", $line);
   $result2 = $agi_manager->command('core show channel '.$col[0]);
   if(preg_match('/Connected Line ID:\s*(\d+)/', $result2, $matches) {
      printf("Phone number: %s\n", $matches[1]);
   }
   else {
      printf("No phone number found for SIP Channel ID %s\n", $col[0]);
   }
}

Asterisk 1.8 でテストした結果、お使いのバージョンでは異なる結果が得られる場合があります。のサンプル出力を確認してくださいcore show channel

于 2012-08-07T12:28:20.190 に答える