Страница 1 из 2

AGI прошу не пинать сильно .

Добавлено: 27 янв 2013, 20:26
april22
Здравствуйте .
ситуация следующая есть два скрипта:

Код: Выделить всё

#!/usr/bin/php
<?php
date_default_timezone_set('Europe/Moscow');

$stdin = fopen('php://stdin', 'r');
$stdout = fopen('php://stdout', 'w');


while (!feof($stdin)) {
$temp = fgets($stdin);
$temp = str_replace("\n","",$temp);
$s = explode(":",$temp);
$agivar[$s[0]] = trim($s[1]);
if (($temp == "") || ($temp == "\n")) {
break;
}
}
$debug=2;
if ($debug){
$logfile = fopen('/php-agi/call_stat.log', 'a');
}


if ($debug){
logg(sprintf("\n[%s]\nCaller: %s\n",date("d.m.Y H:i:s",time()),$agivar['agi_callerid']));
logg("AGI ARGV Dump:\n");
foreach ($argv as $k=>$v) {
logg(" -- $k = $v\n");
}
if ($debug>1){
logg("AGI Environment Dump:\n");
foreach ($agivar as $k=>$v) {
logg(" -- $k = $v\n");
}
}
fclose($logfile);
}


function logg($res){
global $logfile;
if (is_resource($logfile)){
fputs($logfile, $res);
}
}
?>
и второй

Код: Выделить всё

#!/usr/bin/php
<?php
date_default_timezone_set('Europe/Moscow');

$TEMP = 9999990;

if(!class_exists('AGI'))
        {
      require_once('/var/lib/asterisk/agi-bin/phpagi.php');
        }

$agi = new AGI();
$agi->set_variable(OUT,${TEMP});
?>
вызываются

Код: Выделить всё

exten => s,n,AGI(/php-agi/sc1.php,${AMPUSER},${OUTNUM},${OUT_${DIAL_TRUNK}},${CHANNEL})
exten => s,n,AGI(/php-agi/sc2.php)
если вызывать их два раза , то работают на ура и все вроде нравится , но если сделать из них один скрипт то затыкается, на чем не понятно . в консоли вижуи

Код: Выделить всё

<SIP/107-000001d0>AGI Tx >> agi_request: /php-agi/chek-bablo.php
<SIP/107-000001d0>AGI Tx >> agi_channel: SIP/107-000001d0
<SIP/107-000001d0>AGI Tx >> agi_language: ru2
<SIP/107-000001d0>AGI Tx >> agi_type: SIP
<SIP/107-000001d0>AGI Tx >> agi_uniqueid: 1359303726.474
<SIP/107-000001d0>AGI Tx >> agi_version: 1.8.13.0
<SIP/107-000001d0>AGI Tx >> agi_callerid: 7916862
<SIP/107-000001d0>AGI Tx >> agi_calleridname: unknown
<SIP/107-000001d0>AGI Tx >> agi_callingpres: 0
<SIP/107-000001d0>AGI Tx >> agi_callingani2: 0
<SIP/107-000001d0>AGI Tx >> agi_callington: 0
<SIP/107-000001d0>AGI Tx >> agi_callingtns: 0
<SIP/107-000001d0>AGI Tx >> agi_dnid: 9100
<SIP/107-000001d0>AGI Tx >> agi_rdnis: unknown
<SIP/107-000001d0>AGI Tx >> agi_context: macro-dialout-trunk
<SIP/107-000001d0>AGI Tx >> agi_extension: s
<SIP/107-000001d0>AGI Tx >> agi_priority: 24
<SIP/107-000001d0>AGI Tx >> agi_enhanced: 0.0
<SIP/107-000001d0>AGI Tx >> agi_accountcode:
<SIP/107-000001d0>AGI Tx >> agi_threadid: 18979728
<SIP/107-000001d0>AGI Tx >> agi_arg_1: 107
<SIP/107-000001d0>AGI Tx >> agi_arg_2: 100
<SIP/107-000001d0>AGI Tx >> agi_arg_3: SIP/862
<SIP/107-000001d0>AGI Tx >> agi_arg_4: SIP/107-000001d0
<SIP/107-000001d0>AGI Tx >>
<SIP/107-000001d0>AGI Rx <<
<SIP/107-000001d0>AGI Tx >> 510 Invalid or unknown command
<SIP/107-000001d0>AGI Rx << Notice: Undefined offset: 2 in /php-agi/sc1.php on line 31
<SIP/107-000001d0>AGI Tx >> 510 Invalid or unknown command
<SIP/107-000001d0>AGI Rx <<
<SIP/107-000001d0>AGI Tx >> 510 Invalid or unknown command
<SIP/107-000001d0>AGI Rx << Notice: Undefined offset: 3 in /php-agi/sc1.php on line 32
<SIP/107-000001d0>AGI Tx >> 510 Invalid or unknown command
[2013-01-27 20:22:10] ERROR[26002]: utils.c:1164 ast_carefulwrite: write() returned error: Broken pipe
    -- <SIP/107-000001d0>AGI Script /php-agi/sc1.php completed, returning 4



соответственно

Код: Выделить всё

31.$agi = new AGI();
32.$agi->set_variable(OUT,0);
подскажите.....

http://phpagi.sourceforge.net/- тут был

зарание спасибо

Re: AGI прошу не пинать сильно .

Добавлено: 27 янв 2013, 20:53
april22
обеденяю просто пишу один задругим , и выполняю в одной строке вызова .
если пихать с консоли - то переменные то не передаются из астериска .

Re: AGI прошу не пинать сильно .

Добавлено: 27 янв 2013, 21:24
ded
В начале скрипта определены переменные:
Код:
my $sox = `/usr/bin/which sox`;
my $mpg123 = `/usr/bin/which mpg123`;

Оказывается, когда запускаешь демон, он почему-то не видит переменные окружения, и не может определить, что sox и mpg123 установлены. Хотя в консоли я проверял, всё верно:
http://www.voipinfo.ru/forum/viewtopic.php?f=16&t=28029

Re: AGI прошу не пинать сильно .

Добавлено: 28 янв 2013, 10:36
april22
а причем тут переменное окружение ?

Re: AGI прошу не пинать сильно .

Добавлено: 28 янв 2013, 10:52
Vlad1983
смысла в скрипте 1 вообще никакого нет
логи можно писать и из второго

Re: AGI прошу не пинать сильно .

Добавлено: 28 янв 2013, 11:18
april22
вот тут совсем потерялся
будем копать

Re: AGI прошу не пинать сильно .

Добавлено: 28 янв 2013, 11:22
ded
april22 писал(а):а причем тут переменное окружение ?
1) вариант: забить нужные постоянные переменные в environment.
april22 писал(а):если пихать с консоли - то переменные то не передаются из астериска .
2) вариант: использовать ГЛОБАЛЬНЫЕ переменные в астериске,

Re: AGI прошу не пинать сильно .

Добавлено: 28 янв 2013, 11:25
amond
Вообще честно говоря вся проблема заключается в том, что астер останавливается при создании аги объекта
$agi = new AGI();
и после этой строки ничего не выполняется. С чем может быть это связано? Т.к. по ошибкам ничего не указано просто молчание идет и соединения соответственно нет

Re: AGI прошу не пинать сильно .

Добавлено: 28 янв 2013, 11:28
ded
amond, а чья это проблема? (Это я просто для себя, для понимания)
Это Вы пишете AGI для april22?
Или april22 пишет скрипт для amond?

Re: AGI прошу не пинать сильно .

Добавлено: 28 янв 2013, 11:29
Vlad1983
возможно из-за того что вы прочитали stdin куском кода из первом скрипта
$agi = new AGI(); делает тоже самое, а там пусто