Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Скрипт AGI

0

Добрый день. При входящем звонке у меня должен проиграться звуковой файлик и запуститься 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

анонимный пользователь

Аноним

обновил 2012-08-21 18:58:03 +0400

3 Ответа

0

Права на выполнение и на чтение есть?

ссылка удалить спам редактировать

ответил 2012-08-22 13:53:00 +0400

tesak89 Gravatar tesak89 flag of Russian Federation
422 25 3 16
0

с атериском идет библиотека phpagi.php. она обычно лежит в /var/lib/asteriks/agi-bin/

там же лежит пример. с ее помощью ваш скрипт сократится до нескольких строчек и будет работать.

ссылка удалить спам редактировать

ответил 2012-08-21 19:11:49 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

Там лежат скрипты на Perl очень большие в объеме

romedal ( 2012-08-21 19:31:19 +0400 )редактировать

пересаживайтесь на перл

zzuz ( 2012-08-21 20:05:42 +0400 )редактировать

ну так скачайте вот отсюдова http://phpagi.sourceforge.net/

meral ( 2012-08-22 01:08:07 +0400 )редактировать
0
  1. это не phpagi скрипт. это php скрипт который пытается работать по протоколу agi. Поэтому лучше воспользуйтесь готовой либойю

  2. расположение скрипта зависит от того как его вызывать.

  3. agi set debug on

ссылка удалить спам редактировать

ответил 2012-08-21 19:06:37 +0400

komrad123 Gravatar komrad123
3810 5 3 44

Comments

Вызываю я его так : 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 )редактировать

grep astagidir /etc/asterisk/asterisk.conf

komrad123 ( 2012-08-21 19:24:36 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2012-08-21 18:48:59 +0400

Просмотрен: 2,573 раз

Обновлен: Aug 22 '12

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.