Search code examples
voipopensips

Passing AVP to prefix core function


I am working what appears to be a simple function for opensips 2.2.3, however cannot seem to get it working..

Essentially, extract the groupID from permissions module and add a prefix to R-URI on the egress side.

https://www.opensips.org/Documentation/Script-CoreFunctions-2-2#toc26

http://www.opensips.org/html/docs/modules/2.2.x/permissions.html#idp5689232

Config route looks like this:

    route[relay] {

    if ( get_source_group("$avp(group)") ) {
            # do something with $avp(group)
            xlog("group is $avp(group)\n");

    };

    #Add the string parameter in front of username in R-URI.
    #prefix("$avp(group)");
    #prefix("$avp(group){s.substr,0,0}");

    $avp(22) = "3333#";
    prefix("$avp(22)");

Prefix core function prefixes R-URI with variable name ($avp(22)) instead of value of "3333#". I have tried various syntax versions that are commented out, however to no avail..

If I remove the quotes around the variable name: prefix($avp(22));

Opensips does not startup at all, complaining about: syntax error and bad argument, string expected

Am I missing something simple? or prefix function is simply not designed to work with variables?

Thank you in advance.


Solution

  • prefix() is somewhat old and unmaintained, hence it does not support variables. However, you can prepend your group to the R-URI username with:

    $rU = $avp(group) + $rU;
    xlog("My new R-URI is $ru.  My new R-URI username is $rU\n");