시스템 상태
세션 또는 호출 상태는 세션의 현재 상태 나타냅니다(예: "제공" 또는 "연결됨"). 상태 정보의 적절한 처리는 대부분의 TAPI 애플리케이션의 적절한 작동에 매우 중요합니다. 예를 들어 응답 작업은 제공된 세션에서만 수행할 수 있지만 세션이 해당 상태인 경우 전송이 실패합니다.
이벤트의 결과로 세션의 상태가 변경됩니다. 이벤트를 요청하거나 원치 않을 수 있습니다. 요청된 이벤트는 TAPI 세션 작업을 호출하는 경우와 같이 세션을 제어하는 애플리케이션에 의해 발생합니다. 원치 않는 이벤트는 스위치, 전화 네트워크, 로컬 휴대폰의 사용자 누르기 단추 또는 원격 파티의 작업으로 인해 발생합니다.
서비스 공급자가 세션 상태 변경을 감지할 때마다 TAPI에 대한 변경 사항을 보고하고 TAPI는 모든 소유자 및 모니터링 애플리케이션에 이벤트 알림을 발급합니다. 애플리케이션은 이러한 알림에 적절하게 반응해야 합니다. 애플리케이션에 보고되는 이벤트를 제어하는 방법에 대한 자세한 내용은 TAPI 초기화 아래의 이벤트 알림을 참조하세요.
애플리케이션은 항상 상태 이벤트 알림을 처리해야 합니다. 한 물리적 구성에 유효한 상태 전환은 다른 구성에 대해 유효하지 않을 수 있습니다. 예를 들어 컴퓨터와 별도의 전화 세트 모두에서 물리적으로 종료되는 줄을 고려하여 컴퓨터와 휴대폰 집합 간에 파티 라인 구성을 만듭니다. 컴퓨터에서 실행되는 애플리케이션은 휴대폰 설정 활동에 대해 알지 못할 수 있습니다. 즉, 줄이 서비스 공급자가 인식하지 않고 사용 중일 수 있습니다. 발신 호출을 시도하는 애플리케이션은 TAPI에서 통화 모양을 할당하는 데 성공하지만 이로 인해 줄에서 활성 호출을 공유하게 됩니다. 먼저 다이얼 톤을 확인하지 않고 DTMF 다이얼 문자열을 맹목적으로 보내면 의도된(또는 정중한) 동작이 발생하지 않을 수 있습니다.
애플리케이션은 한 상태에서 다른 상태로의 엄격한 진행을 가정해서는 안 됩니다. 상태 이벤트가 도착하여 비동기적으로 전달되며 예측 가능한 순서로 알림을 받지 못할 수 있습니다. 따라서 호출 상태 알림은 두 상태 간의 전환을 보고하는 대신 애플리케이션에 호출의 새 상태를 알리는 것으로 간주되어야 합니다.
모든 전화 통신 서비스 공급자는 이 정보를 제공해야 합니다.
**TAPI 2.x: **lineGetCallStatus, lineGetCallInfo, LINE_CALLSTATE 메시지, LINECALLSTATE_ 상수
**TAPI 3.x: **ITCallInfo::get_CallInfoLong(CALLINFO_LONG CIL_CALLID 멤버), ITCallStateEvent 알림, CALL_STATE 열거자