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)
{
}
}
你用來打這個電話的代碼是什麼?很高興看到這個例子。 –
我現在添加它,它相當簡單:) –