Итак, у меня есть ruby-скрипт, который берет некоторые данные с FM-сервера и возвращает кортеж. Мне пришлось сделать это, потому что я не знаю хорошего Perl FM-модуля.
[test.pl]
$ret = `ruby /root/rfm-query.rb $cid`; @extens = split(/,/, $ret, 2); print "DIAL SIP/$extens[0]";
Поэтому, когда я запускаю это, он напечатает «DIAL SIP/215», как и ожидалось, но при использовании того же кода в AGI-скрипте Asterisk и использовании $extens[0] он всегда ничего не возвращает.
#!/usr/bin/env perl use Asterisk::AGI; $|=1; $AGI = new Asterisk::AGI; %input = $AGI->ReadParse(); $cid = substr $input{'callerid'}, 1; $cid =~ s/\+//g; $ret = `ruby /root/rfm-query.rb $cid`; #rets nothing @extens = split(/,/, $ret, 2); $AGI->exec("DIAL SIP/$extens[0]");
Почему это работает в тестовом сценарии, но не в AGI?