有没有一种SIP/VOIP不可知的方法可以知道手机何时离线?

有没有一种SIP/VOIP不可知的方法可以知道手机何时离线?,sip,voip,Sip,Voip,在需要监控电话呼叫活动/状态的SIP应用程序上工作。我的应用程序(UA)已在代理服务器上注册,被监控的手机也是如此。我利用订阅/通知消息告诉手机我想知道它的“对话”事件,一旦订阅,它就可以正常工作。我遇到了两个问题: 我请求的订阅长度为900秒,并且一直从手机上收到4000秒以上的荒谬回复 当订阅处于活动状态时,手机可能会被拔下(不要问,但这是可能的)。当这种情况发生时,我不会收到任何类型的关于手机不再可用的通知。因此,我必须等待我的订阅超时,尝试并续订它,处理失败,并创建一个新的订阅 我意识到

在需要监控电话呼叫活动/状态的SIP应用程序上工作。我的应用程序(UA)已在代理服务器上注册,被监控的手机也是如此。我利用订阅/通知消息告诉手机我想知道它的“对话”事件,一旦订阅,它就可以正常工作。我遇到了两个问题:

  • 我请求的订阅长度为900秒,并且一直从手机上收到4000秒以上的荒谬回复

  • 当订阅处于活动状态时,手机可能会被拔下(不要问,但这是可能的)。当这种情况发生时,我不会收到任何类型的关于手机不再可用的通知。因此,我必须等待我的订阅超时,尝试并续订它,处理失败,并创建一个新的订阅

  • 我意识到我可以在订阅到期之前更新订阅,但是有更好的方法吗?例如,我是否能够获取“状态”事件并使用它们来知道手机何时在那里?那些事件总是保证在电话启动时发生,即使如此,因为中间有代理,我会得到通知,还是我仍然不知道电话重新启动,并且不再识别我的订阅?这些“状态”更新是我可以向代理请求的吗


    任何洞察都是伟大的;目前,我只想尝试以更小的时间间隔刷新订阅,但我很想知道是否有更好的方法。提前感谢。

    我不知道SIP不可知的方式,除了可能以某种方式ping电话之外,但肯定有一种SIP方式来实现状态,即使用与对话框相同的订阅/通知模式,但在本例中用于状态。相关标准如下所示


    通常,状态通知将由SIP注册器生成,并且由于您说您的手机正在向您的代理注册,因此还必须内置注册器。当另一部手机的注册状态发生变化时,例如当它第一次联机或无法重新注册时,注册官会通知您的UA。至于手机“消失”和注册服务器检测到它之间的延迟,没有规定的方法。您可以等待注册期到期,并在手机注册失败时将其标记为脱机,或者服务器可以主动向手机发送数据包,甚至SIP请求,如选项请求,并在收到故障响应时将其标记为脱机,Asterisk使用后一种方法。

    我不知道SIP不可知的方法,除了可能以某种方式ping电话之外,但肯定有一种SIP方法来实现状态,即使用与对话框相同的订阅/通知模式,但在本例中用于状态。相关标准如下所示


    通常,状态通知将由SIP注册器生成,并且由于您说您的手机正在向您的代理注册,因此还必须内置注册器。当另一部手机的注册状态发生变化时,例如当它第一次联机或无法重新注册时,注册官会通知您的UA。至于手机“消失”和注册服务器检测到它之间的延迟,没有规定的方法。您可以等待注册期到期,并在手机注册失败时将其标记为脱机,或者服务器可以主动向手机发送数据包,甚至SIP请求,如选项请求,并在收到故障响应时将其标记为脱机,Asterisk使用后一种方法。

    当SIP UAC客户端向SIP UAS注册器注册时,SIP客户端提供一个到期报头,该报头指示SIP客户端需要重新注册自身的最长时间。如果SIP客户端在此时间段内未重新注册自身,则SIP UAS代理/注册服务器会将客户端标记为已断开连接


    像FreePBX和Asterisk这样的专有SIP包主动地以一定间隔连续地向客户端发送SIP选项,其中客户端以OK进行响应。这是一种更主动的验证SIP客户端是否在线的方法;但是,该技术是专有的,不是实际SIP规范的一部分。

    当SIP UAC客户端向SIP UAS注册器注册时,SIP客户端提供一个到期报头,该报头指示SIP客户端需要重新注册自身的最长时间。如果SIP客户端在此时间段内未重新注册自身,则SIP UAS代理/注册服务器会将客户端标记为已断开连接


    像FreePBX和Asterisk这样的专有SIP包主动地以一定间隔连续地向客户端发送SIP选项,其中客户端以OK进行响应。这是一种更主动的验证SIP客户端是否在线的方法;然而,这种技术是专有的,不是实际SIP规范的一部分。

    非常好。一直在调查出席请求;找到了我将收到的通知的描述,但没有在订阅中找到要发送的内容(无论如何,没有详细说明)。也许偶尔一声“ping”就足够了;我也会查一查。谢谢你的帮助。选项“ping”效果很好。我可以通过一个选项请求每分钟监控一次手机,看看我是否能得到除200响应码以外的任何信息。将不得不对其进行调整,使其做好生产准备,但迄今为止显示出有希望的结果。选项Ping是一个粗糙但有效的措施。选项请求从来没有打算用于这种类型的目的,但是很难找到一个SIP堆栈来实际处理请求,因为它被指定为与INVITE和r类似的处理方式