O CDP é um middle-ware que permite integrar aplicações ao PABX Coral, através de uma rede TCP/IP, usando a tecnologia COM da Microsoft. A solução é composta de um servidor e um cliente, que podem ser instalados no mesmo computador ou em computadores diferentes, dependendo da capacidade de processamento do computador e do tráfego telefônico do Coral (quanto maior o tráfego maior será o volume de mensagens processados pelo CDP).
Na figura abaixo o servidor CTI é a máquina onde está instalado o Servidor CDP, que se comunica com o Coral através de uma interface APDL, usando uma das portas seriais (COM1, 2, ...). O servidor pode conectar-se a vários sistemas Corais, usando uma porta serial para cada um deles.
O cliente do CDP é o computador onde está instalada a aplicação cliente, por exemplo uma URA ou um serviço de monitoração de call center , que captura os status dos agentes e os dados das chamadas em progresso. A aplicação cliente de comunica com o Coral através da OCX CDP, que permite receber mensagens e enviar comandos para o Coral, passando através do servidor CTI. Sempre que a OCX recebe uma mensagem ela deflagra um evento para a aplicação, que pode executar o processamento pertinente. Por exemplo, uma URA pode receber um evento informando que uma chamada foi encaminhada para uma das portas da URA, e capturar os dados pertinentes à chamada (ANI, DNI, tronco, etc.).

Nesta versão o CDP contém apenas recursos first-party-call-control , ou seja, ele permite controlar apenas a porta do Coral conectada ao Servidor CTI. Contudo, através deste ramal, ele permite receber mensagens sobre todos os agentes, ramais e troncos conectados ao sistema. A interface entre o Coral e o Servidor CTI é implementada através de um APDL ou de um DKT com interface APA. O APDL geralmente é utilizado quando a aplicação cliente vai apenas receber mensagens do Coral, se a aplicação for atender chamadas, transferir, reter e fazer outros controles, então será necessário utilizar um aparelho DKT.
Métodos
Os métodos são divididos em duas categorias, que são Comandos de comunicação com o servidor CTI e Comandos de comunicação com o sistema Coral.
Comunicação com o servidor CTI
Os métodos de comunicação com o servidor CTI servem para estabelecer e controlar a comunicação com o servidor do CDP.
• Connect( String IP )
Faz a OCX conectar-se ao servidor CTI, cujo IP foi informado.` Retorna se a conexão ocorreu com sucesso ou se houveram erros.
• Disconnect()
Faz a OCX desconectar-se do servidor.
• ConnectCoral( Int PortNumber, String Protocol )
Faz o servidor CTI conectar-se ao Coral, numa porta específica e trabalhando com o protocolo informado (CSTS ou PCC).
• DisconnectCoral( Int PortNumber )
Faz o servidor CTI desconectar-se do Coral conectado à porta informada.
• Refresh( Int PortNumber )
Reinicializa a comunicação entre o servidor CTI e o Coral, caso esteja ocorrendo erros de comunicação.
• LogStart( Int PortNumber, String LogFile )
Faz o servidor CTI logar todas as mensagens recebidas do Coral conectado à porta informada.
• LogStop( Int PortNumber )
Faz o servidor CTI parar o log de mensagens recebidas do Coral conectado à porta informada.
• String GetLogFile( Int PortNumber )
Retorna um string com o nome do arquivo de log associado ao Coral conectado à porta informada. Se esta porta estiver fechada retorna um string vazio.
• String GetProtocol( Int PortNumber )
Retorna o nome do protocolo (CSTS ou PCC) utilizado para comunicação com o Coral conectado à porta informada. Se esta porta estiver fechada retorna um string vazio.
Comunicação com o Coral
Os métodos de comunicação com o sistema Coral servem para estabelecer e controlar chamadas telefônicas.
• Speaker( Int PortNumber )
Equivale a pressionar a tecla "Speaker" do aparelho conectado à porta informada.
• Dial( Int PortNumber, String Number )
Disca uma série de números no aparelho conectado à porta informada..
• Hold( Int PortNumber, Long CallId, String Device )
Retém a chamada em progresso no aparelho conectado à porta informada.
• *Retreive( Int PortNumber )
Atende a chamada retida no aparelho conectado à porta informada.
• *PageQ( Int PortNumber, Long NumPageQ )
Estaciona ou pega uma chamada na "PageQ" do aparelho conectado à porta informada.
• *AnswerPort( Int PortNumber, Long CallIndex )
Atende a chamada que está "ringando" na porta informada.
• *DivertCall( Int PortNumber, String NumDestino, Long CallIndex )
Desvia a chamada que está "ringando" na porta informada para o número de destino informado.
• *ParkPickup( Int PortNumber, String Ramal )
Atende a chamada estacionada no ramal informado.
• *ParkCall( Int PortNumber )
Estaciona a chamada.
• PressKey( Int PortNumber, Long NumTecla )
Pressiona uma tecla do aparelho, para obter o número de cada tecla consulte o manual do Coral.
• OffHook( Int PortNumber )
Equivale a tirar o monofone do gancho.
• OnHook( Int PortNumber )
Equivale a colocar o monofone no gancho.
Eventos
Descrição dos parâmetros dos eventos:
Parâmetros |
Descrição |
ANI |
Identificação do chamador. |
CodAgente |
Código do agente. |
CodConclusao |
Código de conclusão informado pelo agente na finalização de uma chamada. |
Grupo |
Número do grupo DAC. |
MsgErro |
Mensagem de erro emitida pelo Coral. |
NumDevice |
Número do ramal ou tronco. |
NumPorta |
Número da porta do Coral associada à chamada. |
Ramal |
Número da porta do Coral. |
StatusAgente |
Status do agente (logado, em pausa, etc.). |
StatusDevice |
Status do ramal ou tronco. |
TextoDisplay |
Texto que aparece no display do ramal digital. |
Tronco |
Número do tronco do Coral. |
OnTrunkBusyIdle( Int PortNumber, String NumDevice, Boolean Status )
Indica que um tronco ficou livre (false) ou ocupado (true), em função do status.
OnStationBusyIdle( Int PortNumber, String NumDevice, Boolean Status )
Indica que um ramal ficou livre (false) ou ocupado (true), em função do status.
OnCOC( Int PortNumber, Long COC1, Long COC2)
Indica o código do texto que aparece no display, sendo que o COC1 está relacionado a linha 1 e o COC 2 a linha do display.
OnIncomingCallToACD( Int PortNumber, String CodAgente, String ANI, Long Tronco, Long Grupo )
Chamada oferecida para um grupo DAC ou agente.
OnIncomingCall( Int PortNumber, Long CallIndex, String ANI, Long Tronco )
Chamada tocando no ramal conectado ao servidor CTI.
OnHeldCall( Int PortNumber, Long CallIndex, String ANI, Long Tronco )
Chamada retida no ramal conectado ao servidor CTI.
OnStopCall( Int PortNumber, Long CallIndex )
Indica que uma chamada foi desconectada.
OnTerminateCall( Int PortNumber, String Ramal )
Indica que uma uma chamada em conferência foi terminada.
OnTimer( Int PortNumber, Long Hora, Long Minutos, Long Segundos )
O APA/VDK envia a hora para a aplicação a cada 1 segundo aproximadamente.
OnConnection( Int PortNumber, Long RamalChamador, Long RamalChamado, Long Status)
Indica que uma chamada foi atendida.
OnUpdateDisplay( Int PortNumber, String TextoDisplay )
Reporta alteração no texto que aparece no display.
OnGeneralMessage( Int PortNumber, String MsgErro )
O Coral enviou uma mensagem de erro ao servidor CTI.
OnAgentStatus( Int PortNumber, Long Grupo, Long Ramal, Long CodAgente, Long StatusAgente )
Reporta "
Logon" e "Logout" do agente, assim como "Ready"/"NotReady".
OnWrapUpCode( Int PortNumber, Long Ramal, Long CodAgente, Long CodConclusao )
Reporta códigos de finalização de chamadas.
OnError( String ErrorMessage, String Proc, Int PortNumber )
Reporta um erro dentro da OCX, que pode ser capturado e tratado pela aplicação.