Condividi tramite


Panoramica del provider di servizi TAPI

Le applicazioni TAPI risiedono nel proprio spazio di elaborazione. Le applicazioni TAPI caricano il Tapi32.dll o Tapi3.dll nel processo e TAPI comunica con TAPISRV tramite un'interfaccia RPC privata. Un TSP viene eseguito nel contesto di TAPISRV. Un determinato TSP può risiedere in un computer diverso dal computer dell'utente ed è accessibile tramite un TSP remoto. TAPISRV viene implementato come processo di servizio all'interno di SVCHOST. Un MSP si trova all'interno dello spazio di processo dell'applicazione ed è sempre locale.

Una coppia TSP/MSP può essere considerata come avere un percorso di comunicazione privata virtuale. Le informazioni possono essere inviate tra i due usando buffer opachi che non vengono interpretati da TAPISRV o dalla DLL TAPI.

Alcuni provider di servizi implementano operazioni specifiche per l'hardware interessato. TAPI 2.x consente l'accesso a tali operazioni tramite la funzione lineDevSpecific o phoneDevSpecific. TAPI 3.x espone interfacce specifiche del fornitore.

Il diagramma seguente illustra il flusso di controlli e informazioni, che mostra un TSP autonomo (Unimodem) e una coppia TSP/MSP (H.323).

tsp autonomo e il flusso tsp/msp associato del controllo e delle informazioni

Il diagramma seguente illustra lo stato di avanzamento di una chiamata in ingresso che coinvolge sia un TSP che un MSP.

chiamata in arrivo con un tsp e un msp

Configurazione delle chiamate in ingresso

  • Il TSP invia un messaggio LINE_NEWCALL a TAPISRV. Lo stato di chiamata è LINECALLSTATE_OFFERING.
  • TAPISRV notifica ai client della chiamata.
  • TAPI3 crea l'oggetto TAPI Call, quindi chiama ITMSPAddress::CreateMSPCall, implementato da MSP.
  • Il MSP crea un oggetto Call MSP e flussi predefiniti in base ai tipi di media necessari per la chiamata. Restituisce un puntatore IUnknown all'oggetto di chiamata MSP.
  • TAPI3 aggrega l'oggetto MSP Call nell'oggetto TAPI Call, rendendo disponibili interfacce come ITStreamControl disponibili per l'applicazione. Invia quindi una notifica all'applicazione della nuova chiamata.

L'applicazione può quindi usare metodi come ITStream::SelectTerminal per completare le operazioni di preparazione per il completamento delle chiamate.

Completamento di chiamate in arrivo

  • L'applicazione chiama ITBasicCallControl::Answer.
  • TAPI3 chiama lineAnswer.
  • TAPISERV chiama TSPI_lineAnswer.
  • Il TSP avvia lo streaming delle chiamate. In genere, il TSP invia un messaggio al msp corrispondente e il msp avvia i flussi. In alcune implementazioni TSP/MSP, il TSP avvia i flussi.

Comunicazione TSP/MSP durante l'avanzamento della chiamata

Dopo che la chiamata è in corso, il TSP e l'MSP comunicano passando buffer opachi tramite TAPISRV e TAPI3.

  • Il TSP invia informazioni all'MSP inviando il messaggio LINE_SENDMSPDATA a TAPISRV.
  • L'MSP riceve informazioni dal TSP tramite il metodo ITMSPAddress::ReceiveTSPData. Se i dati sono correlati a un oggetto chiamata MSP, come parametro di tale metodo viene fornito un puntatore di interfaccia all'oggetto di chiamata MSP.
  • L'MSP invia informazioni al TSP inviando un evento MSP_TSP_DATA a TAPI 3.
  • Il TSP riceve informazioni dall'MSP tramite la funzione TSPI_lineReceiveMSPData.

Il processo esatto e il contenuto della comunicazione tra provider di servizi è specifico di un determinato set TSP/MSP.

Nota

Per le chiamate in uscita, l'MSP di solito conosce la chiamata prima del TSP. Se l'MSP tenta di comunicare con il TSP prima che il TSP venga informato di una chiamata, la comunicazione avrà esito negativo. Quando l'MSP e il TSP devono scambiare informazioni relative a una chiamata specifica, il TSP deve avviare la comunicazione.