ну так скачайте вот отсюдова http://phpagi.sourceforge.net/
meral ( 2012-08-22 01:08:07 +0400 )редактироватьДобрый день. При входящем звонке у меня должен проиграться звуковой файлик и запуститься agi-script, который тоже должен проиграть файлик. Но скрипт, почему-то не работает...
<code>
#!/usr/bin/php -q
<?php
set_time_limit(60);
ob_implicit_flush(false);
error_reporting(0);
if (!defined('STDIN')) {
define('STDIN', fopen('php://stdin', 'r'));
}
if (!defined('STDOUT')) {
define('STDOUT', fopen('php://stdout', 'w'));
}
if (!defined('STDERR')) {
define('STDERR', fopen('php://stderr', 'w'));
}
while (!feof(STDIN)) {
$temp = trim(fgets(STDIN, 4096));
if (($temp == "") || ($temp == "\n")) {
break;
}
$s = explode(":", $temp);
$name = str_replace("agi_", "", $s[0]);
$agi[$name] = trim($s[1]);
}
$telephone_number1 = $agi['callerid'];
if (strlen($telephone_number1) > 7){
if substr($telephone_number1,0,3) = "380" {
$telephone_number1 = substr($telephone_number1, -9);
}else{
$telephone_number1 = substr($telephone_number1, -7)
}
}
$db_hostname = 'хост';
$db_database = 'uflOfJ';
$db_login = 'логин';
$db_password = 'пароль';
$db_table = 'users';
$db_query = "select skidka,fname,sname from users where telefon like '%$telephone_number1%' limit 1";
$db_server = mysql_connect($db_hostname, $db_login, $db_password);
if (!$db_server) die('CONNECT FAIL!!!');
mysql_select_db($db_database, $db_server) or die("CAN'T SELECT DB!!!");
$result = mysql_query($db_query);
$row = mysql_fetch_row($result);
$row[0] = trim($row[0]);
$row[1] = trim($row[1]);
$row[2] = trim($row[2]);
$row[3] = trim($row[3]);
if (!empty($row)) {
if ($row[0] == '299') {
fwrite(STDOUT, "STREAM FILE hello \"\"\n");
fflush(STDOUT);
$result = trim(fgets(STDIN, 4096));
checkresult($result);
fwrite(STDOUT, "STREAM FILE name \"\"\n");
fflush(STDOUT);
$result = trim(fgets(STDIN, 4096));
checkresult($result);
fwrite(STDOUT, "STREAM FILE two \"\"\n");
fflush(STDOUT);
$result = trim(fgets(STDIN, 4096));
checkresult($result);
fwrite(STDOUT, "STREAM FILE bye \"\"\n");
fflush(STDOUT);
$result = trim(fgets(STDIN, 4096));
checkresult($result);
} elseif ($row[0] == '5') {
fwrite(STDOUT, "STREAM FILE customer_ru_romedal \"\"\n");
fflush(STDOUT);
$result = trim(fgets(STDIN, 4096));
checkresult($result);
} else {
}
}
function checkresult($res)
{
trim($res);
if (preg_match('/^200/', $res)) {
if (!preg_match('/result=(-?\d+)/', $res, $matches)) {
fwrite(STDERR, "FAIL ($res)\n");
fflush(STDERR);
return 0;
} else {
fwrite(STDERR, "PASS (" . $matches[1] . ")\n");
fflush(STDERR);
return $matches[1];
}
} else {
fwrite(STDERR, "FAIL (unexpected result '$res')\n");
fflush(STDERR);
return -1;
}
}
?>
</code>
Вопрос первый: где должен размещаться файл, который проигрывается phpagi
спросил 2012-08-21 18:48:59 +0400
Аноним
Права на выполнение и на чтение есть?
с атериском идет библиотека phpagi.php. она обычно лежит в /var/lib/asteriks/agi-bin/
там же лежит пример. с ее помощью ваш скрипт сократится до нескольких строчек и будет работать.
ну так скачайте вот отсюдова http://phpagi.sourceforge.net/
meral ( 2012-08-22 01:08:07 +0400 )редактироватьэто не phpagi скрипт. это php скрипт который пытается работать по протоколу agi. Поэтому лучше воспользуйтесь готовой либойю
расположение скрипта зависит от того как его вызывать.
agi set debug on
Вызываю я его так : exten => #bbb,1,Answer() exten => #bbb,n,Background(/usr/store/anonsment/customerruromedal) exten => #bbb,n,Background(/usr/store/anonsment/20ru) exten => #bbb,n,Background(/usr/store/anonsment/20ru) exten => #bbb,n,AGI(testAgi.agi)
romedal ( 2012-08-21 19:13:32 +0400 )редактироватьЗадан: 2012-08-21 18:48:59 +0400
Просмотрен: 2,573 раз
Обновлен: Aug 22 '12
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.