使用Tapi在C#中建立固定电话
我一直在尝试使用C#制作一个呼叫应用程序,它使我能够通过带有调制解调器的PC拨打固定电话。我找到了ATAPI和TAPI,但到目前为止,我无法与这些库打电话。有人能给我打电话和聊天的示例代码吗? 到目前为止,我已设法找到调制解调器,但我无法接收来电号码或应答,也无法拨打完整的电话(通话和接收数据)使用Tapi在C#中建立固定电话,c#,.net,modem,phone-call,tapi,C#,.net,Modem,Phone Call,Tapi,我一直在尝试使用C#制作一个呼叫应用程序,它使我能够通过带有调制解调器的PC拨打固定电话。我找到了ATAPI和TAPI,但到目前为止,我无法与这些库打电话。有人能给我打电话和聊天的示例代码吗? 到目前为止,我已设法找到调制解调器,但我无法接收来电号码或应答,也无法拨打完整的电话(通话和接收数据) 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 使用System.Threading.Tasks; 使用System.IO.Port
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.IO.Ports;
使用JulMar.Atapi;
命名空间公司x_Libaray
{
班级计划
{
公共静态void Main()
{
TapiManager a=新的TapiManager(“测试”);
a、 初始化();
String modem=“Conexant USB CX93010 ACF modem”;
TapiLine li=null;
TapiLine[]l=a.线;
foreach(l中的TapiLine线)
{
Console.WriteLine(line.ToString());
if(line.ToString().Equals(调制解调器))
{
li=直线;
打破
}
}
li.Open(MediaModes.DataModem);
//li.Ringing+=新事件处理程序(li_Ringing);
//li.CallInfo更改+=新事件处理程序(li_CallInfo更改);
//li.Changed+=新事件处理程序(li_Changed);
li.NewCall+=li_NewCall;
}
静态void li_NewCall(对象发送方,NewCallEventArgs e)
{
Console.WriteLine(e.Call.CalledName);
Console.WriteLine(e.Call.CalledId);
Console.WriteLine(e.Call.CallerId);
Console.WriteLine(e.Call.CallerName);
Console.WriteLine(如Call.CallData);
控制台写入线(如呼叫地址);
Console.WriteLine(如Call.ConnecteId);
Console.WriteLine(如Call.ConnectedName);
Console.WriteLine(即Call.RelatedId);
控制台写入线(如Call.Id);
Console.WriteLine(e.Call.CallOrigin);
}
}
}
如果您对拨号命令感兴趣,应执行以下步骤:-
- 找到线路
- 以支持的模式打开该行
- 执行MakeCall命令 li.MakeCall(拨号号码)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;
using JulMar.Atapi;
namespace CompanyX_Libaray
{
class Program
{
public static void Main()
{
TapiManager a = new TapiManager("test");
a.Initialize();
String modem = "Conexant USB CX93010 ACF Modem";
TapiLine li=null;
TapiLine[] l = a.Lines;
foreach (TapiLine line in l)
{
Console.WriteLine(line.ToString());
if (line.ToString().Equals(modem))
{
li = line;
break;
}
}
li.Open(MediaModes.DataModem);
//li.Ringing += new EventHandler<RingEventArgs>(li_Ringing);
//li.CallInfoChanged += new EventHandler<CallInfoChangeEventArgs>(li_CallInfoChanged);
//li.Changed += new EventHandler<LineInfoChangeEventArgs>(li_Changed);
li.NewCall += li_NewCall;
}
static void li_NewCall(object sender, NewCallEventArgs e)
{
Console.WriteLine(e.Call.CalledName);
Console.WriteLine(e.Call.CalledId);
Console.WriteLine(e.Call.CallerId);
Console.WriteLine(e.Call.CallerName);
Console.WriteLine(e.Call.CallData);
Console.WriteLine(e.Call.Address);
Console.WriteLine(e.Call.ConnectedId);
Console.WriteLine(e.Call.ConnectedName);
Console.WriteLine(e.Call.RelatedId);
Console.WriteLine(e.Call.Id);
Console.WriteLine(e.Call.CallOrigin);
}
}
}