Ereignisrouting
Mit der lineSetTerminal-Funktion kann die Anwendung das Routing von angegebenen Ereignissen auf niedriger Ebene (zwischen Switch und Station ausgetauscht) an ein Gerät steuern oder unterdrücken. Mit lineSetTerminal gibt die Anwendung das Endgerät an, an das diese Ereignisse (z. B. Zeilen-, Adress- oder Aufrufdatenstromereignisse) weitergeleitet werden.
Das Routing der verschiedenen Ereignisklassen kann individuell gesteuert werden, sodass für jede Ereignisklasse separate Terminals angegeben werden können. Ereignisklassen umfassen Lampen, Schaltflächen, Anzeige, Ringer, Hookswitch und Medienstream.
Beispielsweise kann der Mediendatenstrom eines Anrufs (z. B. Voice) an ein beliebiges Wandlergerät gesendet werden, wenn der Dienstanbieter und die Hardware dazu in der Lage sind. Im Allgemeinen bedeutet ein Wandler dasselbe wie das, was in TAPI als Hookswitch-Gerät bezeichnet wird, etwas, das über ein Mikrofon und einen Lautsprecher verfügt. Klingelereignisse vom Wechsel zum Telefon können einer visuellen Warnung auf dem Computerbildschirm zugeordnet oder an ein Telefongerät weitergeleitet werden. Lampenereignisse und Anzeigeereignisse können ignoriert oder an ein Telefongerät weitergeleitet werden (das sich wie ein normaler Telefonsatz zu verhalten scheint). Schließlich kann ein Tastendruck an einem Telefongerät an die Leitung übergeben werden oder nicht. In jedem Fall wirkt sich dieses Routing von Signalen auf niedriger Ebene von der Linie nicht auf den Betrieb des Linienteils von TAPI aus, der Ereignisse auf niedriger Ebene immer ihrem funktionalen Äquivalent zuordnet. Um zu ermitteln, welche Terminals ein Leitungsgerät zur Verfügung hat (und deren Funktionen), lesen Sie die Funktionen des Leitungsgeräts mit lineGetDevCaps.
Nehmen Sie zunächst an, dass die Anwendung das Routing aller Ereignisse (mit lineSetTerminal) unterdrückt hat, und der Benutzer ein Headset als aktuelles E/A-Gerät auswählt. Ein eingehender Anruf sendet eine LINE_CALLSTATE-Nachricht und eine LINE_LINEDEVSTATE Nachricht mit der Klingelanzeige . Da das Routing aller Ereignisse unterdrückt wird, werden Ringereignisse nicht an das Telefon weitergeleitet, sodass das Klingeln unterdrückt wird. Stattdessen benachrichtigt die Anwendung den Benutzer mit einem Popupdialogfeld und einem Systemton im Headset.
Der Benutzer entscheidet, den Anruf zu beantworten. Da das aktuelle E/A-Gerät des Benutzers das Headset ist, ruft die Telefonieanwendung lineSetTerminal für den eingehenden Anruf auf, um die Medien des Anrufs an das Headset weiterzuleiten und den Anruf zu beantworten. Die Anwendung kann auch lineSetTerminal aufrufen, um die Lampe weiterzuleiten und Informationsereignisse an den Telefonsatz anzuzeigen, sodass sie sich wie gewohnt verhält.
Nehmen Sie als zweites Beispiel an, dass ein eingehender Anruf eine Warnung auf dem Computer des Benutzers darstellt. Anstatt die Antwortoption mit der Maus auszuwählen, entscheidet sich der Benutzer, einfach das Telefonhörer zu nehmen, um den Anruf zu beantworten. Der Offhook status am Telefon sendet eine Nachricht an die Anwendung. Die Anwendung kann diese status als Aufforderung des Benutzers interpretieren, das Telefonhandset auszuwählen, um die Konversation zu führen. Die Anwendung ruft dann lineSetTerminal auf, um die Sprachdaten für den Anruf an die Telefongruppe weiterzuleiten.