[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