0

我正在使用 C# 和 Julmar.tapi3(itapi) 库开发固定电话应用程序,当获取 callerId 时,它的行为不一致,当逐步跟踪代码时,有时它会返回 callerid,而大多数时候它什么也不返回。

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

此链接描述了在监控模式下打开线路以获取我尝试过的来电显示但仍然存在同样的问题。

我在某处读到必须触发 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());
                }
            }
4

1 回答 1

0

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

于 2014-12-13T00:57:10.790 回答