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

时间:2014-07-13 06:47:55

标签: c# .net tapi

我正在开发使用C#和Julmar.tapi3(itapi)库的固定电话应用程序, 获取callerId时,其行为不一致,逐步跟踪代码时,有时会返回callerid,大部分时间都不会返回任何内容。

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

This Link描述了在监听模式下打开线来获取我尝试的来电显示,但仍然存在同样的问题。

我曾在某处读过必须触发CallInfoChange事件以获取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());
                }
            }

1 个答案:

答案 0 :(得分:0)

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