C# C、 julmar Itapi/tapi3 CallerId返回空字符串

C# C、 julmar Itapi/tapi3 CallerId返回空字符串,c#,.net,tapi,C#,.net,Tapi,我正在使用C和Julmar.tapi3itapi库开发一个陆地电话应用程序, 当获取callerId时,它的行为是不一致的,当一步一步跟踪代码时,有时它返回callerId,而大多数时候它什么也不返回 我使用了搜索时找到的代码,但它返回空字符串 描述在监视器模式下打开线路以获取我尝试过但仍然存在相同问题的呼叫者id 我在某个地方读到,必须触发CallInfo更改事件才能获得CallerId,但在我的情况下,它不会触发 Itapi支持callerId吗 下面是我用来获取来电显示的代码 privat

我正在使用C和Julmar.tapi3itapi库开发一个陆地电话应用程序, 当获取callerId时,它的行为是不一致的,当一步一步跟踪代码时,有时它返回callerId,而大多数时候它什么也不返回

我使用了搜索时找到的代码,但它返回空字符串

描述在监视器模式下打开线路以获取我尝试过但仍然存在相同问题的呼叫者id

我在某个地方读到,必须触发CallInfo更改事件才能获得CallerId,但在我的情况下,它不会触发

Itapi支持callerId吗

下面是我用来获取来电显示的代码

private void IncomingForm_Load(object sender, EventArgs e)
    {
        _tapiMgr.Initialize();

        foreach (TAddress addr in _tapiMgr.Addresses)
        {
            if (addr.QueryMediaType(TAPIMEDIATYPES.AUDIO))
            {
                try
                {
                    TAPIMEDIATYPES mt = TAPIMEDIATYPES.AUDIO;
                    addr.OpenAndMonitor(mt);
                   // addr.Open(mt);
                }
                catch(TapiException ex)
                {

                }
            }
        }
    }

  private void OnNewCall(object sender, TapiCallNotificationEventArgs e)
            {
                if (e.Call.Privilege == CALL_PRIVILEGE.CP_OWNER)
                {             MessageBox.Show(e.Call.get_CallInfo(CALLINFO_STRING.CIS_CALLERIDNUMBER).ToString());
                }
            }

在大多数系统上,来电显示不能立即使用。在北美,来电显示是在第一次响铃后发送的。要可靠地获取呼叫者id,除了NewCall事件之外,还需要处理CallInfo事件。如果调用方id在NewCall事件处理程序中不可用,则它将在稍后调用CallInfo事件时可用