天天看點

Asterisk下 AGI查詢mysql的程式腳本編寫(筆記)

相關連結:

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