[AsteriskBrasil] valor de retorno do script AGI

alessandro (listas) listas em snowleopard.com.br
Terça Março 23 23:07:35 BRT 2010


   Prezado Luis, na realidade o AGI está correto, tendo em vista que no
Asterisk 1.2 funciona. O problema se manifesta apenas no 1.4.
   Fui mais a fundo e ao invés de usar o phpagi, fiz testes diretos com o
fwrite. Todas as vezes que esse comando é chamado, não importa o que ele
tenta fazer, o erro acontece.

2010/3/23 Luis Reis <luis.reis em singularideas.com.br>

> tu estás com erro de sintaxe no seu agi. Ou está escrevendo um comando
> agi invalido em stdin
>
> Em 23/03/10, alessandro (listas)<listas em snowleopard.com.br> escreveu:
> >   Estou passando pelo mesmo problema.
> >   Tenho alguns scripts de controle em PHP, usando AGI e tudo funciona bem
> no
> > Asterisk 1.2. Porém, no 1.4, começou a dar esse erro.
> >   Não entendi ao certo o que devo fazer para solucionar.
> >
> > Bom .. vamos esclarecer o Arquivo "X":
> >
> > o protocolo AGI é uma comunicação do asterisk com um programa ou socket
> > externo que fala para ele o que fazer. No caso do PHPAGI isto é feito
> pelo
> > STDIN. Quando tu chamas um fwrite e um fflush sem definit o resource ...
> ele
> > assume que é o resource é o STDIN. Neste caso o asterisk tentava executar
> o
> > comando AGI "success" ou "failure" e por isso dava erro .. e o cachimbo (
> > pipe) se quebrou ...
> >
> > Caso tu queiras usar o fwrite .. tu deves definir um resource apropriado
> ...
> > como um arquivo por exemplo.
> > - Show quoted text -
> >
> > 2009/12/16 Kim Delevati <kim.delevati em gmail.com>
> >
> >> Hm. Me lembro que quando atualizei do 1.4.21.2 para um mais novo, todos
> os
> >> meus AGI pararam de funcionar e davam esse erro. No tempo eu não fazia
> >> idéia
> >> do que era, e foi antes de eu somente utilizar o PHPAGI. Acabei voltando
> >> ao
> >> Asterisk antigo mesmo, não sabia o que fazer para os agi funcionarem.
> >>
> >>
> >> 2009/12/16 Rodrigo Lang <rodrigoferreiralang em gmail.com>
> >>
> >>> Estou usando o 1.6.0.19. Eu apaguei as linhas fwrite e fflush e parou
> de
> >>> dar erros!
> >>>
> >>> Obrigado novamente,
> >>>
> >>> Rodrigo Lang.
> >>>
> >>> 2009/12/16 Kim Delevati <kim.delevati em gmail.com>
> >>>
> >>>> Qual a versão do seu Asterisk?
> >>>>
> >>>> 2009/12/16 Luis Reis <luis.reis em singularideas.com.br>
> >>>>
> >>>> Não usa o fwrite!!! usa somente as funções do PHPAGI.
> >>>>>
> >>>>>
> >>>>>
> >>>>> 2009/12/16 Rodrigo Lang <rodrigoferreiralang em gmail.com>
> >>>>>
> >>>>>> Agora ele fica me dando esse erro Broken pipe! Deve ser algum erro
> no
> >>>>>> meu script! :(
> >>>>>> Existe alguma outra forma de debugar o script além do comando "agi
> set
> >>>>>> debug on"?
> >>>>>>
> >>>>>>
> >>>>>>  -- Remote UNIX connection
> >>>>>>     -- Remote UNIX connection disconnected
> >>>>>> [Dec 16 17:28:58] ERROR[8760]: utils.c:1019 ast_carefulwrite:
> write()
> >>>>>> returned error: Broken pipe
> >>>>>> [Dec 16 17:28:58] ERROR[8760]: utils.c:1019 ast_carefulwrite:
> write()
> >>>>>> returned error: Broken pipe
> >>>>>>     -- <DAHDI/21-1>AGI Script verifica-tronco.agi completed,
> returning
> >>>>>> 0
> >>>>>>     -- Executing [s em macro-tratamento-saida:4] NoOp("DAHDI/21-1",
> >>>>>> "failure") in new stack
> >>>>>>     -- Executing [s em macro-tratamento-saida:5] GotoIf("DAHDI/21-1",
> >>>>>> "0?DISCA:TRANSBORDO") in new stack
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> Obrigado,
> >>>>>> Rodrigo Lang.
> >>>>>>
> >>>>>>
> >>>>>> 2009/12/16 Rodrigo Lang <rodrigoferreiralang em gmail.com>
> >>>>>>
> >>>>>>> Opa pessoal, obrigado pelas resposta. Kim, achava que estava
> faltando
> >>>>>>> alguma coisa mesmo... Baixei o phpagi, fiz um require e instanciei
> >>>>>>> ele.
> >>>>>>> Funcionou perfeito, consegui passar a variável para o
> extensions.conf
> >>>>>>> tranquilamente. Não fazia nem idéia que precisava dessa biblioteca.
> >>>>>>> Obrigado
> >>>>>>> a todos que responderam. Ficou assim:
> >>>>>>>
> >>>>>>> if ( $tronco == "khomp/g0" ) {
> >>>>>>>                 if ( $chan1 == "" && $chan2 == "" ) {
> >>>>>>>                         fwrite($stdout, "Todos os canais ocupados
> do
> >>>>>>> tronco $tronco.\n");
> >>>>>>>                         fflush($stdout);
> >>>>>>>                         $agi->set_variable("STATUS",'failure');
> >>>>>>>                 }
> >>>>>>>                 else {
> >>>>>>>                         fwrite($stdout, "Canais livres no tronco
> >>>>>>> $tronco.\n");
> >>>>>>>                         fflush($stdout);
> >>>>>>>                         $agi->set_variable("STATUS",'success');
> >>>>>>>                 }
> >>>>>>> }
> >>>>>>>
> >>>>>>>
> >>>>>>> Obrigado,
> >>>>>>> Rodrigo Lang.
> >>>>>>>
> >>>>>>>
> >>>>>>>  2009/12/16 Kim Delevati <kim.delevati em gmail.com>
> >>>>>>>
> >>>>>>>> Eu utilizo o set variable e aqui funciona, desse jeito:
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> $agi->set_variable("tempo",$tempo);
> >>>>>>>>
> >>>>>>>> Para usar $agi, tem que ter o phpagi aí, e instanciar um $agi =
> new
> >>>>>>>> AGI();
> >>>>>>>>
> >>>>>>>> Voce tem o phpagi? Tá fazendo require nele?
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> 2009/12/16 Rodrigo Lang <rodrigoferreiralang em gmail.com>
> >>>>>>>>
> >>>>>>>>>  Boa tarde lista. Estou fazendo um AGI em php e surgiu algumas
> >>>>>>>>> duvidas, as quais eu não consegui sanar no google. O que eu
> preciso
> >>>>>>>>> é
> >>>>>>>>> manipular o valor de ${AGISTATUS} ou criar uma outra variável no
> >>>>>>>>> AGI para
> >>>>>>>>> chamar no extensions. Na pesquisa que fiz encontrei diversos
> modos,
> >>>>>>>>> porém
> >>>>>>>>> nenhum funcionou. Como nunca tive muito contato com o AGI estou
> com
> >>>>>>>>> um pouco
> >>>>>>>>> de dificuldade. O que eu preciso seria mais ou menos isso:
> >>>>>>>>>
> >>>>>>>>> if ( $varivel == "" ) {
> >>>>>>>>> fwrite($stdout, "Não deu certo.\n");
> >>>>>>>>> fflush($stdout);
> >>>>>>>>> }
> >>>>>>>>> else {
> >>>>>>>>> fwrite($stdout, "Deu certo.\n");
> >>>>>>>>>  fflush($stdout);
> >>>>>>>>> }
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> Eu preciso que esse trecho retorne algo para eu manipular no
> >>>>>>>>> extensions. O que eu já tentei sem sucesso foi:
> >>>>>>>>> AGI::set_variable('STATUS','deucerto');
> >>>>>>>>> $AGI->set_variable('STATUS','deucerto');
> >>>>>>>>> return 0;
> >>>>>>>>> result = 0;
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> Agora eu não sei se falta alguma biblioteca no meu script ou
> alguma
> >>>>>>>>> dependência. Quando eu coloco as linhas acima ele me retorna
> sempre
> >>>>>>>>> o mesmo
> >>>>>>>>> erro:
> >>>>>>>>> "utils.c:1019 ast_carefulwrite: write() returned error: Broken
> pipe
> >>>>>>>>> "
> >>>>>>>>>
> >>>>>>>>> Pesquisei em vários livros e em vários sites, porém achei a
> >>>>>>>>> documentação um pouco precária sobre o assunto. Se alguém puder
> me
> >>>>>>>>> ajudar,
> >>>>>>>>> agradeço desde já.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> Ats,
> >>>>>>>>> Rodrigo F. Lang
> >>>>>>>>> Amd. de Redes em Telecom
> >>>>>>>>>
> >>>>>>>>> _______________________________________________
> >>>>>>>>> A Redfone é líder no fornecimento de bridges TDMoE &lt;-> E1
> >>>>>>>>>
> >>>>>>>>> - Valor similar ao de placas E1 PCI;
> >>>>>>>>> - Não há problemas de compatibilidade com barramento PCI;
> >>>>>>>>> - Possibilitam a construção de soluções de alta
> >>>>>>>>> disponibilidade(dois
> >>>>>>>>> servidores compartilham o mesmo E1)
> >>>>>>>>> Conheça mais sobre este produto em www.red-fone.com
> >>>>>>>>> _______________________________________________
> >>>>>>>>> Lista de discussões AsteriskBrasil.org
> >>>>>>>>> AsteriskBrasil em listas.asteriskbrasil.org
> >>>>>>>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> _______________________________________________
> >>>>>>>> A Redfone é líder no fornecimento de bridges TDMoE &lt;-> E1
> >>>>>>>> - Valor similar ao de placas E1 PCI;
> >>>>>>>> - Não há problemas de compatibilidade com barramento PCI;
> >>>>>>>> - Possibilitam a construção de soluções de alta
> disponibilidade(dois
> >>>>>>>> servidores compartilham o mesmo E1)
> >>>>>>>> Conheça mais sobre este produto em www.red-fone.com
> >>>>>>>> _______________________________________________
> >>>>>>>> Lista de discussões AsteriskBrasil.org
> >>>>>>>> AsteriskBrasil em listas.asteriskbrasil.org
> >>>>>>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> --
> >>>>>>> Rodrigo F. Lang
> >>>>>>> Amd. de Redes em Telecom
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Rodrigo F. Lang
> >>>>>> Amd. de Redes em Telecom
> >>>>>>
> >>>>>> _______________________________________________
> >>>>>> A Redfone é líder no fornecimento de bridges TDMoE &lt;-> E1
> >>>>>> - Valor similar ao de placas E1 PCI;
> >>>>>> - Não há problemas de compatibilidade com barramento PCI;
> >>>>>> - Possibilitam a construção de soluções de alta disponibilidade(dois
> >>>>>> servidores compartilham o mesmo E1)
> >>>>>> Conheça mais sobre este produto em www.red-fone.com
> >>>>>> _______________________________________________
> >>>>>> Lista de discussões AsteriskBrasil.org
> >>>>>> AsteriskBrasil em listas.asteriskbrasil.org
> >>>>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
> >>>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Luis Machado Reis
> >>>>> Analista de Sistemas
> >>>>> www.singularideas.com.br
> >>>>>
> >>>>> _______________________________________________
> >>>>> A Redfone é líder no fornecimento de bridges TDMoE &lt;-> E1
> >>>>> - Valor similar ao de placas E1 PCI;
> >>>>> - Não há problemas de compatibilidade com barramento PCI;
> >>>>> - Possibilitam a construção de soluções de alta disponibilidade(dois
> >>>>> servidores compartilham o mesmo E1)
> >>>>> Conheça mais sobre este produto em www.red-fone.com
> >>>>> _______________________________________________
> >>>>> Lista de discussões AsteriskBrasil.org
> >>>>> AsteriskBrasil em listas.asteriskbrasil.org
> >>>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
> >>>>>
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> A Redfone é líder no fornecimento de bridges TDMoE &lt;-> E1
> >>>> - Valor similar ao de placas E1 PCI;
> >>>> - Não há problemas de compatibilidade com barramento PCI;
> >>>> - Possibilitam a construção de soluções de alta disponibilidade(dois
> >>>> servidores compartilham o mesmo E1)
> >>>> Conheça mais sobre este produto em www.red-fone.com
> >>>> _______________________________________________
> >>>> Lista de discussões AsteriskBrasil.org
> >>>> AsteriskBrasil em listas.asteriskbrasil.org
> >>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
> >>>>
> >>>
> >>>
> >>>
> >>> --
> >>> Rodrigo F. Lang
> >>> Amd. de Redes em Telecom
> >>>
> >>> _______________________________________________
> >>> A Redfone é líder no fornecimento de bridges TDMoE &lt;-> E1
> >>> - Valor similar ao de placas E1 PCI;
> >>> - Não há problemas de compatibilidade com barramento PCI;
> >>> - Possibilitam a construção de soluções de alta disponibilidade(dois
> >>> servidores compartilham o mesmo E1)
> >>> Conheça mais sobre este produto em www.red-fone.com
> >>> _______________________________________________
> >>> Lista de discussões AsteriskBrasil.org
> >>> AsteriskBrasil em listas.asteriskbrasil.org
> >>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
> >>>
> >>
> >>
> >> _______________________________________________
> >> A Redfone é líder no fornecimento de bridges TDMoE &lt;-> E1
> >> - Valor similar ao de placas E1 PCI;
> >> - Não há problemas de compatibilidade com barramento PCI;
> >> - Possibilitam a construção de soluções de alta disponibilidade(dois
> >> servidores compartilham o mesmo E1)
> >> Conheça mais sobre este produto em www.red-fone.com
> >> _______________________________________________
> >> Lista de discussões AsteriskBrasil.org
> >> AsteriskBrasil em listas.asteriskbrasil.org
> >> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
> >>
> >
> >
> >
> > --
> > Luis Machado Reis
> > Analista de Sistemas
> > www.singularideas.com.br
> >
> > _______________________________________________
> > A Redfone é líder no fornecimento de bridges TDMoE &lt;-> E1
> > - Valor similar ao de placas E1 PCI;
> > - Não há problemas de compatibilidade com barramento PCI;
> > - Possibilitam a construção de soluções de alta disponibilidade(dois
> > servidores compartilham o mesmo E1)
> > Conheça mais sobre este produto em www.red-fone.com
> > _______________________________________________
> > Lista de discussões AsteriskBrasil.org
> > AsteriskBrasil em listas.asteriskbrasil.org
> > http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
> >
>
>
> --
> Luis Machado Reis
> Analista de Sistemas
> www.singularideas.com.br
> _______________________________________________
> KHOMP: qualidade em placas de E1, GSM, FXS e FXO para Asterisk.
> - Hardware com alta disponibilidade de recursos e qualidade KHOMP
> - Suporte técnico local qualificado e gratuito
> Conheça a linha completa de produtos KHOMP em www.khomp.com.br
> _______________________________________________
> Lista de discussões AsteriskBrasil.org
> AsteriskBrasil em listas.asteriskbrasil.org
> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20100323/a386c6b5/attachment-0001.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil