如何使用REGISTER SIP实现集成?

How to implement integration using REGISTER SIP?

我对使用 SIP 与 phone 公司(提供商)集成有疑问。

我有一个情况:

1. A call is made to a PSTN number
2. The Provider forwards the call to a SIP Gateway
3. Twilio is the SIP Gateway, so I receive an HTTP request for every new call 
4. I execute my application logic

据我所知,Provider 和 Twilio 之间的 SIP 集成是使用 SIP INVITE.

完成的

现在面临的挑战是使用 SIP REGISTER 实施集成。 按照我的想象,场景应该是这样的:

1. I register against the Provider using SIP REGISTER
2. A call is made to a PSTN number
3. The Provider gives me the call
4. I execute my application logic

我需要弄清楚完成此任务需要什么:

  1. 首先,这个场景有意义吗?
  2. 我是否需要使用 PBX 解决方案(如 Asterisk, FreeSwitch)来实施 SIP REGISTER 并在其上构建我的应用程序?
  3. 如果是,您推荐哪种 PBX 解决方案,需要哪种 features/modules?我必须将它托管在我的服务器上吗?
  4. 也许我不需要 PBX 解决方案,一个库就足够了 here?

这种集成方式是Provider在推的,我了解的太少了。 我发现 Twilio 无法帮助我解决这个问题。所以看起来我必须在内部参与解决方案。

如果您的一个或多个终端属于 VoIP 提供商的域,则需要注册。

REGISTER 记录 VoIP 提供商提供给您的身份与您将侦听请求的实际地址和端口之间的映射。

这样,打给您 (sip:myuserid@voip.domain.com) 的电话将由 VoIP 提供商发送到它为您记录的地址。

如果您自己是 VoIP 提供商(即您有 sip:myuserid@myowndomain.com),那么您的 peer voip 提供商会将请求路由给您基于 DNS 记录或基于内部域的路由决策。一旦电话到达您,您就可以决定如何处理它。如果您是真正的 SIP 提供商,那么您将拥有一个注册器,您可以在其中存储不同用户的注册结果。

如果您想在您的终端实现一些应用程序逻辑,您有不同的选择:

  • 最简单的方法是实现一个 UAC/UAS,基本上是一个终端。您的应用程序 终端,它向 VoIP 提供商注册并接收您的所有呼叫。您只需要 SIP 堆栈,您可以随心所欲地进行调用。

  • 使用 PBX 软件。基本上它会为您处理正常的呼叫,并在需要时处理注册。通常他们会有 API 来执行某种程度的 automation/modification 呼叫处理。

方法之间的区别,在第一种情况下,您只有协议,所以您必须一切。在第二种情况下,objective 用于处理正常呼叫,他们会为您提供一些 window(更小或更大)来查看这些呼叫并对其进行操作。