Douglas Garstang wrote:
Is there any useful information ANYWHERE about avp's? I mean, don't take this the wrong way, but I've never had so much trouble interpreting/finding documentation on a subject. I can't even find out how to print the value of an avp with xlog. Is this ACTUALLY DOCUMENTED anywhere? I finally found an example somewhere from a newsgroup posting and used:
xlog ("L_INFO","$avp($foo)");
but openser complains with:
Dec 15 13:21:01 bil-pdev-3 openser[24718]: ERROR:xl_parse_name: unknow avp alias"foo" Dec 15 13:21:01 bil-pdev-3 openser[24718]: XLOG:xdbg_fixup: ERROR: wrong format[$avp($foo)]!
Looks like the AVP alias is unknown. There are two kinds of AVP: integer based and string based. http://www.voice-system.ro/docs/avpops/ar01s03.html
e.g. xlog ("L_INFO","$avp(s:foo)"); will print the AVP with the string name "foo".
xlog ("L_INFO","$avp(i:102)"); will print the AVP 102.
xlog ("L_INFO","$avp($foo)"); will print the AVP with the alias foo
To use alias, you have to configure them: http://www.voice-system.ro/docs/avpops/ar01s05.html modparam("avpops","avp_aliases","uuid=I:660;foo=i:102")
Thus, if configured foo=i:102, the following 2 statements are the same: xlog ("L_INFO","$avp(i:102)"); xlog ("L_INFO","$avp($foo)");
As interger type AVPs are faster I prefer them. In my config I have:
# AVP configuration # integer aliases (faster than strings) # i:101 = cbcprefix # call by call provider prefix # i:103 = fr_inv_timer # timer for INVITE transactions # i:104 = cansipuri # canonical SIP URI, e.g klaus@enum.at # # pre defined AVPs: # s:rpid = Remote-Party-Id # i:42 = received_avp, used by nathelper and registrar # modparam("avpops","avp_aliases","cbcprefix=I:101;fr_inv_timer=i:103;cansipuri=i:104") # -- tm params -- modparam("tm", "fr_inv_timer_avp", "i:103")
Then, in the routing part I only use the aliases, e.g: # trigger failure in 28 seconds avp_write("i:28","$fr_inv_timer");
lookup("aliases"); avp_write("$ruri","$cansipuri"); #store canonical SIP URI
You also should read the examples at the wiki: http://openser.org/dokuwiki/doku.php?id=avp_examples&DokuWiki=70b22ac08e...
regards Klaus