我正在处理一个私人呼叫者的情况,其中Privacy报头只在初始的INVITE中传递,而不在随后的中间对话请求中传递(例如,取消)。
当Privacy报头存在时,我的下游希望我向他们发送另一个报头。
在大多数情况下,我能够通过使用dlg模块来跟踪对话中的状态来处理这个问题,这样对话中的请求就会知道Privacy头在初始INVITE中的存在。
但是,我遇到的一个问题是,仅对于取消请求,我无法向转发到下游的SIP请求添加任何标头。
我在其他帖子中读到过(几年前),一种选择是在下游使用无状态取消。另一个可能的选择是在我的级别上开始一个新的交易。
我想知道是否还有其他的替代方案。我会建议我的下游使用$avp,但似乎即使初始INVITE和CANCEL应该在同一事务中,初始INVITE中存储的$avp值也不能被取消访问。
还有其他一些技巧可以奏效。例如使用Record-Route作为数据存储(这可能是安全问题),或者要求下游使用dlg模块,这可能会对性能造成很大的影响。
我想知道你们中是否有人已经解决了这个问题。
发布于 2019-04-18 18:05:26
而不是对话模块,我更喜欢使用htable来存储事务,直到获得ACK。它比它更快。在获得ACK后,可以删除存储的事务。
此外,您还可以查看具有Cancel特性的TM module和TMX module。
https://stackoverflow.com/questions/55741832
复制相似问题