電話語音服務提供者的生命週期
本主題提供 TSP 作業的高階檢閱。
會話是特定組態保持有效且電話語音作業執行的時間。服務提供者可以在第一次載入時和最後釋放時支援許多會話。 針對每個會話,TAPI 會交涉介面的版本、啟動會話、執行作業,最後關閉會話。 服務提供者不得保留從一個會話到下一個會話的資訊。
在已知介面版本之後,TAPI 會呼叫 TSPI_providerInit 函式來設定所有指令引數。 當呼叫 TSPI_providerInit 函式時,服務提供者可確保登錄中的所有組態資訊都穩定。 大部分的服務提供者此時都會讀取所有組態資訊。
一般作業可以在服務提供者初始化之後,依任何順序繼續進行。
TAPI 會根據每個裝置交涉裝置特定資訊。 TAPI 和服務提供者會在裝置開啟時認可至版本。
服務提供者可以接收要求來選取和取消擴充功能版本。 選取擴充功能版本時,裝置會根據該裝置特定的擴充功能版本嚴格運作。
在開啟裝置之前和之後,裝置特定擴充版本的交涉可能會多次發生。 TAPI 會傳遞版本範圍,而服務提供者會選擇並傳回此範圍中的值。 一般而言,服務提供者已停用裝置特定的擴充功能。
這會認可 TAPI 和服務提供者在該延伸模組版本層級上運作,直到選取專案取消為止。 在裝置特定的擴充功能生效期間,嘗試交涉擴充功能版本層級應該只允許目前作用中的版本層級。 取消裝置特定的擴充功能之後,可以交涉並選取不同的版本。
下列圖例顯示 Open/Close 配對內的電話作業。 其中有些作業是同步的,有些則是非同步。 如果作業以非同步方式完成,可以在第一次報告完成之前要求另一個作業。 因此,作業可以以任何方式重迭。 服務提供者最終必須針對要求的任何非同步作業報告完成。 關閉電話會強制未處理的非同步作業完成 (可能具有「失敗」指示) 。
線路裝置的生命週期類似于手機的生命週期,不同之處在于線路有自己的交涉、初始化、開啟和關閉程式。 開啟行上的作業會以自己的 Open/Close 配對括住。 這個配對會在與手機開啟/關閉相同的初始化/關機配對之間以括弧括住。
呼叫的生命週期會嚴格以括弧括住包含這些呼叫的行 Open/Close 。 呼叫的存留期可以透過數種方式開始:
- 透過 lineMakeCall、 lineSetupTransfer或 lineSetupConference等函式從 TAPI 要求。
- 在服務提供者中以新來電、使用者起始的電話在接聽電話上產生,或產生為其他作業的副作用來電,例如將現有的通話置於保留狀態。
相同行內不同呼叫的存留期可以以任何方式彼此重迭。 所有呼叫都會在叫用 TSPI 函 式時 結束其存留期TSPI_lineCloseCall。 下圖顯示數個呼叫的生命週期。
呼叫可能源自 TAPI,如 MakeCall/CloseCall 配對所示。 呼叫也可以源自服務提供者。 服務提供者會向 TAPI 提供的回呼程式宣告此訊息 LINE_NEWCALL 訊息。 在這種情況下,TAPI 會傳回呼叫的識別碼,此識別碼包含在呼叫上發生的後續回呼報告事件中。 如果呼叫的存留期源自 TAPI,此識別碼會包含在建立呼叫的 TSPI 作業中。
啟動呼叫存留期的所有作業都會導致 TAPI 和服務提供者交換新呼叫的識別碼。 在 TAPI 原始呼叫的情況下,TAPI 會傳遞其識別碼,並接收服務提供者的識別碼作為傳回參數。 在呼叫源自服務提供者的情況下,服務提供者會將其識別碼傳遞至 TAPI,並接收 TAPI 識別碼作為傳回參數。
下圖提供服務提供者安裝、設定和移除的高階檢視;跨越許多會話的生命週期序列。 這些作業的一般生命週期可以透過下列時間表來顯示。
顯示典型的安裝和移除生命週期,跨越多個會話。 安裝和移除程式的呼叫會嚴格配對,且不會重迭。 對 組 態程式的呼叫可能會在此配對內多次發生。 一個通常是由服務提供者做為 安裝程式 的內部副作用,以建立線路和電話專案。 您也可以在其他時間呼叫 Config 程式來改變現有的設定。 必須先完成 安裝程式 ,才能允許任何其他 TSPI 函式。 在理想的案例中,所有會話都完全巢狀于 安裝/移除 程式組內。
函式 TSPI_providerInstall、 TSPI_providerConfig和 TSPI_providerRemove 與服務提供者本身互動,而不是與任何特定裝置互動。 它們會影響在多個會話中存留的靜態組態資訊,而且必須存在任何其他作業才能繼續。 因此,所有其他作業都是巢狀TSPI_providerInstall調用與其相符TSPI_providerRemove完成。 這兩個作業通常會非常遠,最有可能在不同的服務提供者負載中,或電腦的不同開機。 外部呼叫 Config 函式是選擇性的,因為除了自己的 安裝 程式之外,還需要包含 Config 行為。 在外部呼叫它通常是修改現有的組態。
內嵌在完成 TSPI_providerRemove 作業的概念中。 即使電話語音作業 (會話) 正在進行時,還是要讓使用者執行電話語音主控台公用程式,以改變服務提供者設定。 因此, 有 未完成的會話時, TSPI_providerConfig和TSPI_providerRemove 規格都允許叫用。 不過,必須延遲對設定所做的任何變更,直到電話語音作業關閉並重新啟動為止。 因此,嚴格來說,任何 TSPI_providerConfig 或 TSPI_providerRemove 作業的完成都會在任何會話之外發生。 動作的巢狀如圖所示,即使程式調用可能會以稍微不同的順序顯示。 雖然使用者應該收到對話方塊的通知,但服務提供者只允許在作業進行時不允許 設定 或 移除 。 建議使用更方便使用的實作,允許至少一部分的作業。
這些 安裝、 設定和 移除 作業都會對任何執行中的電話語音應用程式發出訊號的副作用,最終會導致他們關閉其電話語音服務的使用。 這一起會結束服務提供者的所有未完成會話。 這表示服務提供者必須在新的會話開始時讀取新的登錄組態。 由於 設定 或 移除 作業正在進行時擱置的任何變更,則生效。