【问题标题】:C# - Using TAPI (Specifically TAPI3Lib) to record a phone calls lengthC# - 使用 TAPI(特别是 TAPI3Lib)记录电话通话长度
【发布时间】:2015-09-02 13:42:41
【问题描述】:

所以我在一个解决方案中内置了一个非常基本的 TAPI 函数,它可以拨打给定号码的电话。我对 TAPI 代码不是特别强,想知道是否有任何方法可以使用 c# 函数记录电话长度?我最初的想法是,如果有一个呼叫开始和呼叫结束监视事件,我可以分别启动和结束一个计时器,但文档似乎很薄弱。

有人知道这是否可行,如果可以,怎么做?

谢谢,

瑞恩

当前代码:

全局变量:

TAPI3Lib.ITAddress line;

表单初始化代码:

 public Outbound()
    {
        InitializeComponent();
        #region TAPI Initialize
        TAPIClass tapi = new TAPIClass();
        tapi.Initialize();
        foreach (TAPI3Lib.ITAddress ad in (tapi.Addresses as TAPI3Lib.ITCollection))
        {
            line = ad;
        }
        tapi.EventFilter = (int)(TAPI_EVENT.TE_CALLNOTIFICATION | //All events you could need, probably
        TAPI3Lib.TAPI_EVENT.TE_CALLINFOCHANGE |
        TAPI3Lib.TAPI_EVENT.TE_DIGITEVENT |
        TAPI3Lib.TAPI_EVENT.TE_PHONEEVENT |
        TAPI3Lib.TAPI_EVENT.TE_CALLSTATE |
        TAPI3Lib.TAPI_EVENT.TE_GENERATEEVENT |
        TAPI3Lib.TAPI_EVENT.TE_GATHERDIGITS |
        TAPI3Lib.TAPI_EVENT.TE_REQUEST);
        tapi.ITTAPIEventNotification_Event_Event += new TAPI3Lib.ITTAPIEventNotification_EventEventHandler(tapi_ITTAPIEventNotification_Event_Event);
        #endregion
    }

TAPI 函数:

        private void btncall_Click(object sender, EventArgs e)
    {
        if (line == null) return;
        TAPI3Lib.ITBasicCallControl bc = line.CreateCall(txttelephone.Text, TAPI3Lib.TapiConstants.LINEADDRESSTYPE_PHONENUMBER, TAPI3Lib.TapiConstants.TAPIMEDIATYPE_AUDIO);
        bc.Connect(false);
    }

    private void tapi_ITTAPIEventNotification_Event_Event(TAPI_EVENT TapiEvent, object pEvent)
    {
        try
        {
            switch (TapiEvent)
            {
                case TAPI3Lib.TAPI_EVENT.TE_CALLNOTIFICATION:
                    TAPI3Lib.ITCallNotificationEvent cn = pEvent as TAPI3Lib.ITCallNotificationEvent;
                    if (cn.Call.CallState == TAPI3Lib.CALL_STATE.CS_OFFERING)
                    {
                        string c = cn.Call.get_CallInfoString(TAPI3Lib.CALLINFO_STRING.CIS_CALLERIDNUMBER);
                    }
                    break;
            }
        }
        catch (Exception ex)
        {
        }
    }

【问题讨论】:

  • 您用来拨打电话的代码是什么?很高兴看到这个例子。
  • 我现在添加它,它相当简单:)

标签: c# tapi


【解决方案1】:

已解决:所以我对文档进行了一些挖掘,我找到了一种方法。有一个名为TAPI3Lib.TAPI_EVENT.TE_CALLSTATE 的事件,如果您附加到观察者,则可以跟踪呼叫状态是否发生变化。所以,对我来说,这会在电话开始和电话结束时激活。我所要做的就是在这里控制一个带有标志的计时器,然后得到一个电话的长度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多