[AsteriskBrasil] valor de retorno do script AGI

Luis Reis luis.reis em singularideas.com.br
Quarta Dezembro 16 21:06:48 BRST 2009


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.

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
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20091216/d070e926/attachment-0001.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil