狀態
會話或撥號狀態表示會話的目前狀態,例如「供應專案」或「已連線」。正確處理狀態資訊對於大部分 TAPI 應用程式正常運作非常重要。 例如,回應作業只能在提供的會話上執行,但如果會話處於該狀態,傳輸將會失敗。
會話的狀態會隨著事件而變更。 事件可以請求或未經要求。 要求的事件 是由控制會話的應用程式所造成,例如叫用 TAPI 會話作業時。 未經請求的事件 是由交換器、電話網絡、使用者按下本機電話上的按鈕或遠端合作物件的動作所造成。
每當服務提供者偵測到會話狀態變更時,就會向 TAPI 回報變更,而 TAPI 會發出事件通知給所有擁有者和監視應用程式。 應用程式必須適當地回應這些通知。 如需控制向應用程式回報哪些事件的資訊,請參閱 TAPI 初始化 底下的事件通知。
應用程式應該一律處理狀態事件通知。 一個實體設定的有效狀態轉換可能對另一個實體組態無效。 例如,假設在電腦和個別的手機集上實際終止的行,在電腦與手機集之間建立合作物件線路組態。 在電腦上執行的應用程式可能不知道手機集活動。 也就是說,該行可能正在使用中,而不需要服務提供者知道該行。 嘗試進行撥出電話的應用程式會成功從 TAPI 配置通話外觀,但這會導致在行上共用作用中的通話。 在沒有第一次檢查撥號音調的情況下,以盲目方式傳送 DTMF 撥號字串,可能會導致預期的 (或有) 行為。
應用程式不應該假設從某個狀態到另一個狀態的固定進展。 狀態事件會以非同步方式送達並轉送,而且可能不會以可預測的順序接收通知。 因此,撥號狀態通知應該視為告知應用程式呼叫的新狀態,而不是報告兩種狀態之間的轉換。
所有電話語音服務提供者都必須提供這項資訊。
**TAPI 2.x:**lineGetCallStatus、 lineGetCallInfo、 LINE_CALLSTATE 訊息、 LINECALLSTATE_常數
**TAPI 3.x: **ITCallInfo::get_CallInfoLong (CIL_CALLID CALLINFO_LONG) 的成員 、 ITCallStateEvent 通知、 CALL_STATE 列舉值