我有一个关于使用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
据我所知,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
我需要弄清楚为了实现这个目标需要什么:
提供这种集成方式的是提供商,我对它的了解太少。 我弄清楚的是,Twilio无法帮助我解决这个问题。所以看起来我必须在内部采取一部分解决方案。
答案 0 :(得分:1)
如果您的终端或终端属于VoIP提供商的域,则需要注册。
REGISTER记录VoIP提供商提供给您的身份与您将收听请求的实际地址和端口之间的映射。
这样,发送给您的电话(sip:myuserid@voip.domain.com)将由VoIP提供商发送到它为您提供的记录地址。
如果您自己是VoIP提供商(即您有一个sip:myuserid@myowndomain.com),那么您的 peer voip提供商将根据DNS记录或基于内部域的路由将请求路由到您路由决策。一旦呼叫到达您,您就可以决定如何处理它。如果您是真正的SIP提供商,那么您将拥有一个注册商,您可以在其中存储不同用户的REGISTER结果。
如果你想在你的端子上实现一些应用程序逻辑,你有不同的选择:
最简单的方法是实现UAC / UAS,基本上是一个终端。您的应用 终端,它向VoIP提供商注册并接收您的所有电话。您只需要SIP堆栈,您可以通过呼叫执行任何操作。
使用PBX软件。基本上它会为您处理正常呼叫,并在需要时处理REGISTER。通常,他们会使用API来执行某种程度的自动化/修改呼叫处理。
方法之间的差异,在第一种情况下,你只有协议,所以你必须做一切其他。在第二种情况下,目标是处理正常呼叫,它们将为您提供一些窗口(更小或更大)以查看这些呼叫并使用它进行操作。