这在很大程度上取决于所使用的 PBX - 我使用过 Avaya 和 CallMedia 服务器。这两家公司都提供了一个小型桌面客户端和一个可以在代码中引用的 DLL。
最大的问题是一旦系统托盘应用程序收到事件通知网页。启动浏览器可能会很慢,并且对于呼叫处理来说不是良好的用户体验。更好的是保持浏览器打开并接收事件..
我工作的公司使用了一些非常过时的技术,所以他们有:
PBX --(XML)-- PBX System Tray Client --(COM)-- 我们自己的桌面应用程序 --(COM)-- 嵌入页面的 ActiveXControl --(Javascript)-- 网站框架酌情处理事件
如您所见,它相当长且令人费解 - 一种更优雅的方法是在页面上嵌入一个 silverlight/类似应用程序,该应用程序从系统托盘客户端接收事件(通过 Web 服务或类似服务?)
您还需要解决以下问题:a) 打开多个页面 - 是否都收到事件? b) 以后更换 PBX 不需要完全重写。
当我离开那家公司时,我们正在实施一种机制,我们的应用程序可以直接通过 XML 从 PBX 接收消息。 Silverlight 控制通过 2-Way WCF 向我们的桌面应用程序注册的任何/所有网页。然后我们让我们的桌面应用程序将适当的事件发送到适当的页面。
需要考虑的其他事项:您是否要处理混合频道?即可以处理电子邮件阻止来电事件?如果是这样,您需要某种双向通信来说“拒绝呼叫...”。您还需要注意代理的 telset 处于什么状态 - 如果您在完成保存数据之前进入“可用”状态,您可能会在记录所有内容之前浏览掉。此外,根据我的经验,代理真的很乐意按下 telset 上的按钮,而不是你的应用程序中的按钮 - 所以你需要处理意外的状态变化。
还可以考虑转移呼叫 - 大多数现代 PBX 允许呼叫转移以将 id 与呼叫相关联的方式发生 - 因此,如果是内部转移,则接收者的屏幕可以显示所有呼叫记录/等。
如果您能阐明什么是 PBX/等,我可以提供更多信息。您正在使用以及需要处理哪些事件
我建议您至少处理以下事件:
来电响起,
电话接听,
通话掉线,
来电转接
你应该能够加注:
接听电话,
拨打电话,
挂断电话,
转移呼叫(热转移和冷转移,如果是内部的,可以选择使用数据)
当然,这对您的解决方案来说可能有点矫枉过正 :)
编辑:我忘了补充一点,我们的解决方案还处理了在代理登录网络应用程序时登录/关闭 telset - 这提供了非常好的用户体验,但需要处理所有登录/注销变量以及维护 user->extension #
的查找表