Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在SIP中注册后检查INVITE_C#_Sip_Voip_Pjsip_Pjsua2 - Fatal编程技术网

C# 在SIP中注册后检查INVITE

C# 在SIP中注册后检查INVITE,c#,sip,voip,pjsip,pjsua2,C#,Sip,Voip,Pjsip,Pjsua2,我一直在用PJSIP开发C#Xamarin应用程序,遇到了一个小(或大)障碍。我目前设置的系统是,用户将收到来电通知,允许他们单击通知并打开应用程序。然后,应用程序将使用SIP凭据向SIP服务器注册,理想情况下会收到一条INVITE消息,允许他们接听来电。然而,这根本不是它的工作原理。如果在发送INVITE之前已向SIP服务器注册应用程序,则可以正常接收呼叫。但是,如果在发送邀请后注册了应用程序,则客户端将永远无法接收或识别该应用程序。有没有办法使用SIP手动检查INVITE消息,或者这是一项根

我一直在用PJSIP开发C#Xamarin应用程序,遇到了一个小(或大)障碍。我目前设置的系统是,用户将收到来电通知,允许他们单击通知并打开应用程序。然后,应用程序将使用SIP凭据向SIP服务器注册,理想情况下会收到一条INVITE消息,允许他们接听来电。然而,这根本不是它的工作原理。如果在发送INVITE之前已向SIP服务器注册应用程序,则可以正常接收呼叫。但是,如果在发送邀请后注册了应用程序,则客户端将永远无法接收或识别该应用程序。有没有办法使用SIP手动检查INVITE消息,或者这是一项根本不存在的功能?

问题在于SIP注册方法的工作原理

SIP注册方法的目的是让SIP服务器知道在哪里可以到达该用户——它应该将SIP INVITE发送到哪个IP地址和端口

如果您尚未注册,您的SIP服务器将不知道在需要呼叫时将SIP INVITE发送到整个internet中的哪个IP地址

虽然您可以将应用程序设置为侦听传入的SIP邀请,但这很好,服务器仍需要知道要将其发送到哪个IP地址和端口,因此您需要另一种机制来告诉此SIP服务器要将SIP邀请发送到哪个IP地址和端口,但这是SIP寄存器设置要解决的问题,所以使用SIP寄存器功能可能是最简单的


问题在于SIP寄存器方法的工作原理

SIP注册方法的目的是让SIP服务器知道在哪里可以到达该用户——它应该将SIP INVITE发送到哪个IP地址和端口

如果您尚未注册,您的SIP服务器将不知道在需要呼叫时将SIP INVITE发送到整个internet中的哪个IP地址

虽然您可以将应用程序设置为侦听传入的SIP邀请,但这很好,服务器仍需要知道要将其发送到哪个IP地址和端口,因此您需要另一种机制来告诉此SIP服务器要将SIP邀请发送到哪个IP地址和端口,但这是SIP寄存器设置要解决的问题,所以使用SIP寄存器功能可能是最简单的


当SIP服务器接收到传入呼叫(邀请消息)时,它需要知道将其转发到何处。这就是应用程序需要在服务器上注册的原因:这将创建SIPURI(用户)与其联系地址(IP)之间的映射。当SIP服务器收到INVITE时,它会检查消息的请求URI的映射是否存在,如果存在,则将消息转发到相应的联系人地址

如果在SIP服务器接收INVITE消息时不存在映射,SIP服务器将通过返回最终响应(如404 Not Found)来结束INVITE事务。您的客户不会收到收到邀请消息的通知


如果您有权访问SIP服务器,则可以在SIP服务器中创建应用程序的URI与其联系地址之间的静态映射。这意味着您的应用程序将不再需要注册。它不是很灵活,但在这种情况下它会帮助你。但是请注意,当使用静态映射时,SIP服务器可能总是转发传入的INVITE消息。即使应用程序未运行。

当SIP服务器接收到传入呼叫(邀请消息)时,它需要知道将其转发到何处。这就是应用程序需要在服务器上注册的原因:这将创建SIPURI(用户)与其联系地址(IP)之间的映射。当SIP服务器收到INVITE时,它会检查消息的请求URI的映射是否存在,如果存在,则将消息转发到相应的联系人地址

如果在SIP服务器接收INVITE消息时不存在映射,SIP服务器将通过返回最终响应(如404 Not Found)来结束INVITE事务。您的客户不会收到收到邀请消息的通知

如果您有权访问SIP服务器,则可以在SIP服务器中创建应用程序的URI与其联系地址之间的静态映射。这意味着您的应用程序将不再需要注册。它不是很灵活,但在这种情况下它会帮助你。但是请注意,当使用静态映射时,SIP服务器可能总是转发传入的INVITE消息。即使应用程序没有运行