Fórum de Suporte Digivoice
Você não está logado.
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
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