OpenSIPS提供了路由脚本(routing script)中使用的多种类型的变量。变量类型之间的差异来自
(1)变量的可见性(当变量可见时),
(2)变量所附加的内容(变量所在的位置)
(3)变量的读写状态(某些类型的变量是只读的)
(4)多个值(对于同一个变量)的处理方式。
OpenSIPS变量可以很容易地在脚本中识别,因为它们的所有名称(或符号)都以美元符$开头。
语法:
伪变量的完整语法为:
$(<context>name(subname)[index]{transformation})
以绿色书写的字段是可选的。字段的含义是:
- name(强制)-伪变量名称(类型)。例如:pvar、avp、ru、DLG_status等。
- subname—给定类型的特定pv的标识符。例如:hdr(来自),avp(名称)。
- index- pv可以存储多个值-它可以引用值列表。如果指定某个值的索引,则可以从列表中访问该值。还可以使用负值指定索引,-1表示最后插入的索引,-2表示上一个插入索引之前的索引值。
- transformation-可以对伪变量应用一系列处理操作。您可以在这里找到所有可能的转换列表。转换可以级联,使用一个转换的输出作为另一个转换的输入。
- context-将在其中计算伪0变量的上下文。现在有两个pv context:应答和请求。响应context可用于故障路由中,以请求在应答消息上下文中评估伪变量。如果在应答路由中需要在相应请求的上下文中评估pv,则可以使用请求上下文。
使用举例:
只有name:$ru
name和subname:$hdr(Contact)
name和index:$(ct[0])
name和subname和index:$(avp(i:10)[2])
Context:
$(<request>ru) 从应答路由的request里获取Request-URI
$(<reply>hdr(Contact)) 可以从故障路由使用context来访问应答中的信息
变量的类型:
- 脚本变量(script variables)
- AVP(Attribute Value Pairs)
- 伪变量(pseudo variables)
- 转义序列(escape sequences)