AVPOPS tutorial (was Re: [Users] Variables)

Klaus Darilion klaus.mailinglists at pernau.at
Fri Dec 16 08:42:35 CET 2005


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 at 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=70b22ac08edca3b1e30989e57209c81e

regards
Klaus





More information about the sr-users mailing list