AVP(Attribute-Value Pair)
VoIP服务使用AVP资源
存储通话前转数据,属性-值对的操作相当于是允许了对用户的首选项(user preferences)进行访问和操作。AVP可以看作是与标识(字符串或整数)相关联的一个值。在OpenSER的处理过程中,AVP与事务捆绑在一起。当事务开始时,AVP被分配,当其结束时,则被释放。
属性-值对的引用与
变量的引用非常相似。
相关信息
CCR{Initial}、CCA{Initial}、CCR{Update}、CCA{Update}、CCR{Termination}、CCA{Termination}所涉及的AVP参数。
$avp(id[N])
Where ID is:
l si : name —— AVP标识名称。“s”和“i”分别表示字符串和整数。
l name —— 别名AVP的名称。可以是字符串,也可以是整数。
例子:
$avp (i: 700)
$avp (s: blacklist)
对于了解Asterisk的人来说,AVPOPS模块之于OpenSER就相当于AstDB函数之与Asterisk。然而,实现方式非常不同,AVPs更加强大,允许一些更加高级的特性,如数据库的查询和直接将数据插入SIP包等。
AVPs相联系的函数
有许多与AVPs相联系的函数如下:
l avp_db_load:将AVPs从数据库加载至内存
l avp_db_store:将AVPs存进数据库
l avp_db_delete:从数据库中删除AVPs
l avp_db_query:进行数据库查询并将结果存进AVP中
l avp_delete:从内存中删除AVPs
l avp_pushto:将AVP的值插入sip消息
l avp_check:使用一个操作符和一个值来检查AVP的值
l avp_copy:拷贝AVP到另一个
l avp_printf:格式化一个字符串到AVP
l avp_subst:查找并替换一个值到AVP
l avp_op:允许在AVPs上进行算术操作
l is_avp_set:检查这个AVP名字是否被设置
l avp_print:打印内存中的所有AVPs(为了debug)