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.delev...@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 <rodrigoferreiral...@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.delev...@gmail.com> >> >>> Qual a versão do seu Asterisk? >>> >>> 2009/12/16 Luis Reis <luis.r...@singularideas.com.br> >>> >>> Não usa o fwrite!!! usa somente as funções do PHPAGI. >>>> >>>> >>>> >>>> 2009/12/16 Rodrigo Lang <rodrigoferreiral...@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 [...@macro-tratamento-saida:4] NoOp("DAHDI/21-1", >>>>> "failure") in new stack >>>>> -- Executing [...@macro-tratamento-saida:5] GotoIf("DAHDI/21-1", >>>>> "0?DISCA:TRANSBORDO") in new stack >>>>> >>>>> >>>>> >>>>> Obrigado, >>>>> Rodrigo Lang. >>>>> >>>>> >>>>> 2009/12/16 Rodrigo Lang <rodrigoferreiral...@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.delev...@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 <rodrigoferreiral...@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 <-> 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@listas.asteriskbrasil.org >>>>>>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil >>>>>>>> >>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> A Redfone é líder no fornecimento de bridges TDMoE <-> 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@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 <-> 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@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 <-> 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@listas.asteriskbrasil.org >>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil >>>> >>> >>> >>> _______________________________________________ >>> A Redfone é líder no fornecimento de bridges TDMoE <-> 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@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 <-> 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@listas.asteriskbrasil.org >> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil >> > > > _______________________________________________ > A Redfone é líder no fornecimento de bridges TDMoE <-> 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@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 <-> 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@listas.asteriskbrasil.org http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
_______________________________________________ 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@listas.asteriskbrasil.org http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil