How “random” do you need to be here? Given your example, a quick thought would be to just iterate over a list, using a counter and calculating the modulo (remainder) when dividing it by the number of elements you have.

 

Another thought would be to use the core_hash() function over the call-id. http://www.kamailio.org/docs/modules/5.6.x/modules/cfgutils.html#cfgutils.f.core_hash

 

Of course, those aren’t really “random” in the mathematical sense, but if you’re goal is “you have a pool of 10 numbers and want them to be assigned to the p-asserted-identity URI user each one-tenth of the time”, either of the above methods should work.  Hashing the call-id would even ensure that the same call will get the same value if you have to recalculate it.

 

Ben Kaufman

Sr. VoIP Engineer - BCM One

 

+1.612.735.9309

bkaufman@bcmone.com

24 hour client support: +1.855.639.6300

 

From: sr-users <sr-users-bounces@lists.kamailio.org> On Behalf Of Joel Serrano
Sent: Tuesday, May 3, 2022 8:40 PM
To: Henning Westerholt <hw@gilawa.com>
Cc: Kamailio (SER) - Users Mailing List <sr-users@lists.kamailio.org>
Subject: Re: [SR-Users] Tips on picking random element from a list

 

I did, but I don't see how to limit the range:

 

From the docs: Returns a random value from the [0 - 2^31) range.

 

Is there a way to limit the range from 1-100 for example? Or maybe the way is to use $RANDOM and just rely on the first/last 2 digits (essentially a 00-99 range)? 

 

 

On Tue, May 3, 2022 at 10:40 AM Henning Westerholt <hw@gilawa.com> wrote:

Hello,

 

what about just using this PV: https://kamailio.org/docs/modules/5.5.x/modules/cfgutils.html#idm438

 

Cheers,

 

Henning

 

--

Henning Westerholt – https://skalatan.de/blog/

Kamailio services – https://gilawa.com

 

From: sr-users <sr-users-bounces@lists.kamailio.org> On Behalf Of Joel Serrano
Sent: Tuesday, May 3, 2022 6:20 PM
To: Kamailio (SER) - Users Mailing List <sr-users@lists.kamailio.org>
Subject: [SR-Users] Tips on picking random element from a list

 

Hi Everyone, 

 

I have to implement a flow where outbound calls get their caller-id set with a random number from a pool.

 

I've been looking around and, as most of the time, there are tons of ways to implement something like this... This is a simple implementation, the number pool is fixed and will not change (so I could have it hard-coded in the config if required).

 

My initial approach was:

 

1- Try to keep it simple, with no dependencies, and all done in the config script.

2- If #1 is "ugly", then I'd probably go with some inline code using python/lua/etc

3- If #2 is "ugly", then I'd go with having the info in a DB and just run a query

 

I think #2 and #3 might be overkill for something so "simple" but I haven't had to work too much with randomness in Kamailio, so any tips/suggestions on where to store the number list and how to pick one randomly would be awesome!

 

Thanks!!

Joel.