我正在使用 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());
}
}