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