如何获得多个Via头SIPP脚本?

时间:2014-05-08 05:58:12

标签: regex sip

在我的场景中,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。

2 个答案:

答案 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个通孔,如果需要处理更多的通孔,则可能需要调整。