<div dir="ltr">I'm having trouble implementing this RTCP-XR collection for Polycom phones on Kamailio 4.2<div>I used the routing logic that comes with the homer package to accommodate some of the new features included in v3.6</div><div>This is what my kamailio.cfg looks like (the file included in /homer/configs/kamailio.cfg):</div><div><br></div><div><div># Main SIP request routing logic</div><div># - processing of any incoming SIP request starts with this route</div><div>route {</div><div><br></div><div><br></div><div><br></div><div>        if($sht(a=>method::all) == $null) $sht(a=>method::all) = 0;</div><div>        $sht(a=>method::all) = $sht(a=>method::all) + 1;</div><div><br></div><div>        if($sht(b=>$rm::$cs::$ci) != $null) {</div><div>                $var(a) = "sip_capture";</div><div>                sip_capture("$var(a)");</div><div>                drop;</div><div>        }</div><div><br></div><div>        $sht(b=>$rm::$cs::$ci) = 1;</div><div><br></div><div>        if (is_method("INVITE|REGISTER")) {</div><div><br></div><div>                if($ua =~ "(friendly-scanner|sipvicious)") {</div><div>                        sql_query("cb", "INSERT INTO alarm_data_mem (create_date, type, total, source_ip, description) VALUES(NOW(), 'scanner', 1, '$si', 'Friendly scanner alarm!') ON DUPLICATE KEY UPDATE total=total+1");</div><div>                }</div><div><br></div><div>                #IP Method</div><div>                sql_query("cb", "INSERT INTO stats_ip_mem ( method, source_ip, total) VALUES('$rm', '$si', 1) ON DUPLICATE KEY UPDATE total=total+1");</div><div><br></div><div>                if($au != $null)  $var(anumber) = $au;</div><div>                else $var(anumber) = $fU;</div><div><br></div><div>                #hostname in contact</div><div>                if($sel(contact.uri.host) =~ "^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$") {</div><div>                        if($sht(a=>alarm::dns) == $null) $sht(a=>alarm::dns) = 0;</div><div>                        $sht(a=>alarm::dns) = $sht(a=>alarm::dns) + 1;</div><div>                }</div><div><br></div><div>                if($sel(contact.uri.host) != $si) {</div><div>                        if($sht(a=>alarm::spoofing) == $null) $sht(a=>alarm::spoofing) = 0;</div><div>                        $sht(a=>alarm::spoofing) = $sht(a=>alarm::spoofing) + 1;</div><div>                }</div><div><br></div><div>                if($au =~ "(\=)|(\-\-)|(\')|(\#)|(\%27)|(\%24)") {</div><div>                        if($sht(a=>alarm::sqlinjection) == $null) $sht(a=>alarm::sqlinjection) = 0;</div><div>                        $sht(a=>alarm::sqlinjection) = $sht(a=>alarm::sqlijnection) + 1;</div><div>                }</div><div><br></div><div>                if($(hdr(Record-Route)[0]{nameaddr.uri}) != $si) {</div><div>                        if($sht(a=>alarm::spoofing) == $null) $sht(a=>alarm::spoofing) = 0;</div><div>                        $sht(a=>alarm::spoofing) = $sht(a=>alarm::spoofing) + 1;</div><div>                }</div><div><br></div><div><br></div><div>                if (is_method("INVITE")) {</div><div><br></div><div>                        if (has_totag()) {</div><div>                                if($sht(a=>method::reinvite) == $null) $sht(a=>method::reinvite) = 0;</div><div>                                $sht(a=>method::reinvite) = $sht(a=>method::reinvite) + 1;</div><div>                        }</div><div>                        else {</div><div>                                if($sht(a=>method::invite) == $null) $sht(a=>method::invite) = 0;</div><div>                                $sht(a=>method::invite) = $sht(a=>method::invite) + 1;</div><div><br></div><div>                                if($adu != $null) {</div><div>                                        if($sht(a=>method::invite::auth) == $null) $sht(a=>method::invite::auth) = 0;</div><div>                                        $sht(a=>method::invite::auth) = $sht(a=>method::invite::auth) + 1;</div><div>                                }</div><div><br></div><div>                                if($ua != $null) {</div><div>                                        sql_query("cb", "INSERT INTO stats_useragent_mem (useragent, method, total) VALUES('$ua', 'INVITE', 1) ON DUPLICATE KEY UPDATE total=total+1");</div><div>                                }</div><div><br></div><div>                        }</div><div>                }</div><div>                else {</div><div>                        if($sht(a=>method::register) == $null) $sht(a=>method::register) = 0;</div><div>                        $sht(a=>method::register) = $sht(a=>method::register) + 1;</div><div><br></div><div>                        if($adu != $null) {</div><div>                                if($sht(a=>method::register::auth) == $null) $sht(a=>method::register::auth) = 0;</div><div>                                $sht(a=>method::register::auth) = $sht(a=>method::register::auth) + 1;</div><div>                        }</div><div><br></div><div>                        if($ua != $null) {</div><div>                                sql_query("cb", "INSERT INTO stats_useragent_mem (useragent, method, total) VALUES('$ua', 'REGISTER', 1) ON DUPLICATE KEY UPDATE total=total+1");</div><div>                        }</div><div>                }</div><div><br></div><div>        }</div><div>        else if(is_method("BYE")) {</div><div>                if($sht(a=>method::bye) == $null) $sht(a=>method::bye) = 0;</div><div>                $sht(a=>method::bye) = $sht(a=>method::bye) + 1;</div><div>                if(is_present_hf("Reason") && $(hdr(Reason){param.value,cause}{<a href="http://s.int">s.int</a>}) != "" ) {</div><div>                       $var(cause) = $(hdr(Reason){param.value,cause}{<a href="http://s.int">s.int</a>});</div><div>                       if($var(cause) != 16 && $var(cause) !=17) {</div><div>                                if($sht(a=>stats::sdf) == $null) $sht(a=>stats::sdf) = 0;</div><div>                                $sht(a=>stats::sdf) = $sht(a=>stats::sdf) + 1;</div><div>                       }</div><div>                }</div><div><br></div><div>        }</div><div>        else if(is_method("CANCEL")) {</div><div>                if($sht(a=>method::cancel) == $null) $sht(a=>method::cancel) = 0;</div><div>                $sht(a=>method::cancel) = $sht(a=>method::cancel) + 1;</div><div><br></div><div>        }</div><div>        else if(is_method("OPTIONS")) {</div><div>                if($sht(a=>method::options) == $null) $sht(a=>method::options) = 0;</div><div>                $sht(a=>method::options) = $sht(a=>method::options) + 1;</div><div><br></div><div>        }</div><div>        else if(is_method("REFER")) {</div><div>                if($sht(a=>method::refer) == $null) $sht(a=>method::refer) = 0;</div><div>                $sht(a=>method::refer) = $sht(a=>method::refer) + 1;</div><div><br></div><div>        }</div><div>        else if(is_method("UPDATE")) {</div><div>                if($sht(a=>method::update) == $null) $sht(a=>method::update) = 0;</div><div>                $sht(a=>method::update) = $sht(a=>method::update) + 1;</div><div>        }</div><div><br></div><div><br></div><div>        $var(a) = "sip_capture";</div><div>        # Kamailio 4.1 only</div><div>        #sip_capture("$var(a)"); </div><div>        </div><div>        sip_capture();</div><div><br></div><div>        drop;</div><div>}</div><div><br></div><div>onreply_route {</div><div><br></div><div>        if($sht(a=>method::all) == $null) $sht(a=>method::all) = 0;</div><div>        $sht(a=>method::all) = $sht(a=>method::all) + 1;</div><div><br></div><div>        if($sht(b=>$rs::$cs::$rm::$ci) != $null) {</div><div>                $var(a) = "sip_capture";</div><div>                sip_capture("$var(a)");</div><div>                drop;</div><div>        }</div><div><br></div><div>        $sht(b=>$rs::$cs::$rm::$ci) = 1;</div><div><br></div><div>        #413 Too large</div><div>        if(status == "413") {</div><div><br></div><div>                if($sht(a=>alarm::413) == $null) $sht(a=>alarm::413) = 0;</div><div>                $sht(a=>alarm::413) = $sht(a=>alarm::413) + 1;</div><div>        }</div><div>        # Too many hops</div><div>        else if(status == "483") {</div><div>                if($sht(a=>alarm::483) == $null) $sht(a=>alarm::483) = 0;</div><div>                $sht(a=>alarm::483) = $sht(a=>alarm::483) + 1;</div><div><br></div><div>        }</div><div>        # loops</div><div>        else if(status == "482") {</div><div>                if($sht(a=>alarm::482) == $null) $sht(a=>alarm::482) = 0;</div><div>                $sht(a=>alarm::482) = $sht(a=>alarm::482) + 1;</div><div><br></div><div>        }</div><div>        # 400</div><div>        else if(status == "400") {</div><div>                if($sht(a=>alarm::400) == $null) $sht(a=>alarm::400) = 0;</div><div>                $sht(a=>alarm::400) = $sht(a=>alarm::400) + 1;</div><div><br></div><div>        }</div><div><br></div><div>        # 500</div><div>        else if(status == "500") {</div><div>                if($sht(a=>alarm::500) == $null) $sht(a=>alarm::500) = 0;</div><div>                $sht(a=>alarm::500) = $sht(a=>alarm::500) + 1;</div><div>        }</div><div>        # 503</div><div>        else if(status == "503") {</div><div>                if($sht(a=>alarm::503) == $null) $sht(a=>alarm::503) = 0;</div><div>                $sht(a=>alarm::503) = $sht(a=>alarm::503) + 1;</div><div>        }</div><div>        # 403</div><div>        else if(status == "403") {</div><div>                if($sht(a=>alarm::403) == $null) $sht(a=>alarm::403) = 0;</div><div>                $sht(a=>alarm::403) = $sht(a=>alarm::403) + 1;</div><div>        }</div><div>        # MOVED</div><div>        else if(status =~ "^(30[012])$") {</div><div>                if($sht(a=>response::300) == $null) $sht(a=>response::300) = 0;</div><div>                $sht(a=>response::300) = $sht(a=>response::300) + 1;</div><div>        }</div><div><br></div><div>        if($rm == "INVITE") {</div><div>                #ISA</div><div>                if(status =~ "^(408|50[03])$") {</div><div>                        if($sht(a=>stats::isa) == $null) $sht(a=>stats::isa) = 0;</div><div>                        $sht(a=>stats::isa) = $sht(a=>stats::isa) + 1;</div><div>                }</div><div>                #Bad486</div><div>                if(status =~ "^(486|487|603)$") {</div><div>                        if($sht(a=>stats::bad::invite) == $null) $sht(a=>stats::bad::invite) = 0;</div><div>                        $sht(a=>stats::bad::invite) = $sht(a=>stats::bad::invite) + 1;</div><div>                }</div><div><br></div><div>                #SD</div><div>                if(status =~ "^(50[034])$") {</div><div>                        if($sht(a=>stats::sd) == $null) $sht(a=>stats::sd) = 0;</div><div>                        $sht(a=>stats::sd) = $sht(a=>stats::sd) + 1;</div><div>                }</div><div><br></div><div>                if(status == "407") {</div><div>                        if($sht(a=>response::407::invite) == $null) $sht(a=>response::407::invite)= 0;</div><div>                        $sht(a=>response::407::invite) = $sht(a=>response::407::invite) + 1;</div><div>                }</div><div>                else if(status == "401") {</div><div>                        if($sht(a=>response::401::invite) == $null) $sht(a=>response::401::invite)= 0;</div><div>                        $sht(a=>response::401::invite) = $sht(a=>response::401::invite) + 1;</div><div>                }</div><div>                else if(status == "200") {</div><div>                        if($sht(a=>response::200::invite) == $null) $sht(a=>response::200::invite)= 0;</div><div>                        $sht(a=>response::200::invite) = $sht(a=>response::200::invite) + 1;</div><div>                }</div><div>        }</div><div>        else if($rm == "BYE") {</div><div><br></div><div>                if(status == "407") {</div><div>                        if($sht(a=>response::407::bye) == $null) $sht(a=>response::407::bye) = 0;</div><div>                        $sht(a=>response::407::bye) = $sht(a=>response::407::bye) + 1;</div><div>                }</div><div>                else if(status == "401") {</div><div>                        if($sht(a=>response::401::bye) == $null) $sht(a=>response::401::bye) = 0;</div><div>                        $sht(a=>response::401::bye) = $sht(a=>response::401::bye) + 1;</div><div>                }</div><div>                else if(status == "200") {</div><div>                        if($sht(a=>response::200::bye) == $null) $sht(a=>response::200::bye) = 0;</div><div>                        $sht(a=>response::200::bye) = $sht(a=>response::200::bye) + 1;</div><div>                }</div><div>        }</div><div><br></div><div>        sip_capture();</div><div><br></div><div>        drop;</div><div>}</div><div><br></div><div><br></div><div>route[TIMER_STATS] {</div><div><br></div><div>    xlog("timer routine: time is $TS\n");</div><div><br></div><div>    #ALARM SCANNERS</div><div>    sql_query("cb", "INSERT INTO alarm_data (create_date, type, total, source_ip, description) SELECT create_date, type, total, source_ip, description FROM alarm_data_mem;");</div><div>    sql_query("cb", "TRUNCATE TABLE alarm_data_mem");</div><div><br></div><div>    #413</div><div>    if($sht(a=>alarm::413) > 0) {</div><div>        sql_query("cb", "INSERT INTO alarm_data (create_date, type, total, description) VALUES(NOW(), 'Too Many 413', $sht(a=>alarm::413), 'Too many big messages')");</div><div>    }</div><div><br></div><div>    $sht(a=>alarm::413) = 0;</div><div><br></div><div>    #483</div><div>    if($sht(a=>alarm::483) > 0) {</div><div>        sql_query("cb", "INSERT INTO alarm_data (create_date, type, total, description) VALUES(NOW(), 'Too Many 483', $sht(a=>alarm::483), 'Too many hops messages')");</div><div>    }</div><div><br></div><div>    $sht(a=>alarm::483) = 0;</div><div><br></div><div>    #482</div><div>    if($sht(a=>alarm::482) > 0) {</div><div>        sql_query("cb", "INSERT INTO alarm_data (create_date, type, total, description) VALUES(NOW(), 'Too Many 482', $sht(a=>alarm::482), 'Too many loops messages')");</div><div>    }</div><div><br></div><div>    $sht(a=>alarm::482) = 0;</div><div><br></div><div>    #403</div><div>    if($sht(a=>alarm::403) > 0) {</div><div>        sql_query("cb", "INSERT INTO alarm_data (create_date, type, total, description) VALUES(NOW(), 'Too Many 403', $sht(a=>alarm::403), 'fraud alarm')");</div><div>    }</div><div>    $sht(a=>alarm::403) = 0;</div><div><br></div><div>    #503</div><div>    if($sht(a=>alarm::503) > 0) {</div><div>        sql_query("cb", "INSERT INTO alarm_data (create_date, type, total, description) VALUES(NOW(), 'Too Many 503', $sht(a=>alarm::503), 'service unavailable')");</div><div>    }</div><div>    $sht(a=>alarm::503) = 0;</div><div><br></div><div>    #500</div><div>    if($sht(a=>alarm::500) > 0) {</div><div>        sql_query("cb", "INSERT INTO alarm_data (create_date, type, total, description) VALUES(NOW(), 'Too Many 500', $sht(a=>alarm::500), 'server errors')");</div><div>    }</div><div>    $sht(a=>alarm::500) = 0;</div><div><br></div><div>    #408</div><div>    if($sht(a=>alarm::408) > 0) {</div><div>        sql_query("cb", "INSERT INTO alarm_data (create_date, type, total, description) VALUES(NOW(), 'Too Many 408', $sht(a=>alarm::408), 'Timeout')");</div><div>    }</div><div><br></div><div>    $sht(a=>alarm::408) = 0;</div><div><br></div><div>    #400</div><div>    if($sht(a=>alarm::400) > 0) {</div><div>        sql_query("cb", "INSERT INTO alarm_data (create_date, type, total, description) VALUES(NOW(), 'Too Many 400', $sht(a=>alarm::400), 'Too many bad request')");</div><div>    }</div><div>    $sht(a=>alarm::400) = 0;</div><div><br></div><div>    #delete old alarms</div><div>    sql_query("cb", "DELETE FROM alarm_data WHERE create_date < DATE_SUB(NOW(), INTERVAL 5 DAY)");</div><div><br></div><div>    #SQL STATS</div><div><br></div><div>    $var(tm) = ($time(min) mod 10);</div><div><br></div><div>    if($var(tm) != 0 && $var(tm) != 5) return;</div><div><br></div><div>    $var(t1) = $TS;</div><div>    $var(t2) = $var(t1) - 300;</div><div><br></div><div>    xlog("TIME : $var(tm)\n");</div><div><br></div><div>    $var(t_date) = "FROM_UNIXTIME(" + $var(t1) + ", '%Y-%m-%d %H:%i:00')";</div><div>    $var(f_date) = "FROM_UNIXTIME(" + $var(t2) + ", '%Y-%m-%d %H:%i:00')";</div><div><br></div><div>    #STATS Useragent</div><div>    sql_query("cb", "INSERT INTO stats_useragent (from_date, to_date, useragent, method, total) SELECT $var(f_date) as from_date, $var(t_date) as to_date, useragent, method, total FROM stats_useragent_mem;");</div><div>    sql_query("cb", "TRUNCATE TABLE stats_useragent_mem");</div><div><br></div><div>    #STATS IP</div><div>    sql_query("cb", "INSERT INTO stats_ip (from_date, to_date, method, source_ip, total) SELECT $var(f_date) as from_date, $var(t_date) as to_date, method, source_ip, total FROM stats_ip_mem;");</div><div>    sql_query("cb", "TRUNCATE TABLE stats_ip_mem");</div><div><br></div><div>    #INSERT SQL STATS</div><div>    #SDF</div><div>    if($sht(a=>stats::sdf) != $null && $sht(a=>stats::sdf) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_data (from_date, to_date, type, total) VALUES($var(f_date), $var(t_date), 'sdf', $sht(a=>stats::sdf))");</div><div>        $sht(a=>stats::sdf) = 0;</div><div>    }</div><div><br></div><div>    #ISA</div><div>    if($sht(a=>stats::isa) != $null && $sht(a=>stats::isa) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_data (from_date, to_date, type, total) VALUES($var(f_date), $var(t_date), 'isa', $sht(a=>stats::isa))");</div><div>        $sht(a=>stats::isa) = 0;</div><div>    }</div><div><br></div><div>    #SD</div><div>    if($sht(a=>stats::sd) != $null && $sht(a=>stats::sd) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_data (from_date, to_date, type, total) VALUES($var(f_date), $var(t_date), 'isa', $sht(a=>stats::sd))");</div><div>        $sht(a=>stats::sd) = 0;</div><div>    }</div><div><br></div><div>    #SSR</div><div>    if($sht(a=>stats::ssr) != $null && $sht(a=>stats::ssr) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_data (from_date, to_date, type, total) VALUES($var(f_date), $var(t_date), 'ssr', $sht(a=>stats::ssr))");</div><div>        $sht(a=>stats::ssr) = 0;</div><div>    }</div><div><br></div><div>    #ASR</div><div>    $var(asr) = 0;</div><div>    #if($sht(a=>response::200::invite) > 0) {</div><div>    if($sht(a=>method::invite) > 0) {</div><div>        if($sht(a=>response::407::invite) == $null) $sht(a=>response::407::invite) = 0;</div><div>        if($sht(a=>response::200::invite) == $null) $sht(a=>response::200::invite) = 0;</div><div>        $var(d) = $sht(a=>method::invite) - $sht(a=>response::407::invite);</div><div>        if($var(d) > 0) {</div><div>                $var(asr) =  $sht(a=>response::200::invite) / $var(d) * 100;</div><div>                if($var(asr) > 100)  $var(asr) = 100;</div><div>        }</div><div>    }</div><div><br></div><div>    #Stats DATA</div><div>    sql_query("cb", "INSERT INTO stats_data (from_date, to_date, type, total) VALUES($var(f_date), $var(t_date), 'asr', $var(asr))");</div><div><br></div><div><br></div><div>    #NER</div><div>    $var(ner) = 0;</div><div>    #if($sht(a=>response::200::invite) > 0 || $sht(a=>stats::bad::invite) > 0) {</div><div>    if($sht(a=>method::invite) > 0) {</div><div><br></div><div>        if($sht(a=>response::200::invite) == $null) $sht(a=>response::200::invite) = 0;</div><div>        if($sht(a=>response::bad::invite) == $null) $sht(a=>response::bad::invite) = 0;</div><div>        if($sht(a=>response::407::invite) == $null) $sht(a=>response::407::invite) = 0;</div><div><br></div><div>        $var(d) = $sht(a=>method::invite) - $sht(a=>response::407::invite);</div><div><br></div><div>        if($var(d) > 0) {</div><div>                $var(ner) =  ($sht(a=>response::200::invite) + $sht(a=>stats::bad::invite)) / $var(d) * 100;</div><div>                if($var(ner) > 100)  $var(ner) = 100;</div><div>        }</div><div>    }</div><div><br></div><div>    sql_query("cb", "INSERT INTO stats_data (from_date, to_date, type, total) VALUES($var(f_date), $var(t_date), 'ner', $var(ner))");</div><div><br></div><div>    #INVITE</div><div>    if($sht(a=>method::reinvite) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, totag, total) VALUES($var(f_date), $var(t_date),'INVITE', 1, $sht(a=>method::reinvite))");</div><div>        $sht(a=>method::reinvite) = 0;</div><div>    }</div><div><br></div><div>    #INVITE</div><div>    if($sht(a=>method::invite) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, total) VALUES($var(f_date), $var(t_date), 'INVITE', $sht(a=>method::invite))");</div><div>        $sht(a=>method::invite) = 0;</div><div>    }</div><div><br></div><div>    #INVITE AUTH</div><div>    if($sht(a=>method::invite::auth) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, auth, total) VALUES($var(f_date), $var(t_date), 'INVITE', 1, $sht(a=>method::invite::auth))");</div><div>        $sht(a=>method::invite::auth) = 0;</div><div>    }</div><div><br></div><div>    #REGISTER</div><div>    if($sht(a=>method::register) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, total) VALUES($var(f_date), $var(t_date), 'REGISTER', $sht(a=>method::register))");</div><div>        $sht(a=>method::register) = 0;</div><div>    }</div><div><br></div><div>    #REGISTER AUTH</div><div>    if($sht(a=>method::register::auth) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, auth, total) VALUES($var(f_date), $var(t_date), 'REGISTER', 1, $sht(a=>method::register::auth))");</div><div>        $sht(a=>method::register::auth) = 0;</div><div>    }</div><div><br></div><div>    #BYE</div><div>    if($sht(a=>method::bye) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, total) VALUES($var(f_date), $var(t_date), 'BYE', $sht(a=>method::bye))");</div><div>        $sht(a=>method::bye) = 0;</div><div>    }</div><div><br></div><div>    #CANCEL</div><div>    if($sht(a=>method::cancel) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, total) VALUES($var(f_date), $var(t_date), 'CANCEL', $sht(a=>method::cancel))");</div><div>        $sht(a=>method::cancel) = 0;</div><div>    }</div><div><br></div><div>    #OPTIONS</div><div>    if($sht(a=>method::options) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, total) VALUES($var(f_date), $var(t_date), 'OPTIONS', $sht(a=>method::options))");</div><div>        $sht(a=>method::options) = 0;</div><div>    }</div><div><br></div><div>    #REFER</div><div>    if($sht(a=>method::refer) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, total) VALUES($var(f_date), $var(t_date), 'REFER', $sht(a=>method::refer))");</div><div>        $sht(a=>method::refer) = 0;</div><div>    }</div><div><br></div><div>    #UPDATE</div><div>    if($sht(a=>method::update) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, total) VALUES($var(f_date), $var(t_date), 'UPDATE', $sht(a=>method::update))");</div><div>        $sht(a=>method::update) = 0;</div><div>    }</div><div><br></div><div>    #RESPONSE</div><div><br></div><div>    #300</div><div>    if($sht(a=>response::300) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, total) VALUES($var(f_date), $var(t_date), '300', $sht(a=>response::300))");</div><div>        $sht(a=>response::300) = 0;</div><div>    }</div><div><br></div><div>    #407 INVITE</div><div>    if($sht(a=>response::407::invite) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, cseq, total) VALUES($var(f_date), $var(t_date), '407', 'INVITE', $sht(a=>response::407::invite))");</div><div>        $sht(a=>response::407::invite) = 0;</div><div>    }</div><div><br></div><div>    #401 INVITE</div><div>    if($sht(a=>response::401::invite) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, cseq, total) VALUES($var(f_date), $var(t_date), '401', 'INVITE', $sht(a=>response::401::invite))");</div><div>        $sht(a=>response::401::invite) = 0;</div><div>    }</div><div><br></div><div>    #200 INVITE</div><div>    if($sht(a=>response::200::invite) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, cseq, total) VALUES($var(f_date), $var(t_date), '200', 'INVITE', $sht(a=>response::200::invite))");</div><div>        $sht(a=>response::200::invite) = 0;</div><div>    }</div><div><br></div><div>    #407 BYE</div><div>    if($sht(a=>response::407::bye) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, cseq, total) VALUES($var(f_date), $var(t_date), '407', 'BYE', $sht(a=>response::407::bye))");</div><div>        $sht(a=>response::407::bye) = 0;</div><div>    }</div><div><br></div><div>    #401 BYE</div><div>    if($sht(a=>response::401::bye) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, cseq, total) VALUES($var(f_date), $var(t_date), '401', 'BYE', $sht(a=>response::401::bye))");</div><div>        $sht(a=>response::401::bye) = 0;</div><div>    }</div><div><br></div><div>    #200 BYE</div><div>    if($sht(a=>response::200::bye) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, cseq, total) VALUES($var(f_date), $var(t_date), '200', 'BYE', $sht(a=>response::200::bye))");</div><div>        $sht(a=>response::200::bye) = 0;</div><div>    }</div><div><br></div><div>    #ALL MESSAGES</div><div>    if($sht(a=>method::all) > 0) {</div><div>        sql_query("cb", "INSERT INTO stats_method (from_date, to_date, method, total) VALUES($var(f_date), $var(t_date), 'ALL', $sht(a=>method::all))");</div><div>        $sht(a=>method::all) = 0;</div><div>    }</div><div><br></div><div>}</div><div><br></div><div>I managed to get this working with Opensips with the help of the following link:<a href="http://wiki.sipfoundry.org/display/sipXecs/Setting+up+an+RTCP-XR+collector+for+Polycom+Productivity+Suite">http://wiki.sipfoundry.org/display/sipXecs/Setting+up+an+RTCP-XR+collector+for+Polycom+Productivity+Suite</a></div><div><br></div><div>However, Kamailio's routing logic syntax is different and I'm having a hard time parsing through it. This is what the RTCP-XR collection logic looks like in the Opensips routing logic: </div><div><br></div><div><div># main request routing logic</div><div><br></div><div>route{</div><div>        #For example, you can capture only needed methods...</div><div>        if (method =~ "^(INVITE|ACK|CANCEL|BYE|REFER|PRACK|UPDATE)") {</div><div>                sip_capture();</div><div>        }</div><div><br></div><div>        else if (method =~ "^PUBLISH" && !$ct =~ "x-sipX-nonat" && $rd = "<a href="http://domain.com">domain.com</a>" ) {</div><div>                #xlog("$rd=================================");</div><div>                perl_exec("messagedump");</div><div>                t_reply("200","PUBLISH RECORDED");</div><div>        }</div><div><br></div><div>        exit;</div><div>}</div><div><br></div><div>onreply_route {</div><div><br></div><div>        #And only needed reply or needed requests method</div><div>        if(status =~ "^(1[0-9][0-9]|[3[0-9][0-9]|4[0-9]|[56][0-9][0-9])") {</div><div>        if($rm =~ "^(INVITE|ACK|CANCEL|BYE|REFER|PRACK|UPDATE)") {</div><div>                sip_capture();</div><div>        }</div><div>        exit;</div><div>}</div><div>}</div></div><div><br></div><div>Any help would be appreciated. </div>-- <br><div class="gmail_signature"><div dir="ltr"><div style="color:rgb(136,136,136)"><font face="verdana,sans-serif"><b>Ashlin Jones-Acosta</b></font></div><div style="color:rgb(136,136,136)"><font face="verdana,sans-serif">Telephony Systems Engineer</font></div><div style="color:rgb(136,136,136)"><font face="verdana,sans-serif">Infrastructure Technology<br></font></div><div style="color:rgb(136,136,136)"><font face="verdana,sans-serif">Direct: (805) 222-0934<br></font></div><div style="color:rgb(136,136,136)"><font face="verdana,sans-serif"><b>PennyMac</b></font></div></div></div>
</div></div>