Tratamento de Sub-Menu
|
Início Anterior Próximo |
|
procedure TForm1.voice1PlayStop(Sender: TObject; Port,
|
StopStatus: Smallint);
|
begin
|
|
case StopStatus of
|
ssNormal: //MENSAGEM FOI ATE O FIM
|
begin
|
case Estado[Port] of
|
(.......)
|
SUBMENU:
|
begin
|
//mensagem de sub menu terminou corretamente
|
//espera as opcoes
|
voice1.ClearDigits(Port);
|
InsereDado(Port,'Espera opcao de sub-menu');
|
Estado[Port] := ESPERA_SUBMENU;
|
voice1.GetDigits(Port,1,'',5000,5000);
|
//para esperar o ocupado
|
voice1.EnableCallProgress(Port);
|
end; //fim estado submenu
|
end;
|
|
end;
|
end;
|
|
|
procedure TForm1.voice1DigitsReceived(Sender: TObject; Port,
|
Status: Smallint);
|
var
|
ret: integer;
|
begin
|
case Status of
|
EdMaxDigits,
|
edDigitOverMessage: //msg interrompida por digito
|
begin
|
case Estado[Port] of
|
ESPERA_DIGITOS_MENU,
|
BOASVINDAS:
|
begin
|
(.....)
|
end;
|
ESPERA_SUBMENU, //tratamento de submenu
|
SUBMENU:
|
begin
|
//recebeu um dos digitos esperados - disca para
|
//o ramal
|
voice1.DisablePulseDetection(Port);
|
//testa se eh digito valido entre 0 e 9
|
nOpSubMenu[Port] := StrToInt(Copy(
|
voice1.ReadDigits(Port),1,1));
|
|
//insere ramais para transferencia
|
lstRamal[Port].Clear;
|
|
if sRamalSubMenu[nOpMenu[Port]]
|
[nOpSubMenu[Port]] <> '' then
|
lstRamal[Port].Add(sRamalSubMenu[nOpMenu[Port]]
|
[nOpSubMenu[Port]]);
|
//adiciona fuga
|
lstRamal[Port].Add(RAMAL_FUGA1);
|
lstRamal[Port].Add(RAMAL_FUGA2);
|
Estado[Port] := TRANSFERENCIA;
|
nEstadoRamal[Port] := LIVRE;
|
//aguarde um instante...
|
voice1.PlayFile(Port,'sisaguar.sig','',0);
|
end;
|
end;
|
end;
|
end;
|
|
end;
|
|