openSIPS устанавливает маршрут для ответа, если вызов принят

Мне интересно, можно ли установить условие для ответа/ответа на вызов в onreply_route

что-то вроде этого

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

person Laci K    schedule 01.03.2018    source источник


Ответы (1)


Есть довольно много способов, которыми вы можете достичь этого. В вашем случае я бы использовал функцию t_check_status() модуля tm:

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

Однако обратите внимание, что это не сработает, если ваш SIP-прокси не имеет состояния (т. е. если вы вообще не используете tm)! В этом случае нам потребуется получить доступ к информации более низкоуровневым способом, прочитав ее прямо из полученного сообщения, используя переменную $rs (Статус ответа SIP):

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