Поделиться через


Прием звонка

В следующем примере кода демонстрируется обработка новых уведомлений о вызовах, таких как поиск или создание соответствующих терминалов для отрисовки мультимедиа. Этот пример представляет собой часть оператора switch, которое приложение должно реализовать для обработки событий. Сам код может содержаться в реализации ITTAPIEventNotification::Event, или метод Event может отправить сообщение в рабочий поток, содержащий переключатель.

Прежде чем использовать этот пример кода, необходимо выполнить операции в разделе Инициализация TAPI, Выбор адреса и Регистрация событий.

Кроме того, необходимо выполнить операции, показанные в разделе Выбор терминала после получения указателей интерфейса ITBasicCallControl и ITAddress .

Примечание

В этом примере нет проверок ошибок и выпусков, подходящих для рабочего кода.

 

// pEvent is an IDispatch pointer for the ITCallNotificationEvent interface of the
// call object created by TAPI, and is passed into the event handler by TAPI. 

case TE_CALLNOTIFICATION:
{
    // Get the ITCallNotification interface.
    ITCallNotificationEvent * pNotify;
    hr = pEvent->QueryInterface( 
            IID_ITCallNotificationEvent, 
            (void **)&pNotify 
            );
    // If ( hr != S_OK ) process the error here. 
    
    // Get the ITCallInfo interface.
    ITCallInfo * pCallInfo;
    hr = pNotify->get_Call( &pCallInfo);
    // If ( hr != S_OK ) process the error here. 

    // Get the ITBasicCallControl interface.
    ITBasicCallControl * pBasicCall;
    hr = pCallInfo->QueryInterface(
            IID_ITBasicCallControl,
            (void**)&pBasicCall
            );
    // If ( hr != S_OK ) process the error here. 

    // Get the ITAddress interface.
    ITAddress * pAddress;
    hr = pCallInfo->get_Address( &pAddress );
    // If ( hr != S_OK ) process the error here. 

    // Create the required terminals for this call.
    {
        // See the Select a Terminal code example.
    }
    // Complete incoming call processing.
    hr = pBasicCall->Answer();
    // If ( hr != S_OK ) process the error here. 
}

События

ITTAPIEventNotification

ITTAPI::RegisterCallNotifications

ITCallNotificationEvent

ITCallInfo

ITBasicCallControl

ITTerminalSupport