如何使用REGISTER SIP实现集成



我有一个关于使用SIP与电话公司(提供商)集成的问题。

我遇到了一种情况:

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

据我所知,提供商和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解决方案,需要哪些功能/模块?我必须在我的服务器上托管它吗
  4. 也许我不需要PBX解决方案,这里描述的库就足够了

是提供商在推动这种集成方式,而我对此知之甚少。我发现Twilio帮不了我。所以看起来我必须在内部参与解决方案。

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

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

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

如果您自己是VoIP提供商(即您有一口:myuserid@myowndomain.com),则您的对等voip提供商将根据DNS记录或基于内部域的路由决策将请求路由到您。一旦你接到电话,你就可以决定如何处理。如果你是一个真正的SIP提供商,那么你会有一个注册器,你可以在那里存储不同用户的REGISTER结果。

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

  • 最简单的方法是实现UAC/UAS,基本上是一个终端。您的应用程序终端,它向VoIP提供商注册并接收您的所有呼叫。您只需要SIP堆栈,就可以使用该调用执行任何您想要的操作。

  • 使用PBX软件。基本上,它将为您处理正常呼叫,并在需要时处理REGISTER。通常,他们会有API来执行一定程度的调用处理自动化/修改。

方法之间的区别,在第一种情况下,您只有协议,所以您必须执行所有其他操作。在第二种情况下,目标是处理正常的呼叫,他们会为您提供一些窗口(更小或更大)来查看这些呼叫并处理它

最新更新