[VoiceOps] New blog article: Kamailio as an SBC - five years on

Daniel-Constantin Mierla miconda at gmail.com
Wed Jun 20 04:00:05 EDT 2018

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:


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.


Daniel-Constantin Mierla -- www.asipto.com
www.twitter.com/miconda -- www.linkedin.com/in/miconda
Kamailio World Conference -- www.kamailioworld.com

More information about the VoiceOps mailing list