2015-09-02 30 views
0

因此,我內置了一個非常基本的TAPI功能,可以打電話給一個給定的號碼。我對TAPI代碼並不特別強,並且想知道是否有任何方法可以使用c#函數記錄電話長度?我最初的想法是,如果有一個電話開始和通話結束的觀看事件,我可以分別開始和結束一個計時器,但文件似乎在冰面上很薄。C# - 使用TAPI(特別是TAPI3Lib)記錄電話長度

有人知道這是否可能,如果是這樣,如何?

感謝,

瑞安

目前代碼:

全局變量:

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 Func鍵tions:

 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) 
     { 
     } 
    } 
+0

你用來打這個電話的代碼是什麼?很高興看到這個例子。 –

+0

我現在添加它,它相當簡單:) –

回答

0

解決:所以我做了一些挖掘文檔,我找到了一種方法。有一個事件叫TAPI3Lib.TAPI_EVENT.TE_CALLSTATE,如果你附加到一個觀察者,可以跟蹤呼叫狀態是否改變。所以,對於我來說,當一個電話開始並且一個電話結束時,它被激活。我所要做的就是在這裏控制一個帶有標記的計時器,並且生病得到一個電話長度。