在C#中通过TAPI应答电话线时拨打组织号码的第二部分

时间:2016-06-27 13:15:05

标签: c# tapi

我正在用C#开发TAPI技术的应用程序。

假设我想要打电话给拥有中央设备的组织。我想当目标机器接听电话线时,我的应用程序拨打第二个号码,该号码是该组织的内部号码。我不知道如何拨打第二个号码。

例如,我想拨打+1234567890,当电话线接听时,我想拨打101作为内部号码。我的应用程序拨打了号码的第一部分,但我不知道如何编写第二部分。

numberList = "001234567890#101".Split('#');

tapiManager = new TapiManager(ProjectName);
tapiManager.Initialize();
lineName = (tapiManager != null && tapiManager.Lines.Length > 0 ? tapiManager.Lines[0].Name : string.Empty);
tapiline = tapiManager.GetLineByName(lineName, true);

if (tapiline == null)
     tapiline = tapiManager.GetLineByName(lineName, true);

if (!tapiline.IsOpen)
     tapiline.Open(MediaModes.DataModem);

makeCallParams = new MakeCallParams();
makeCallParams.DialPause = 2000;

tapiCall = tapiline.MakeCall(numberList[0], null, makeCallParams);

如您所见,我的代码的最后一行拨打了第一个号码,但我找不到拨打第二个号码的方法。

关于我如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:0)

这在很大程度上取决于这个中央设备是什么以及它如何处理你的通话,所以我举几个例子:

  • 旧的(认为模拟)PBX / Appliance可能会在接听电话后接受任何数字。这可以通过在您的号码中包含暂停(通常是“。”或“,”或“p”)来实现“001234567890 ,,,,, 101”(警告:并非所有TAPI驱动程序都支持此操作)。有多少停顿真的取决于这个中央设备的速度,减少一部分数量太多,太多而且可能会挂断。
  • 专门为此类设置配置的IVR或PBX中继线应该只接受原始呼叫中的完整号码,剥去根号码“001234567890”并拨打“101”本身(删除“#”)
  • IVR /语音邮件或某些其他系统播放“您希望拨打哪个分机?”之类的消息。通常只在消息开始或结束后接受数字(允许插入或不允许插入)。检测语音非常困难,这里最好的选择就是猜测消息的持续时间,等待然后将“101”放在线路上。 (我不知道你正在使用的lib,但函数可能叫做GenerateDigits)