如果呼叫被接听,openSIPS 会设置一个 onreply 路由

openSIPS setup an onreply route if the call is picked up

我想知道是否可以在 onreply_route

中设置调用 answered/picked 的条件

像这样

onreply_route {
 if(call picked up) {
  xlog("ON AIR");
 }
}

您可以通过多种方式实现这一目标。对于你的情况,我会使用 tm 模块的 t_check_status() 函数:

onreply_route {
    if (t_check_status("2[0-9][0-9]")) {
        xlog("ON AIR");
    }
}

但是,请注意,如果您的 SIP 代理是无状态的(即,如果您根本不使用 tm),这将不起作用!在这种情况下,我们需要以更 low-level 的方式访问信息,通过使用 $rs 变量(SIP 回复状态):

onreply_route {
    if ($rs == 200) { # or ($rs =~ "2[0-9][0-9]")
        xlog("ON AIR");
    }
}