座机电话异常挂机
本文关键字:挂机 异常 电话 座机 | 更新日期: 2023-09-27 18:09:29
我正在使用c#和TAPI 3库开发固定电话和全双工语音调制解调器的软件。呼叫应答工作正常,但呼叫挂断抛出异常。我做了很多搜索来找到解决方案,但我找不到。以下是错误:
调用方法ici.ReleaseUserUserInfo()时发生异常;{"这个实现不接受建议(来自HRESULT的异常:0 x80040003 (OLE_E_ADVISENOTSUPPORTED))"}系统。异常{System.Runtime.InteropServices.COMException} "
我的目标是保存通话记录。一个有趣的事情是,如果在挂断电话之前,我关闭应用程序,它成功地保存了录制的通话。
我代码:private void BtnAnswer_Click(object sender, EventArgs e)
{
IEnumCall ec = ia[line].EnumerateCalls();
uint arg = 0;
ITCallInfo ici;
ITTerminal recordTerminal;//NY test record
try
{
ec.Next(1, out ici, ref arg);
ITBasicCallControl2 bc = (TAPI3Lib.ITBasicCallControl2)ici;
recordTerminal = bc.RequestTerminal(TapiConstants.CLSID_String_FileRecordingTerminal,
TapiConstants.TAPIMEDIATYPE_MULTITRACK,
TAPI3Lib.TERMINAL_DIRECTION.TD_RENDER);
ITMediaControl mediacontrol = (ITMediaControl)recordTerminal;
ITMediaRecord mediarecord = (ITMediaRecord)recordTerminal;
mediarecord.FileName = "a.wav";
bc.SelectTerminalOnCall(recordTerminal);
bc.Answer();
mediacontrol.Start();
}
catch (Exception exp)
{
MessageBox.Show("There may not be any calls to answer! 'n'n" + exp.ToString(), "TAPI3");
}
}
private void BtnHang_Click(object sender, EventArgs e)
{
IEnumCall ec = ia[line].EnumerateCalls();
uint arg = 0;
ITCallInfo ici;
try
{
ec.Next(1, out ici, ref arg);
ITBasicCallControl bc = (ITBasicCallControl)ici;
bc.Disconnect(DISCONNECT_CODE.DC_NORMAL);
ici.ReleaseUserUserInfo();
}
catch (Exception exp)
{
MessageBox.Show("No call to disconnect!", "TAPI3");
}
}
我相信您看到的错误代码实际上是tapie_notsupported !
根据MSDN文档ITCallInfo::ReleaseUserUserInfo:
ReleaseUserUserInfo方法通知服务提供者,应用程序已经处理了从ITCallInfo::GetCallInfoBuffer方法获得的用户-用户信息,该方法由CALLINFO_BUFFER的CIB_USERUSERINFO成员调用,随后接收到的用户-用户信息现在可以写入了。
但是,User-user信息是特定于ISDN Q.931标准的,并不是所有的服务提供商都支持它。
除非您特别希望在客户端和远程端之间交换此信息,否则可能只需删除有问题的代码行就足够了,否则它既不使用也不受支持。