我在ubuntu 16.04上运行的python中开发了一个SIP客户端它注册,它可以接听电话和录音等等。一切都很好。然而,它没有正确地取消注册(即我没有得到expails = 0的SIP REGISTER出去),这导致网络出现问题(他们认为我的客户端是滥用用户并暂时阻止它)。
我想在逻辑结束时清理注册。
这是我用来注册的代码:
proxy_cfg = self.core.create_proxy_config()
address = self.core.create_address ("sip:" + username + "@" + self.cfg_sip_domain)
address.port = self.cfg_sip_port
proxy_cfg.identity_address = address
proxy_cfg.server_addr = self.cfg_sip_proxy
proxy_cfg.register_enabled = True
self.core.add_proxy_config(proxy_cfg)
self.core.default_proxy_config = proxy_cfg
auth_info = self.core.create_auth_info(username, None, password, None, None, self.cfg_sip_domain)
self.core.add_auth_info(auth_info)
这是我用来取消注册的代码。我尝试了2种组合,将register_enabled设置为False并设置为True,始终使用expires = 0.但是没有SIP消息出现:
self.core.default_proxy_config.edit()
self.core.default_proxy_config.register_enabled = True
self.core.default_proxy_config.expires = 0
self.core.default_proxy_config.done()
谢谢你的帮助,Ester
我尝试了以下它,它的工作原理。我不认为它在API中非常直观。根据docs refresh_register()方法在下一次迭代中触发到一个新的REGISTER,它将注册expires = 0 .....
self.core.default_proxy_config.edit()
self.core.default_proxy_config.expires = 0
self.core.default_proxy_config.refresh_register()
self.core.default_proxy_config.done()