Приложение C#, пытающееся использовать TAPI с Toshiba CIX

У меня есть приложение Tapi С#, которое я разрабатываю для отправки с компьютера командам Tapi Toshiba CIX, которые направляются на телефоны. Сама линия не важна, так как эта часть работает. Я могу набрать номер телефона из приложения. Однако ответ и отбой не работают должным образом. Когда я пытаюсь отключиться, я получаю эту ошибку:

Эта реализация не принимает рекомендации (исключение из HRESULT: 0x80040003 (OLE_E_ADVISENOTSUPPORTED))

И когда я пытаюсь ответить, я получаю:

Не удалось преобразовать COM-объект типа «System.__ComObject» в тип интерфейса «TAPI3Lib.ITBasicCallControl». Эта операция завершилась неудачно, так как вызов QueryInterface для COM-компонента для интерфейса с IID "{B1EFC389-9355-11D0-835C-00AA003CCABD}" завершился сбоем из-за следующей ошибки: такой интерфейс не поддерживается (исключение из HRESULT: 0x80004002 (E_NOINTERFACE)) .

Мое приложение основано на: http://www.codeproject.com/KB/IP/devangpro.aspx Мне пришлось создать делегат для добавления элементов в список из-за проблемы с перекрестными потоками, чтобы приложение в codeproject по крайней мере работало правильно.

Вот развязка:

IEnumCall ec = ia[line].EnumerateCalls();
        uint arg = 0;
        ITCallInfo ici;
        try
        {
            ec.Next(1,out ici,ref arg);
            ITBasicCallControl bc=(ITBasicCallControl)ici;
            bc.Disconnect(DISCONNECT_CODE.DC_NORMAL);
            ici.ReleaseUserUserInfo();
        }
        catch(Exception exp)
        {
            MessageBox.Show("No call to disconnect!","TAPI3");
        }

И вот ответ:

        IEnumCall ec = ia[line].EnumerateCalls();
        uint arg=0;
        ITCallInfo ici;
        try
        {
            ec.Next(1,out ici,ref arg);
            ITBasicCallControl bc=(TAPI3Lib.ITBasicCallControl)ici;
            if(!reject)
            {
                bc.Answer();
            }
            else
            {
                bc.Disconnect(DISCONNECT_CODE.DC_REJECTED);
                ici.ReleaseUserUserInfo();
            }
        }
        catch(Exception exp)
        {
            MessageBox.Show("There may not be any calls to answer!     \n\n"+exp.ToString(),"TAPI3");
        }

person bigphildogg86    schedule 10.11.2011    source источник


Ответы (2)


Я меняю tapimediatype с audio на datamodem, потому что я хочу видеть только идентификатор вызывающего абонента в своем приложении, и это работает. Причина проблемы может заключаться в том, что ваш модем не поддерживает звук, поэтому вы должны изменить tapimediatype на другой тип.

person Mostafa Shehata    schedule 04.08.2012

Я столкнулся с той же проблемой в своем проекте, и у меня было много поисков, но ничего не нашел, проблема была с моим кодом, эта ошибка возникает только тогда, когда вы выполняете какую-либо операцию, не выбирая какую-либо линию тапа (устройства).

похоже, вы не выбрали ни одну линию TAPI для выполнения какой-либо операции.

person Asif Ghanchi    schedule 14.02.2017