События TAPI 3.0 без повышения - PullRequest
0 голосов
/ 14 ноября 2018

Я новичок в C #, поэтому, пожалуйста, извините меня за плохое кодирование.Я пытаюсь сделать это приложение таким, чтобы во время звонка он получал номер телефона вызывающего абонента и использовал его для получения информации из CRM, а после этого он создает воздушный шар из NotifyIcon, который отображает информацию озвонящий.Соединение CRM и телефонный номер для поиска работают нормально, то же самое для NotifyIcon, но не работает вся часть TAPI.Никаких событий не происходит, когда я пытаюсь с моего телефона позвонить на мой рабочий номер Zoiper5.

Вот класс, где TAPI:

using System;
using System.Windows.Forms;
using TAPI3Lib;


namespace CallHelper
{
    class TapiApplication : ApplicationContext
    {
        private static NLog.Logger logger = 
        NLog.LogManager.GetCurrentClassLogger();
        private TAPIClass tapi;
        private string number;
        private Notification notification;
        private ITAddress address;

        public TapiApplication()
        {
            try
            {
                tapi = new TAPIClass();
                tapi.Initialize();
                //Notification.cs : handle the NotifyIcon 
                notification = new Notification();

                tapi.ITTAPIEventNotification_Event_Event += new 
         ITTAPIEventNotification_EventEventHandler(callNotificationHandler);
                tapi.EventFilter = (int) (TAPI_EVENT.TE_CALLNOTIFICATION);
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);
            }
        }
        private void callNotificationHandler(TAPI_EVENT TapiEvent, object 
pEvent)
        {
            try
            {
                ITCallNotificationEvent cne = pEvent as ITCallNotificationEvent;
                number = cne.Call.get_CallInfoString(CALLINFO_STRING.CIS_CALLEDIDNUMBER);
                //creates the balloon containing the information of the caller
                notification.showBalloon(number);
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);
                tapi.Shutdown();
            }
        }
     }
}

Я действительно не знаю, где искать больше;Я прочитал много статей здесь о SOF и других сайтах, рассказывающих почти об одном и том же, но все же я не решил.

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Проблема решена. Мне не хватало части инициализации. При событии входящих вызовов вы должны инициализировать строки, по которым вы хотите получать уведомление, как написано здесь ITTAPI :: RegisterCallNotifications метод Вы делаете это, используя

tapi.RegisterCallNotifications(address, true, true, TapiConstants.TAPIMEDIATYPE_AUDIO, 2);

Вы можете либо выбрать один ITAddress, либо указать все адреса в вашем tapi.Address as ITCollection и сделать RegisterCallNotifications для каждого из них. В первом случае вы будете получать уведомление только в том случае, если входящий вызов направлен в указанную вами адресную строку, во втором случае вы будете получать уведомление каждый раз, когда поступит звонок по любому из адресов.

Этот пример проекта мне очень помог: TAPI 3.0 Разработка приложений с использованием C # .NET

0 голосов
/ 16 ноября 2018

Я не уверен, что вы регистрируетесь на желаемое событие. Я бы предложил использовать оболочку Julmar Tapi 3.0 .Net, найденную здесь: https://github.com/markjulmar/itapi3. Когда вы инициализируете Tapi с помощью этой оболочки, она регистрируется для всех событий, а также находит все доступные устройства.

...