VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

april22
Сообщения: 2187
Зарегистрирован: 09 июл 2012, 09:47

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

Сообщение 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/- тут был

зарание спасибо
Своими вопросами , вы загоняете меня в ГУГЛЬ.
april22
Сообщения: 2187
Зарегистрирован: 09 июл 2012, 09:47

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

Сообщение april22 »

обеденяю просто пишу один задругим , и выполняю в одной строке вызова .
если пихать с консоли - то переменные то не передаются из астериска .
Своими вопросами , вы загоняете меня в ГУГЛЬ.
ded
Сообщения: 15627
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение 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
april22
Сообщения: 2187
Зарегистрирован: 09 июл 2012, 09:47

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

Сообщение april22 »

а причем тут переменное окружение ?
Своими вопросами , вы загоняете меня в ГУГЛЬ.
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

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

Сообщение Vlad1983 »

смысла в скрипте 1 вообще никакого нет
логи можно писать и из второго
ЛС: @rostel
april22
Сообщения: 2187
Зарегистрирован: 09 июл 2012, 09:47

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

Сообщение april22 »

вот тут совсем потерялся
будем копать
Своими вопросами , вы загоняете меня в ГУГЛЬ.
ded
Сообщения: 15627
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение ded »

april22 писал(а):а причем тут переменное окружение ?
1) вариант: забить нужные постоянные переменные в environment.
april22 писал(а):если пихать с консоли - то переменные то не передаются из астериска .
2) вариант: использовать ГЛОБАЛЬНЫЕ переменные в астериске,
amond
Сообщения: 3
Зарегистрирован: 28 янв 2013, 10:45

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

Сообщение amond »

Вообще честно говоря вся проблема заключается в том, что астер останавливается при создании аги объекта
$agi = new AGI();
и после этой строки ничего не выполняется. С чем может быть это связано? Т.к. по ошибкам ничего не указано просто молчание идет и соединения соответственно нет
ded
Сообщения: 15627
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение ded »

amond, а чья это проблема? (Это я просто для себя, для понимания)
Это Вы пишете AGI для april22?
Или april22 пишет скрипт для amond?
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

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

Сообщение Vlad1983 »

возможно из-за того что вы прочитали stdin куском кода из первом скрипта
$agi = new AGI(); делает тоже самое, а там пусто
ЛС: @rostel
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH