【问题标题】:Understanding how SIP, WebRTC and PSTN work together [closed]了解 SIP、WebRTC 和 PSTN 如何协同工作 [关闭]
【发布时间】:2014-01-25 20:34:54
【问题描述】:

我一直在学习有关 WebRTC、SIP 和 PSTN 以及它们如何协同工作的更多信息,尤其是在浏览器中接听电话的能力。我在 Twilio 的网站上花了一些时间,我喜欢他们能够让您从 PSTN 接听电话到您的浏览器的方式。

我想了解他们如何能够让某人拨打普通的 PSTN 电话号码并将呼叫定向到网络浏览器。

我遇到了this question 并得到了一些了解,但我仍然缺少一些东西。

为了澄清我的问题,让我们采取以下情况:

第一部分

假设我住在伦敦,有自己的 SIP 服务器和 SIP 帐户,并且有一个 PSTN 电话号码,并且该号码已映射到 SIP 帐户。现在我希望能够在我的浏览器中接听来自世界各地的电话。当人们拨打 PSTN 号码时,电话会通过我的电信提供商。那么这些调用是如何到达我的浏览器的呢?我必须先将我的 SIP 服务器连接到电信提供商系统,然后才能将呼叫定向到我的浏览器?

这是否意味着为了能够将呼叫定向到浏览器,电信公司系统必须知道对于这个特定的 PSTN 号码,呼叫必须到达我的 SIP 服务器或类似的东西?

我想知道调用到我的浏览器所发生的所有步骤,包括介于两者之间的软件和(可能是硬件)。

第二部分

Twilio 将本地号码提供给需要的人。我了解 Twilio 与电信公司签署协议以获得这些数字。 Twilio 系统是否会在所有这些电信公司系统能够直接调用用户的浏览器之前连接到所有这些电信公司系统?

【问题讨论】:

    标签: sip voip webrtc telephony


    【解决方案1】:

    艾迪,

    我会说您的问题可以拆分为所需的 2 个技术解决方案。 首先 - 从 PSTN 接到 WebRTC 的电话 第二 - 浏览器上的来电

    从 PSTN 向 WebRTC 拨打电话

    执行此操作需要网关 (GW)。在这个事实中,WebRTC 并没有什么特别之处。将 PSTN 呼叫接入任何 VoIP 网络(SIP、H.323、专有)将需要终止 PSTN 呼叫并初始化 VoIP 呼叫。对于 WebRTC 有一些特殊要求,例如安全性、WebSockets、Opus 9 或 G.711,这是常见的)。 另一个特别之处是 WebRTC 没有指定信令。您可以使用 SIP,但许多只是使用简单的专有信令。这就是为什么许多解决方案创建了一种 GW 和 WebRTC 客户端的端到端解决方案。

    浏览器来电

    这是一个更复杂的要求,它实际上取决于您拥有的整体应用程序。 如果您的浏览器未运行,则没有简单的方法可以接听来电。解决方案可能是您让用户安装的一些小型应用程序,它会启动浏览器,但您会错过无需安装的优势,但它比完整的客户端安装要好,后者需要比这个小型启动器应用程序更多的更新。 另一种情况是用户正在浏览您的网站,您看到他遇到了麻烦或想买东西(或选择任何其他用例),而您要求他接听来电。这是一个更简单的情况,因为您的 JS 已经在运行。 如前所述,这完全取决于具体的应用和场景。

    阿米尔

    【讨论】:

      【解决方案2】:

      让我们首先看一下语音环境架构中的元素,包括 SIP 和向 PSTN 的分支。

      • 语音开关:这将是您的软开关/SIP 服务器。它可以提供路由、媒体和应用服务。您的用户将注册到此,或者可能通过代理/SBC 到此节点。该节点甚至可以有 webRTC 模块/节点,也可以是独立的。
      • PSTN 网关:这也可能包含在上述软交换中。它允许您的 SIP 呼叫从您的环境中断到外部世界(PSTN、GSM 等)。

      这可以通过以下之一或两者来实现:

      • SIP 中继:这是您的 PSTNGW 或软交换机通过 SIP 与 CSP/电信提供商之间的 SIP 互连。您将任何外部呼叫发送到 SIP 中继,CSP 将连接到世界其他地方。他们会向您收取每次通话费用。
      • 您可以通过将模拟、GSM、SS7、ISDN 卡插入软交换机或 GW 来建立自己的 PSTN 分线。然后外部呼叫将遍历这些外部网络。

      现在,您的一个 SIP 用户向 PSTN 发出的出站呼叫将到达软交换机,并通过 SIP 中继或 PSTN GW 将其路由出去。对于来自 PSTN 的呼入电话,它将通过 SIP 中继或 PSTN GW 进入,软交换机会将其路由到您的用户。您的用户可以是标准注册 SIP 用户,也可以是 webRTC 用户。无论哪种方式,都可以将呼叫路由给他。

      在你的例子中:

      第一部分::: 您需要通过 SIP 中继或 ISDN/GSM/模拟连接将您的 SIP 服务器/软交换机连接到您的提供商。对于 SIP 中继,提供商会从他们的范围内为您提供一个 DID 号码,并将其映射到您的 SIP 中继。对该号码的任何呼叫都将通过 SIP 中继发送到您的 SIP 服务器。一旦它到达您的 SIP 服务器,您就可以轻松地将其发送给任何 SIP 或 webRTC 用户。您的 SIP 服务器很容易成为一个 Asterisk 盒子,运行这些模块:

      • SIPML5 用于 WebTRC
      • 用于 PSTN 分支的 libPRI 或 DAHDI

      第二部分::: Twilio 要么通过 SS7 或 SIP 与电信公司建立自己的互连,要么与电信公司合作提供突破。

      【讨论】:

      • 感谢您的回答。它为收到的答案增加了额外的洞察力
      【解决方案3】:

      对于 SIP 代理(无论是 VOIP 电话还是带有 SIP Websockets 的 WebRTC)之间的相互通信,我们需要一个 PSTN 网关,它主要由 3 个组件组成:MGC(媒体网关控制器)用于控制,SGW(信令网关)用于转换信号 ISUP从 PSTN 到 SIP,MGW(媒体网关控制器)用于将媒体从 G711 /G729 转换为 Opus / vp8。

      至于号码转换,电信服务提供商维护一个 ENUM 基础,用于将 sipuri 映射到电话号码。万一您是 OTT 玩家,您应该进行一次性验证/输入以存储映射值。

      我无法评论 twilio 的流程,因为我不知道他们做什么,但架构指南使用网关在 IP 世界和 GSM/UMTS/PSTN 世界之间进行互连。

      【讨论】:

      • 感谢您的回答
      【解决方案4】:

      您可以使用 plivo Web SDK 开发您的应用。这样您就不必担心电信提供商或服务器。在这里查看https://plivo.com/docs/sdk/web/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-19
        • 2019-01-16
        • 1970-01-01
        • 2021-08-21
        • 2015-12-26
        • 2011-02-26
        • 1970-01-01
        • 2016-07-08
        相关资源
        最近更新 更多