2

我目前正在开发一个基于 TAPI 的应用程序,以便使用我们的 Cisco IP 电话系统向我们呼叫中心的座席提供“智能呼叫者 ID”。当有电话打进来并且代理在其工作站的“真实”电话上接听电话时,位于工作站系统托盘中的应用程序会获取呼叫远程端的号码,并通过中央数据库运行它查看该号码是否属于我们的客户公司之一或其代表。如果是这样,我们会显示代理现在正在与谁交谈的信息(个人或客户位置名称、公司、职位等)。

我使用 Julmar 优秀的ATAPI库开发了一个概念证明来监控我隔间的电话,并且让它运行良好。但是,代理商的电话有很大的不同;它们插入一个边车模块,另外还有 14 个分机连接到我们的 1-800 寻线。

我现在遇到的问题是,我不仅需要知道何时连接了呼叫,还需要知道它何时连接到我正在监控的单个电话,该电话位于运行应用程序的工作站下方。目前,我可以看到所有 800 条线路上的线路状态变化,但我无法判断哪些线路状态变化是我正在监控的电话设备操作的直接结果;显然我可以监控电话状态和线路状态的变化,但是如果两个座席几乎同时接听两个在 800 块上响铃的电话,我就无法分辨哪个电话接听了哪个电话。

该信息必须在 TAPI 接口中的某处可用,如果可能没有被 ATAPI 包装的话。任何关于我应该看什么的提示,希望来自以前做过这件事的人,都会受到赞赏。

4

1 回答 1

4

我找到了解决办法。

ATAPI 库对于那些只想插入并使用的人来说有点虚伪。TapiLine 的 CallStateChanged 事件,当您挂接到连接的呼叫时,它使用一个接受 CallStateEventArgs 作为 EventArgs 参数的委托。然而,事实证明 CallStateEventArgs 是一个基类。功能齐全,但并非适用于所有情况。

连接呼叫时实际传递给事件的是 ConnectedCallStateEventArgs 实例。这个派生类不仅公开了基类的新旧 CallStates,还公开了 Cisco 文档中引用的“呼叫状态模式”,使用 ConnectModes 枚举类型的 Mode 只读字段。

从 Cisco 文档中,如果您正在监控共享线路(例如来自 800 块),并且该线路上的呼叫被与您正在监控的线路实例关联的电话接听或加入,则呼叫状态模式将为“LINECONNECTEDMODE_ACTIVE”。如果您的电话不是通话方,则为“LINECONNECTEDMODE_INACTIVE”。如果线路未共享,则线路上任何已连接呼叫的连接模式将为零(ATAPI 库中的“无”;如果您获得此值,则假设您的电话是呼叫的一方)。

使用这条附加信息,可以知道与线路关联的电话实际上正在通话中。对于您使用可以访问该线路的 TAPI 实例监控的每部电话,您将获得该特定 800 块线路的一个线路实例,因此您可以知道您正在监视的两部、三部或十部电话中的哪一部接到了电话。如果您没有在一台计算机/TAPI 实例上监控多部手机,和/或您正在监控的任何手机上的呼叫均未激活,则您无法判断哪部手机呼叫;只是你的手机没有

对我而言足够了; 代理只需要知道他们在与谁交谈,而不是其他任何人。如果我们需要一个用于监控所有 20 部具有 800 块的电话的楼层经理办公桌的帐户,我们可以稍后处理。

于 2012-12-13T18:18:49.980 回答