【问题标题】:Open a web page when I receive an incoming call接到来电时打开网页
【发布时间】:2010-08-24 17:49:16
【问题描述】:

我们有一个 Web 应用程序,人们问我们是否可以在他们的 PBX 上接到来电时弹出屏幕。

我认为最简单的方法是在系统托盘中放置一个小应用程序,并使用 TAPI 或 TSAPI 等待调用。当有来电时,它会打开一个指向配置 URL 的网页,并将呼叫者 ID 作为参数传递。

这样的应用程序是否存在于某处?

附:任何人都知道Simple Computer Telephony Protocol 发生了什么

【问题讨论】:

    标签: web-applications telephony


    【解决方案1】:

    这在很大程度上取决于所使用的 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 #

    的查找表

    【讨论】:

    • 感谢您的回答。问题是我们想要支持我们的客户 PBX 系统,不管它们是什么。也许更好的方法是询问“哪些电话系统提供了可以在接到电话时打开网页的应用程序?”
    • 据我所知,没有一致的跨 PBX 方式来实现这一点。许多系统不将 TAPI/TSAPI 消息传递给客户端 PC(有些甚至不使用它们自己的内部机制传递给客户端 telset)。因此,没有要拦截的通用事件。您还需要询问如果客户端使用 Skype/软件 VOIP 会发生什么。如果您找到答案,我很想知道您是如何做到的,但我认为如果您能找到任何工作,您将面临一个非常复杂的解决方案。
    • 当然,您可以编写一个通用的系统托盘应用程序,它可以处理多个 PBX 并以模块化方式添加对每个 enw PBX 的支持 - 然后您会在您的应用程序中获得一组标准化的事件,并且您可以从小处着手并根据需要进行扩展。您的方法的另一个问题是处理与通用接口不匹配的事件 - 所以一些 PBX 将发送“呼叫已传递”,其他将发送“呼叫提供”等......有些包括呼叫者 ID,有些还具有 IVR /嵌入队列信息中的时间。您可能可以提取您想要的数据,但它可能又是一团糟
    • 我只是惊讶于一个通用的系统托盘应用程序,或用于不同 PBX 的许多不同的应用程序不存在。 NCID 似乎是这样一个系统的框架,但似乎是针对拥有旧调制解调器的家庭用户,他们可以用作来电显示 -> 串行适配器。它还需要一个 linux 服务器。
    • 我不能肯定它不存在,只是我没有遇到过 - 我多年来一直在为呼叫中心等编写软件,但你可能可以从我的回答中可以看出,我们使用了相当复杂的集成。我认为问题基本上归结为 PBX 和客户端 PC 之间的通信是非标准的。每个供应商都有自己的转折点——我们还依赖于截获从 PC(或类似设备)发送到 TelSet 的事件——所以我们要么需要接收并解释非标准通信,要么依赖通知。祝你好运:)
    【解决方案2】:

    NCID (Network Caller ID) 是一个 Sourceforge 项目,似乎是我想要的那种东西,但它依赖于 linux 服务器,并且似乎只支持来自连接到串行端口的调制解调器的呼叫者 ID,或通过嗅探 SIP 数据包通过服务器的以太网接口。它不支持任何带有 TAPI 或类似功能的 PBX 系统,因为它仅在 Linux 上运行。

    连接到服务器 NCIDpop 的客户端应用程序完全符合我的要求 - 它可以使用 URL 字符串查找一个数字,并在您单击它时打开一个网页。

    这对我来说并不完全是答案,但可能对其他人发现此问题有用。

    【讨论】:

    • 有趣 - 如果您正在考虑使用专用服务器路线,您可能会从 Asterisk 获得一些里程 - 我自己没有使用太多,但相信它是高度可定制的 - 也许你可以坐它在PBX 和代理之间?它可能会为您提供所需的抽象层
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 2011-12-27
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    相关资源
    最近更新 更多