Reproduzindo uma Mensagem
Início  Anterior  Próximo



A VoicerLib permite reproduzir qualquer mensagem gravada em formato SIG, tanto pelo headset como pelo monofone (ou tronco). Para isso basta utilizar o método PlayFile.

O PlayFile detecta automaticamente o tipo de arquivo, baseado na extensão para .sig, .gsm e se for wave, detecta se é PCM ou LeiMi. Isso permite uso de diversos formatos para reprodução sem preocupação para o programador, assim ele não precisará se preocupar em converter o arquivo antes de reproduzir. Se for utilizado uma extensão desconhecida, fica valendo o que está especificado no SetPlayFormat.

Além disso, é possível determinar se algum dígito será utilizado como finalizador da reprodução. Esta característica é interessante para, por exemplo, implantar um menu de opções em um sistema de auto-atendimento com a possibilidade de digitar a opção sobre a mensagem.

O dígito detectado (se usado) é armazenado internamente para cada porta da placa e pode ser recuperado através do método ReadDigits(Porta) podendo ser tratado posteriormente.

Dependendo do fluxo de operação do sistema desenvolvido, é necessário que os digitos detectados sejam acumulados. Neste caso é necessário mudar a propriedade AutoClearDigits para false, pois o padrão true faz com que os digitos sejam automaticamente apagados quando uma gravação é iniciada.

Sempre quando for iniciada a reprodução o evento OnPlaytStart é gerado. Uma finalidade deste evento é permitir atualizações de interface, como por exemplo, desabilitar botões e exibir mensagens ao usuário.

Ao término da reprodução o evento OnPlayStop é gerado automaticamente, inclusive informando qual o motivo da interrupção da reprodução. Este motivo pode ser uma ação direta do operador (com a chamada do método StopPlayFile), um dígito recebido, o simples término da mensagem ou ainda um erro qualquer (disco cheio, por exemplo).

A partir da versão 2.1, se um digito for detectado durante a reprodução (desde que o parâmetro TermDigits tenha sido configurado), além do evento OnPlayStop, é gerado também o evento OnDigitsReceived passando na variável Status o valor edDigitOverMessage. Isto facilita a criação de menus de atendimento, já que toda a consistência do que foi digitado pode ser feita apenas no evento OnDigitsReceived. O tópico seguinte (detecção de dígitos) aborda este evento em detalhes.

Exemplo:

O sistema atende uma ligação no evento OnRingDetected, fala uma mensagem e fica esperando o dígito de uma das opções: "Digivoice, disque 3 para vendas, 4 para técnica ou 5 para fax". Dependendo da opção, disca para o ramal correspondente.
 
A partir da versão 2.1 recomenda-se fazer o tratamento de dígitos no evento OnDigitsReceived e não no OnPlayStop. Neste caso o Case ssDigitReceived do exemplo abaixo seria movido para o evento OnDigitsReceived. O capítulo Aplicação Passo a Passo explica em detalhes.  
 
'Evento gerado quando a placa detecta um   
'Ring. Neste exemplo, atende no primeiro toque  
Private Sub VoicerLibX1_OnRingDetected()  
     
   'Mensagem de boas vindas  
   VoicerLibX1.PlayFile(1,"c:\boas.sig,"345",0)  
   'Lembre que o programa segue o fluxo normal após iniciada  
   'a reprodução  
End Sub  
 
 
'Evento que ocorre quando a reprodução é finalizada  
'É necessário analisar o motivo  
Private Sub VoicerLibX1_OnPlayStop(Port as Integer,   
                           Status As VoicerLib.TxStopStatus)  
Select Case Status  
  Case ssNormal:  
   'Terminou a mensagem sem opção digitada  
   'então manda para a telefonista  
   VoicerLibX1.Flash 1,600,1000  
   VoicerLibX1.Dial 1,"200",0  
    VoicerLibX1.HangUp 1  
  Case ssDigitReceived:  
   'Recebeu o digito finalizador  
   'Verifica qual é e transfere para o ramal  
    VoicerLibX1.Flash 1,600 'Executa flash  
   if Digits = "3" then  
      VoicerLibX1.Dial 1,"220",0   'vendas  
   ElseIf Digits = "4" then  
      VoicerLibX1.Dial 1,"215",0   'técnica  
   ElseIf Digits = "5" then  
        VoicerLibX1.Dial 1,"202",0   'fax  
   else  
      VoicerLibX1.Dial 1,"200",0   'telefonista  
   End if  
   'Desliga  
    VoicerLibX1.HangUp 1  
    End Select  
End sub  
 
O último parâmetro do PlayFile (Origin) permite começar a reproduzir a mensagem a partir de um determinado ponto. Por exemplo, para reproduzir uma mensagem a partir de 10 segundos do início dela, basta executar:
 
   VoicerLibX1.PlayFile(1,"c:\boas.sig,"345",10)  
 
Isto é útil para funções de reprodução de mensagens. Se for passado ZERO como parâmetro, a mensagem será reproduzida do início. Se for passado -1 como parâmetro a mensagem começará a ser reproduzida do final menos 2 segundos.