FÓRUM DigiVoice

Fórum de Suporte Digivoice

Você não está logado.

#1 17/01/2007 17:56:40

rcs
Membro

Detectar o desligar

Boa Tarde,

estou fazendo em Linguagem C++ uma aplicação que efetua ligações com a placa VB0408PCI de 4 canais. Ao efetuar uma ligação com a placa e a pessoa do outro lado atende, e gera o evento de EV_ANSWERED, mas  no meio de todo o processo a pessoa desliga sem esperar terminar.
Como eu faço para minha placa detectar que a pessoa desligou do outro lado?



Obs. o evento EV_LINEOFF não é gerado.

Offline

 

#2 18/01/2007 09:16:51

respindula
Membro

Re: Detectar o desligar

case EV_BUSY:
           sprintf(data,"BUSY");
           //registra evento de busy e salva numero discado
if (Canais[EventContext->port].nChanState == DISCANDO)
           {
           RegistraLog(EventContext->port,BUSY_DISCANDO);
           //volta ao repouso
          Canais[EventContext->port].nChanState = PRE_REPOUSO;

//!!!!!!fake pickup - so para utilizar afterpickup apos 2s!!!!!!!!!
          dg_PickUp(EventContext->port,2000);

//desliga
          dg_HangUp(EventContext->port);
           }
else
          if (Canais[EventContext->port].nChanState > REPOUSO)
          {
          RegistraLog(EventContext->port,BUSY_FALANDO);

//!!!!!!fake pickup - so para utilizar afterpickup apos 2s!!!!!!!!!
          dg_PickUp(EventContext->port,2000);

//desliga
          dg_HangUp(EventContext->port);

    if(Canais[EventContext->port].nChanState >= AGUARDANDO_ALO)
         {
         dg_DisableSilenceDetection(EventContext->port);
         dg_DisableCallProgress(EventContext->port);
         dg_DestroyCallProgress(EventContext->port);
         }
         if(Canais[EventContext->port].nChanState == FALANDO)
         dg_StopPlayFile(EventContext->port);

//volta ao repouso
          Canais[EventContext->port].nChanState = PRE_REPOUSO ;
           }
           break;

Offline

 

Rodapé do fórum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson