1

我正在使用 C# 和 TAPI 3 库为固定电话和全双工语音调制解调器开发软件。呼叫应答工作正常,但呼叫挂断引发异常。我做了很多搜索以找到解决方案,但我做不到。以下是错误:

调用方法 ici.ReleaseUserUserInfo() 时发生异常;{“此实现不接受建议(来自 HRESULT 的异常:0x80040003(OLE_E_ADVISENOTSUPPORTED))”} System.Exception {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");
    }
}
4

1 回答 1

0

我相信您看到的错误代码实际上是 TAPI_E_NOTSUPPORTED!

根据ITCallInfo::ReleaseUserUserInfo的 MSDN 文档:

ReleaseUserUserInfo 方法通知服务提供者应用程序已经处理了从 ITCallInfo::GetCallInfoBuffer 方法获得的用户-用户信息,使用 CALLINFO_BUFFER 的 CIB_USERINFO 成员调用,随后接收到的用户-用户信息现在可以写入。

然而,用户-用户信息是特定于 ISDN Q.931 标准的,并不是所有的服务提供商都支持它。

除非您特别想在客户端和远程端之间交换此信息,否则只需删除有问题的代码行就足够了,否则它既未使用也不支持。

于 2014-06-20T16:55:31.263 回答