在我的场景中,UAS收到两个Via头。使用[last_Via:]它回复183,200 OK以用于后续PRACK但是对于180 Ringing和200 OK用于原始INVITE它需要那两个Via头。如何将它们存储在变量中以便我可以在这里使用?
我护目镜的方法:
<ereg regexp="[Vv][Ii][Aa][ ]*:[ ](.*)$" search_in="msg" check_it="true" assign_to="1"/>
$ 1 =它既有Via标题,也有消息的其余部分,包括SDP。
答案 0 :(得分:1)
<nop>
<action>
<assignstr assign_to="1" value="[last_Via:]" />
</action>
</nop>
否则,使用正则表达式方法,您应该能够使用以下内容消费所有内容,直到下一个CR LF字符:"[^\r\n]*\r\n"
。
答案 1 :(得分:0)
在您的<send>
之前执行此操作:
<nop>
<action>
<assignstr assign_to="lvia" value="[last_Via:]" />
<ereg regexp="[Vv][Ii][Aa]: (.*), (.*)" search_in="var" variable="lvia" assign_to="5,6,7"/>
<exec command="echo Via1: [$5], via2: [$6], via3: [$7]"/>
</action>
</nop>
然后使用值存储在变量6和7中。
这适用于2个通孔,如果需要处理更多的通孔,则可能需要调整。