[AsteriskBrasil] valor de retorno do script AGI

Luis Reis luis.reis em singularideas.com.br
Terça Março 23 15:55:44 BRT 2010


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


Mais detalhes sobre a lista de discussão AsteriskBrasil