Coloquei pra rodar.. Posto novidades.<br><br><div><span class="gmail_quote">2006/11/29, Claudio Polegato Junior <<a href="mailto:cpolegatojr.asterisk@gmail.com">cpolegatojr.asterisk@gmail.com</a>>:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Rodolfo Santos escreveu:<br>> Talvez eu não tenha entendido direito o propósito, e peço desculpas<br>> caso esteja equivocado. Mas o que vcs estão se propondo a fazer já não<br>> existe no Asterisk?<br>><br>> * Math( )*
<br>><br>> Exemplo:<br>><br>> ; somar dois números e dizer o resultado<br>> exten => 666,1,Math(SUM,50000000.2+0.8)<br>> exten => 666,2,SayNumber(${SUM})<br>><br>> Math aceita ponto flutuante e todos os operadores matemáticos
<br>> existentes na linguagem C : +,-,/,*,%,<,>,>=,<=.<br>><br>> P.S.: Caio, a sua idéia de fazer uma calculadora tipo notação polonesa<br>> (HP 12C), é bastante interessante. Posso imaginar o quão útil seria em
<br>> um sistema IPBX que atendesse uma mesa de operações de um banco ou de<br>> uma corretora de valores.<br><br>Olá,<br><br> Claro, acho que a idéia é mostrar e/ou exercitar as funções presentes<br>no Asterisk. Acho que se sair para AGI fica fora de cogitação, pois será
<br>feito em outra linguagem e não vai exercitar/exemplificar as funções do<br>Asterisk. Depois ir crescendo para funções, tipo torná-la científica,<br>financeira ou até sistema polonês (como você disse).<br> Já que começou, podemos ir aperfeiçoando (não tenho como testar, só
<br>depois do fim do expediente) minha estúpida calculadora:<br><br>[calculadora_ura]<br>; Atende a chamada<br>exten => s,1,Answer<br>; Depois de um dígito identificado, espera até 2 segundos para o próximo<br>exten => s,n,Set(TIMEOUT(digit)=2)
<br>; Se nada for digitado em 5 segundos, dá "timeout" (vai para exten 't')<br>exten => s,n,Set(TIMEOUT(response)=5)<br>; Qual número estamos perguntando<br>exten => s,n,SetVar(Numero=1)<br>; Define Num_Op para Número (1), usado no "timeout"
<br>exten => s,n(numero),SetVar(Num_Op=1)<br>; Mensagem para o usuário digitar um número<br>exten => s,n,BackGround(digite_numero)<br>; Espera pelo número de acordo com os tempos acima configurados<br>exten => s,n,WaitExten
<br>; Define Num_Op para Operador (2), usado no "timeout"<br>exten => s,n(operador),SetVar(Num_Op=2)<br>; Mensagem para o usuário digitar um operador: 1->+, 2->-, 3->*, 4->/...<br>exten => s,n,BackGround(digite_operador)
<br>; Espera pelo operador de acordo com os tempos acima configurados<br>exten => s,n,WaitExten<br><br>; Caso não digite nada em 5 segundos configurados, pergunta novamente<br>exten => t,1,GotoIf($[${Num_Op} = 1]?s|numero:s|operador)
<br><br>; Trata o que foi digitado, desviando o fluxo se for esperado operador<br>exten => _X.,1,GotoIf($[${Num_Op} = 2]?operador)<br>; Se for o segundo número, passar para o cálculo<br>exten => _X.,n,GotoIf($[${Numero} = 2]?segundo)
<br>; Guardo o primeiro número em Num1<br>exten => _X.,n,SetVar(Num1=${EXTEN})<br>; Define que será perguntado pelo segundo número<br>exten => _X.,n,SetVar(Numero=2)<br>; Desvia o fluxo para perguntar pelo operador<br>
exten => _X.,n,Goto(s|operador)<br><br>; Guardo o segundo número em Num2<br>exten => _X.,n(segundo),SetVar(Num2=${EXTEN})<br>; Calcula e guardo o resultado em Resultado<br>exten => _X.,n,SetVar(Resultado=$[${Num1} ${Op} ${Num2}])
<br>; Fala o primeiro número<br>exten => _X.,n,SayNumber(${Num1})<br>; Fala o operador<br>exten => _X.,n,SayAlpha(${Op})<br>; Fala o segundo número<br>exten => _X.,n,SayNumber(${Num2})<br>; Fala "igual"
<br>exten => _X.,n,SayAlpha("=")<br>; Fala o Resultado<br>exten => _X.,n,SayNumber(${Resultado})<br>; O primeiro número agora é o resultado<br>exten => _X.,n,SetVar(Num1=${Resultado})<br>; Desvia o fluxo para perguntar pelo operador
<br>exten => _X.,n,Goto(s|operador)<br><br>; Verifica se o operador é inválido, desviando o fluxo caso for<br>exten => _X.,n(operador),GotoIf($[${EXTEN} > 4]?op_invalido)<br>; Se digitado 1, guarda o operador de adição em Op
<br>exten => _X.,n,ExecIf($[${EXTEN} = 1],SetVar,Op="+")<br>; Se digitado 2, guarda o operador de subtração em Op<br>exten => _X.,n,ExecIf($[${EXTEN} = 2],SetVar,Op="-")<br>; Se digitado 1, guarda o operador de multiplicação em Op
<br>exten => _X.,n,ExecIf($[${EXTEN} = 3],SetVar,Op="*")<br>; Se digitado 1, guarda o operador de divisão em Op<br>exten => _X.,n,ExecIf($[${EXTEN} = 4],SetVar,Op="/")<br>; Desvia o fluxo para perguntar pelo próximo número
<br>exten => _X.,n,Goto(s|numero)<br><br>; Retorna uma mensagem dizendo que o operador é inválido<br>exten => _X.,n(op_invalido),PlayBack(operador_invalido)<br>; Desvia o fluxo para perguntar novamente o operador<br>
exten => _X.,n,Goto(s|operdor)<br><br><br><br><br>Quem será o primeiro a testar?<br><br><br>--<br>Atenciosamente<br><br> Junior Polegato - Claudio Polegato Junior<br><br> Engenheiro Autônomo - Ribeirão Preto e Região
<br> Mestre em Física Aplicada à Medicina e Biologia - USP<br> Engenheiro Computacional e Eletrônico - USP<br> Página Pessoal: <a href="http://cpolegatojr.no-ip.org">http://cpolegatojr.no-ip.org
</a><br><br>Um peregrino de problemas; Um pergaminho de soluções!<br><br>----------------------------------------<br>Estação VoIP 2006<br>5 e 6 Dezembro<br>Curitiba PR<br><a href="http://www.estacaovoip.com.br">http://www.estacaovoip.com.br
</a><br><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">
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil</a><br><br>_______________________________________________<br>Acesse o wiki AsteriskBrasil.org:<br><a href="http://www.asteriskbrasil.org">http://www.asteriskbrasil.org
</a><br></blockquote></div><br><br clear="all"><br>-- <br>Whinston Saura Rodrigues<br> BoxBrasil