[AsteriskBrasil] Como fazer o asterisk falar saldo? (Moeda)

Sebastião Rocha sebastiaorocha em interlinksistemas.com.br
Segunda Outubro 6 14:46:16 BRT 2008


Gostaria de agradecer ao Junior Polegato, por auxiliar na solução, gostaria 
de ter uma solução mais pratica no asterisk , mas como não percebi nenhuma, 
aproveitei seu exemplo e fiz algumas melhorias, segue o resultado final, 
para que outros da lista possam aproveitar a ideia.

Foram adicionados as rotinas necessárias para verificar se o saldo é de 
apenas centavos, apenas reais ou os dois, falando o "and" e, apenas quando 
necessário.


[macro-saldo]
    ; Consulta o saldo e define as variaveis
    exten => s,1,noop(____Consultando Saldo____)
    exten => s,2,set(saldo=${ODBC_SALDO(${CALLERID(num)})})
    exten => s,3,Set(reais=${IF($["${saldo:0:-3}" = ""]?0:${saldo:0:-3})})
    exten => s,4,Set(centavos=${saldo:-2:2})

    ; Decide se fala "seu creditos acabaram, ..... insira novo credito"
    ; ou "seu saldo atual eh"
    exten => s,5,Set(total=${saldo:0:-3}${saldo:-2:2})
    exten => s,6,gotoif(0$[${total} > 0]?9)
    exten => s,7,playback(saldo_zero)
    exten => s,8,goto(19)
    exten => s,9,playback(saldo_atual)

    ; Decide se fala reais ou nao
    exten => s,10,gotoif(0$[${reais} = 0]?13)
    exten => s,11,saynumber(${reais})
    exten => s,12,playback(${IF(0$[${reais} = 1]?real:reais)})

    ; Decide se fala "e" ou nao
    exten => s,13,gotoif(0$[${reais} = 0]?16)
    exten => s,14,gotoif(0$[${centavos} = 0]?16)
    exten => s,15,playback(and)

    ; Decide se fala centavos ou nao
    exten => s,16,gotoif(0$[${centavos} = 0]?19)
    exten => s,17,saynumber(${centavos})
    exten => s,18,playback(${IF(0$[${centavos} =1]?centavo:centavos)})

    ; Agradece e encerra a chamada
    exten => s,19,playback(silence)
    exten => s,20,playback(auth-thankyou)
    exten => s,21,hangup

----- Original Message ----- 
From: "Junior Polegato - Asterisk" <asterisk em juniorpolegato.com.br>
To: <asteriskbrasil em listas.asteriskbrasil.org>
Sent: Friday, October 03, 2008 7:22 PM
Subject: Re: [AsteriskBrasil] Como fazer o asterisk falar saldo? (Moeda)


Sebastião Rocha escreveu:
> Gostaria de fazer o asterisk falar o valor para o usuário, tenho o
> texto 5.75 e gostaria de faze-lo falar "cinco reais e setenta e cinco
> sentavos"
> No exemplo abaixo, está fixo, gostaria de saber se existe uma forma
> apropriada para falar o valor sem ter que fazer tanta gambiarra, pra
> pegar os numeros antes de depois da virgula ou até mesmo falar o valor
> sem ter que separar nada.
> exten => *222,1,set(saldo=5.75)
> exten => *222,2,playback(seu_saldo_eh)
> exten => *222,3,saynumber(5) ? pego aqu somente os numeros antes do ponto
> exten => *222,4,playback(reais)
> exten => *222,5,playback(and)
> exten => *222,6,saynumber(75) ? pego aqui somente os nuemros apos o ponto
> exten => *222,7,playback(centavos)
> Alguma sugestão?

Olá,

       Supondo que o saldo sempre tenha duas casa decimais:

exten => 7788,1,Set(saldo=5.71) ; proveniente com duas casas decimais
exten => 7788,n,Set(inteiro=${saldo:0:$[${Len(saldo)}-3]})
exten => 7788,n,Set(centavos=${saldo:$[${Len(saldo)}-2]})
exten => 7788,n,Playback("saldo_de")
exten => 7788,n,SayNumber(${inteiro})
exten => 7788,n,PlayBack($[${inteiro} = 1 ? real :: reais])
exten => 7788,n,GotoIf($[${centavos} = 0]?fim)
exten => 7788,n,Playback(e)
exten => 7788,n,SayNumber(${centavos})
exten => 7788,n,Playback($[${centavos} = 1 ? centavo :: centavos])
exten => 7788,n(fim),PlayBack(Obrigado)
exten => 7788,n,Hangup


[]'s
          Junior Polegato

_______________________________________________
Compre uma camiseta da AsteriskBrasil.org!
http://www.voipmania.com.br

Acesse o canal IRC de discussão sobre Asterisk em Português Brasileiro na 
rede Freenode.net: #asterisk-br
_______________________________________________
Lista de discussões AsteriskBrasil.org
AsteriskBrasil em listas.asteriskbrasil.org
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil 



Mais detalhes sobre a lista de discussão AsteriskBrasil