はじめての方へTrixbox CE2.6IP電話機IP電話サービスPHPAGI参考情報導入事例紹介
トップページ >PHPAGI >Asterisk Manager APIを使って、アプリケーションから発信・電話をかける方法

PHPAGI

Asterisk Manager APIを使って、アプリケーションから発信・電話をかける方法

「/var/spool/asterisk/outgoing/(自動発信)」 を使わずに、
Asterisk Manager APIを使って、アプリケーションから発信・電話をかける方法です。

必要に応じて、この4つを書き換えてもらえばすぐ動くはずです。
password
SIP/NTT-hikari-4/06xxxxxxxx
DeadAGI
script.php|1|52

下記プログラムを動かす場合は気にしなくてもいいのですが、
自分で一からプログラムを書く場合に、$timeoutの設定値ではまるとエライ目にあいます。

例えば$timeoutが1秒(1000ms)以下だと、
内線へのコールの場合、着信音が一瞬鳴ってすぐ切れる、いわゆる瞬断、
外線へのコールの場合、電話をとってからすぐ切れる、アプリケーションエラーによる回線断
のように挙動が変わります。(この問題に気づくのに半日かかりました。)


Asterisk Manager APIを使って、アプリケーションから発信・電話をかける
---
#!/usr/bin/php -q

require_once("phpagi-asmanager.php");

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

$astman = new AGI_AsteriskManager();

if($astman->connect($server,$username,$secret)){

$channel="SIP/NTT-hikari-4/06xxxxxxxx"; //ひかり電話(NTT-hikari-4)で外線(06xxxxxxxx)に発信
//$channel="SIP/6101"; //内線発信
$exten=NULL;
$context=NULL;
$priority=NULL;
$application="DeadAGI"; //起動するアプリケーションはDeadAGIとする。
$data="script.php|1|52"; //DeadAGIで起動する外部プログラムはscript.php。第1引数は1。第2引数は52。
$timeout=20*1000; //単位はms(20秒*1000ms)
$callerid=NULL;
$variable=NULL;
$account=NULL;
$async=NULL;
$actionid=NULL;

//アプリケーションに発信
$astman->Originate($channel,$exten,$context,$priority,$application,$data,$timeout,$callerid,$variable,$account,$async,$actionid);
}

$astman->disconnect();

?>
---


もし、パスワードの設定が間違えているとこんなメッセージがでます。
---
bash-3.1$ ./test_originate.php
Tue, 13 May 2008 18:04:22 +0900 - Failed to login.
---