The AVP core (provided by OpenSER core) defines two types of AVPs: with numerical ID and with string names. Each of them has its own advantage: the ID AVPs are faster to manipulate internally (no string operation involved); the name AVPs are easier to use (by nature, humans remember more easier names than numbers). AVPOPS allows the usage of both types of AVPS, using the following grammar:
avp_name = string | ('I'|'i')':'ID | ('S'|'s')':'string
Examples:
"email_address" - avp with string name "email_address"
"S:fwd_uri" - avp with string name "fwd_uri"
"i:456" - avp with numerical ID 456
To combine the benefits from both types of AVPS, AVPOPS module allows you to define aliases for AVP names. So you can use an ID avp - which is faster, but refer it by alias - as easy to remember string. The substitution of aliases with real AVP names is done only once, at configuration script compilation (at startup).
alias_definition = alias'='avp_name
alias = no_space_string
When used, the aliases are invoked with '$' sign in front (to avoid overlapping with predefined strings or AVP's name).