Состояние
Состояние сеанса или вызова указывает текущее состояние сеанса, например "предложение" или "подключено". Правильная обработка сведений о состоянии крайне важна для правильной работы большинства приложений TAPI. Например, операция ответа может быть выполнена только в предложенном сеансе, но передача завершится ошибкой, если сеанс находится в этом состоянии.
Состояние сеанса изменяется в результате событий. События могут быть запрошены или нежелательны. Запрашиваемые события вызываются приложением, управляющим сеансом, например при вызове операции сеанса TAPI. Нежелательные события вызываются коммутатором, телефонной сетью, нажатием пользователем кнопок на локальном телефоне или действиями удаленной стороны.
Всякий раз, когда поставщик услуг обнаруживает изменение состояния сеанса, он сообщает об этом в TAPI, а TAPI отправляет уведомление о событии всем владельцам и мониторингу приложений. Приложение должно соответствующим образом реагировать на эти уведомления. Сведения об управлении тем, какие события передаются в приложение, см. в разделе Уведомление о событиях в разделе инициализация TAPI .
Приложение должно всегда обрабатывать уведомления о событиях состояния. Переходы состояния, допустимые для одной физической конфигурации, могут быть недопустимыми для другой. Например, рассмотрим строку, которая физически завершается как на компьютере, так и на отдельном телефонном наборе, создавая конфигурацию линии стороны между компьютером и телефонным набором. Приложение, работающее на компьютере, может не знать о действиях набора телефонов. Это значит, что линия может использоваться без того, чтобы поставщик услуг не знал о ней. Приложению, пытающемуся выполнить исходящий звонок, будет успешно выделен внешний вид звонка из TAPI, но это приведет к совместному использованию активного звонка на линии. Слепая отправка строки набора DTMF без предварительной проверки сигнала набора может не привести к предполагаемому (или вежливому) поведению.
Приложение не должно предполагать жесткое переход от одного состояния к другому. События состояния поступают и пересылаются асинхронно, а уведомления могут быть получены не в предсказуемом порядке. Поэтому уведомления о состоянии вызова следует рассматривать как сообщающие приложению о новом состоянии вызова, а не как сообщающие о переходах между двумя состояниями.
Все поставщики услуг телефонии должны предоставлять эту информацию.
**TAPI 2.x: **lineGetCallStatus, lineGetCallInfo, LINE_CALLSTATE message, LINECALLSTATE_ Constants
**TAPI 3.x: **ITCallInfo::get_CallInfoLong (CIL_CALLID член CALLINFO_LONG), уведомление ITCallStateEvent, перечислитель CALL_STATE