On 10 Oct 2023, at 06:15, Barry Flanagan barry@flantel.com wrote:
On Fri, 6 Oct 2023, at 18:55, Alex Balashov via sr-users wrote:
Ah. Then the easiest approach is probably to buffer them into an XAVP array and just iterate through them. R-URI can be one attribute of each, while the destination URI/next-hop can be another.
$var(i) = 0;
while(defined $xavp(route_set[$var(i)])) { $ru = $xavp(route_set[$var(i)]=>ruri); $du = $xavp(route_set[$var(i)]=>duri);
$var(i) = $var(i) + 1;
}
Yes, but I also need to first sort the list by weight and priority (q-value). For the life of me I can't find any way to sort an array in Kamailio. Will I have to use KEMI for that?
There is not a way to sort an existing an array, but you have two options:
1) Have the API call return the list already sorted;
2) Create a temporary array, then iterate over it and insert the elements from it into the ultimate array, in a sorted manner (i.e. insertion sort).
#1 makes the most sense to me.
As far as Kamailio config script has come with bells and whistles, it's still not a general-purpose programming runtime, and there will always be these kinds of limitations. You should conceive of Kamailio as a relatively naive consumer of data. As you surmise, that's why KEMI exists. However, the most natural answer here is to have the API return presorted data, or sort it somewhere along the way as part of some intermediate pipeline, before it is consumed by Kamailio.
-- Alex