
On 20.06.18 09:33, Alex Balashov wrote:
On Wed, Jun 20, 2018 at 09:33:49AM +0200, Daniel-Constantin Mierla wrote:
The uac module of Kamailio has support for doing remote registrations for very long time (first added in v3.1.0, in 2010). There are plenty of options to control if the registration done downstream differs in terms of expire from the one received from downstream, when to enable/disable these registrations, etc... Oh really? The UAC module supports some method of correlating incoming registrations to outgoing ones? I did not know this. This might call for an update of the article!
Not sure what you really expect by "correlating" here, but if it is about enabling the registration downstream when processing the one from upstream, then it is something like: save("location"); if(registered("location", "$tu")) { ??? # user online, enable its uac reg record ??? jsonrpc_exec('{"jsonrpc": "2.0", "method": "uac.reg_enable", "params": ["l_username", "$tU"], "id": 1}'); } else { ??? # user online, enable its uac reg record ??? jsonrpc_exec('{"jsonrpc": "2.0", "method": "uac.reg_disable", "params": ["l_username", "$tU"], "id": 1}'); } Correlation can be done on couple of fields, like local user, remote user, local unique id, ... I used for very long time the uac module to do registrations to downstream servers and handle the ones from devices locally in kamailio edge proxy, with different expires values, etc ... that was the reason I added this feature many years ago and, iirc, it was first out there offering such thing in a proxy. Typically I do not enable/disable on register/unregister from UA, letting the downstream server believe the user is always online, so it routes back to kamailio proxy and then decide what to do if the user is offline, like sending to a dedicated announcement server or forward to pstn/gsm, ... I though of adding dedicated cfg functions to enable/disable uac_reg records, but given that rpc commands can be executed with jsonrpc_exec() at low expense, those got somehow lower priority. This feature of uac module got contributions from other devs, so it is used quite a lot out there. Of course, maybe some scenarios are not covered in an easy mode, but nobody asked new stuff on this part -- anyhow, we have the sources, other enhancements can be added if people find something that needs to be simplified or some use cases need to be addressed. Cheers, Daniel -- Daniel-Constantin Mierla -- www.asipto.com www.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio World Conference -- www.kamailioworld.com