はじめての方へTrixbox CE2.6IP電話機IP電話サービスPHPAGI参考情報導入事例紹介
トップページ >PHPAGI >Asterisk Manager APIを使って、チャンネル状態を調べる方法

PHPAGI

Asterisk Manager APIを使って、チャンネル状態を調べる方法

チャンネル状態を調べる方法には、AGIで調べる方法とAsterisk Manager APIを使う方法の2つがあります。
ただし、AGIはAsteriskから呼び出されるため、いつでも自由に調べることができません。
一方、Asterisk Manager APIは、Asteriskに接続すれば、いつでも調べることができます。

調べる方法は次のサンプルプログラムでできます。
とりあえず、動かしてみて、プログラムをいぢってみて、感覚を掴んでみてください。

asman_status.php
---
#!/usr/bin/php -q

require_once("phpagi-asmanager.php");

$server="localhost";
$username="admin";
$secret="password";


function cb_status($e, $parameters, $server, $port) {
print_r($parameters);
}


$astman = new AGI_AsteriskManager();
$astman->add_event_handler('status',cb_status);

if($astman->connect($server,$username,$secret)){
$ret = $astman->Status("");
print_r($ret);
}

$astman->disconnect();

?>

---

これを動かしたときにどのようになるか結果はこちらです。
■電話がなっている状態
---
bash-3.1$ ./asman_status.php
Array
(
[Response] => Success
[Message] => Channel status will follow
)
Thu, 08 May 2008 21:45:38 +0900 - Got event.. status
Thu, 08 May 2008 21:45:38 +0900 - Execute handler cb_status
Array
(
[Event] => Status
[Privilege] => Call
[Channel] => SIP/NTT-hikari-4-094647c0
[CallerID] =>
[CallerIDNum] =>
[CallerIDName] =>
[Account] =>
[State] => Ringing
[Uniqueid] => 1210250733.19
)
Thu, 08 May 2008 21:45:38 +0900 - Got event.. statuscomplete
Thu, 08 May 2008 21:45:38 +0900 - No event handler for event 'statuscomplete'
---

■電話をとった時
---
bash-3.1$ ./asman_status.php
Array
(
[Response] => Success
[Message] => Channel status will follow
)
Thu, 08 May 2008 21:45:44 +0900 - Got event.. status
Thu, 08 May 2008 21:45:44 +0900 - Execute handler cb_status
Array
(
[Event] => Status
[Privilege] => Call
[Channel] => SIP/NTT-hikari-4-094647c0
[CallerID] =>
[CallerIDNum] =>
[CallerIDName] =>
[Account] =>
[State] => Up
[Uniqueid] => 1210250733.19
)
Thu, 08 May 2008 21:45:44 +0900 - Got event.. statuscomplete
Thu, 08 May 2008 21:45:44 +0900 - No event handler for event 'statuscomplete'
bash-3.1$ ./asman_status.php
Array
(
[Response] => Success
[Message] => Channel status will follow
)
Thu, 08 May 2008 21:46:20 +0900 - Got event.. statuscomplete
Thu, 08 May 2008 21:46:20 +0900 - No event handler for event 'statuscomplete'
---

注目するところは、現在有効なチャンネルしか表示されないということです。

着信側で電話がなっているときと、電話をとったときに「State」が変化しています。