Roteamento de eventos
Com a função lineSetTerminal , o aplicativo pode controlar ou suprimir o roteamento de eventos de baixo nível especificados (trocados entre a opção e a estação) para um dispositivo. Com lineSetTerminal, o aplicativo especifica o dispositivo de terminal para o qual esses eventos (como eventos de linha, endereço ou fluxo de mídia de chamada) são roteados.
O roteamento das diferentes classes de eventos pode ser controlado individualmente, permitindo que terminais separados sejam especificados para cada classe de evento. As classes de evento incluem lâmpadas, botões, exibição, toque, hookswitch e fluxo de mídia.
Por exemplo, o fluxo de mídia de uma chamada (voz, por exemplo) poderá ser enviado para qualquer dispositivo de transdutor se o provedor de serviços e o hardware forem capazes de fazer isso. Em geral, um transdutor significa o mesmo que é chamado de dispositivo hookswitch no TAPI, algo que tem um microfone e um alto-falante. Os eventos de toque da opção para o telefone podem ser mapeados para um alerta visual na tela do computador ou podem ser roteados para um dispositivo de telefone. Eventos de lâmpada e eventos de exibição podem ser ignorados ou roteados para um dispositivo de telefone (que parece se comportar como um conjunto de telefones normal). Por fim, pressionamentos de botão em um dispositivo de telefone podem ou não ser passados para a linha. De qualquer forma, esse roteamento de sinais de baixo nível da linha não afeta a operação da parte de linha do TAPI, que sempre mapeia eventos de baixo nível para seu equivalente funcional. Para determinar os terminais que um dispositivo de linha tem disponíveis (e seus recursos), consulte os recursos do dispositivo de linha com lineGetDevCaps.
Suponha inicialmente que o aplicativo suprimiu o roteamento de todos os eventos (com lineSetTerminal) e que o usuário selecione um headset como o dispositivo de E/S atual. Uma chamada de entrada envia uma mensagem de LINE_CALLSTATE e uma mensagem LINE_LINEDEVSTATE com a indicação de toque . Como o roteamento de todos os eventos é suprimido, os eventos de toque não são roteados para o telefone, portanto, o toque é suprimido. Em vez disso, o aplicativo notifica o usuário com uma caixa de diálogo pop-up e um bipe do sistema no headset.
O usuário decide atender à chamada. Como o dispositivo de E/S atual do usuário é o headset, o aplicativo de telefonia invoca lineSetTerminal na chamada de entrada para rotear a mídia da chamada para o headset e atender à chamada. O aplicativo também pode invocar lineSetTerminal para rotear a lâmpada e exibir eventos de informações para o conjunto de telefones para que ele se comporte como de costume.
Como segundo exemplo, suponha que uma chamada de entrada esteja alertando no computador do usuário. Em vez de selecionar a opção de resposta com o mouse, o usuário decide simplesmente pegar o aparelho do telefone para atender a chamada. O offhook status no telefone envia uma mensagem para o aplicativo. O aplicativo pode interpretar essa status como uma solicitação do usuário para selecionar o aparelho telefônico para conduzir a conversa. Em seguida, o aplicativo invoca lineSetTerminal para rotear os dados de voz na chamada para o conjunto telefônico.