On 10.10.23 12:15, Barry Flanagan via sr-users wrote:
On Fri, 6 Oct 2023, at 18:55, Alex Balashov via sr-users wrote:
On 6 Oct 2023, at 10:39, Barry Flanagan via sr-users sr-users@lists.kamailio.org wrote:
On 06/10/2023 15:23, Alex Balashov via sr-users wrote:
Hello,
If you can't key by R-URI, perhaps then just store a list of routes in a database table or similar?
Thanks. The routes are received via an API call, and are dynamic. Trying to avoid the overhead of a database.
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?
Have you tried to push to branches (e.g., with $sbranch(...), see also pv module for corresponding functions) then use tm for serial forking with those branches?
- https://www.kamailio.org/docs/modules/stable/modules/tm.html#tm.serial_forki...
Otherwise, as suggested in other replies, I would rather make the api to return the right order, or, as you pointed, use KEMI for sorting -- app_jsdt has no external dependency, its js interpreter is embedded in kamailio module.
Cheers, Daniel