相關連結:
Asterisk AGI程式編寫指南:http://bbs.voip88.com/thread-1684-1-1.html
asterisk agi應用程式設計入門: http://bbs.voip88.com/thread-39-1-1.html
Asterisk AGI :http://www.voip-info.org/wiki/view/Asterisk+AGI
Asterisk perl agi: http://www.voip-info.org/index.php?content_id=3468
Asterisk AGI php:http://www.voip-info.org/wiki/view/Asterisk+AGI+php
phpagi:http://phpagi.sourceforge.net/
Asterisk simple php lookup mysql database to set callerid name:http://www.voip-info.org/wiki/view/Asterisk+simple+php+lookup+mysql+database+to+set+callerid+name
在mysql中添加資料庫test,并在其中建立calleridlookup表:
create table calleridlookup(id smallint(6) NOT NULL auto_increment PRIMARY KEY, callernum varchar(20), destexten varchar(20));
插入幾行資料
/var/lib/asteriks/agi-bin建立lookup.php腳本:
#!/usr/bin/php -q
<?
require 'phpagi.php';
$agi = new AGI();
$no=preg_replace("#[^0-9]#","",$agi->request[agi_callerid]);//remove any non numeric characters
$db = 'test';
$dbuser = 'asteriskuser';
$dbpass = 'amp109';
$dbhost = 'localhost';
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db("$db") or die("could not open database");
//$row=mysql_query("select title,firstname,lastname from clients where telsearch like '%$no%' LIMIT 1");
$row=mysql_query("select destexten from calleridlookup where callernum like '8999' LIMIT 1");
if (mysql_num_rows($row)==1){//if found number and number greater than 4 digits to avoid 3 digit internal extensions
$row=mysql_fetch_array($row);
if ($row[destexten]) $name = $row[destexten];
// if ($row[title]) $name .= $row[title]." ";
// if ($row[firstname]) $name .= $row[firstname]." ";
// if ($row[lastname]) $name .= $row[lastname];
}
//else $name=$agi->request[agi_callerid];//else set calleridname to callerid number
else $name="0";
$agi->set_variable("destexten", $name);
?>
修改腳本權限:chmod 557 lookup.php
在dialplan中添加調用代碼:
;添加根據來電号碼查詢資料庫選擇分機
exten => s,n,AGI(lookup.php)
exten => s,n,Noop(${destexten})
exten => s,n,GotoIf($["${destexten}" == "0"]?done) ; leave loop if no row found
exten => s,n,Noop(lookup sucess goto)
exten => s,n,Goto(from-did-direct,${destexten},1)
exten => s,n(done),Noop(lookup fail goto normal)
Powered by Zoundry Raven