TAPI 服務提供者概觀

TAPI 應用程式位於自己的進程空間中。 TAPI 應用程式會將Tapi32.dll或Tapi3.dll載入其進程,而 TAPI 會透過私人 RPC 介面與 TAPISRV 通訊。 TSP 會在 TAPISRV 的內容中執行。 指定的 TSP 可能位於使用者電腦以外的電腦上,並使用遠端 TSP 來存取。 TAPISRV 會實作為 SVCHOST 內的服務程式。 MSP 位於應用程式的進程空間內,而且一律為本機。

TSP/MSP 配對可視為具有虛擬私人通訊路徑。 您可以使用 TAPISRV 或 TAPI DLL 未解譯的不透明緩衝區,在兩者之間傳送資訊。

某些服務提供者會實作與硬體相關的特定作業。 TAPI 2.x 可透過 lineDevSpecificphoneDevSpecific 函式存取這類作業。 TAPI 3.x 會公開 提供者特定的介面

下圖說明控制項和資訊的流程,其中顯示一個獨立 TSP (Unimodem) ,以及一個 TSP/MSP 配對 (H.323) 。

獨立 tsp 和配對的 tsp/msp 流程式控制制與資訊

下圖說明同時涉及 TSP 和 MSP 的連入呼叫進度。

使用 tsp 和 msp 的來電

來電設定

  • TSP 會將 LINE_NEWCALL 訊息傳送至 TAPISRV。 撥號狀態LINECALLSTATE_OFFERING。
  • TAPISRV 會通知用戶端呼叫。
  • TAPI3 會建立 TAPI Call 物件,然後呼叫由 MSP 實作的 ITMSPAddress::CreateMSPCall
  • MSP 會根據呼叫所需的 媒體類型 ,建立 MSP Call 物件和預設資料流程。 它會傳回 MSP 呼叫物件的 IUnknown 指標。
  • TAPI3 會將 MSP Call 物件匯總至 TAPI Call 物件,讓 ITStreamControl 等介面可供應用程式使用。 然後,它會通知新呼叫的應用程式。

然後,應用程式可以使用 ITStream::SelectTerminal 之類的方法來完成呼叫完成的準備工作。

內送通話完成

  • 應用程式會呼叫 ITBasicCallControl::Answer
  • TAPI3 會呼叫 lineAnswer
  • TAPISERV 呼叫 TSPI_lineAnswer
  • TSP 會起始呼叫串流。 通常,TSP 會將訊息傳送至對應的 MSP,而 MSP 會啟動資料流程。 在某些 TSP/MSP 實作中,TSP 會啟動資料流程。

通話進度期間的 TSP/MSP 通訊

進行呼叫之後,TSP 和 MSP 會透過 TAPISRV 和 TAPI3 傳遞不透明緩衝區來進行通訊。

  • TSP 會將 LINE_SENDMSPDATA 訊息傳送至 TAPISRV,以將資訊傳送至 MSP。
  • MSP 會透過 ITMSPAddress::ReceiveTSPData 方法從 TSP 接收資訊。 如果資料與 MSP 呼叫物件相關,則會提供 MSP 呼叫物件的介面指標做為該方法的參數。
  • MSP 會將MSP_TSP_DATA事件傳送至 TAPI 3,以將資訊傳送至 TSP。
  • TSP 會透過 TSPI_lineReceiveMSPData 函式從 MSP 接收資訊。

服務提供者之間的確切流程和通訊內容是特定 TSP/MSP 集合所特有。

注意

對於撥出電話,MSP 通常會知道 TSP 之前的呼叫。 如果 MSP 嘗試在 TSP 收到通話通知之前與 TSP 通訊,則通訊將會失敗。 當 MSP 和 TSP 需要交換特定呼叫的相關資訊時,TSP 應該起始通訊。