From 035364db5bf2e538ae774c18fcb538ca99fd2a27 Mon Sep 17 00:00:00 2001 From: karl anderson Date: Tue, 30 Sep 2014 20:48:27 -0400 Subject: [PATCH] update registrar contact builder and only request positive replies for channel queries --- kamailio/dispatcher-role.cfg | 2 +- kamailio/registrar-role.cfg | 25 ++++++++++++++++--------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/kamailio/dispatcher-role.cfg b/kamailio/dispatcher-role.cfg index b1ce3f6..5782199 100644 --- a/kamailio/dispatcher-role.cfg +++ b/kamailio/dispatcher-role.cfg @@ -72,7 +72,7 @@ route[DISPATCHER_FIND_ROUTES] if($hdr(Replaces)!= $null) { $var(replaced_call_id) = $(hdr(Replaces){s.select,0,;}); xlog("L_INFO", "$ci|log|replaces call-id $var(replaced_call_id)"); - $var(amqp_payload_request) = '{"Event-Category" : "call_event" , "Event-Name" : "channel_status_req", "Call-ID" : "' + $var(replaced_call_id) + '", "Active-Only" : false }'; + $var(amqp_payload_request) = '{"Event-Category" : "call_event" , "Event-Name" : "channel_status_req", "Call-ID" : "' + $var(replaced_call_id) + '", "Active-Only" : true }'; $var(amqp_routing_key) = "call.status_req." + $(var(replaced_call_id){kz.encode}); if(kazoo_query("callevt", $var(amqp_routing_key), $var(amqp_payload_request))) { $du = $(kzR{kz.json,Switch-URL}); diff --git a/kamailio/registrar-role.cfg b/kamailio/registrar-role.cfg index 2006972..7f1be08 100644 --- a/kamailio/registrar-role.cfg +++ b/kamailio/registrar-role.cfg @@ -111,24 +111,31 @@ route[HANDLE_REGISTER] $var(expires) = 190; } - $var(fs_path) = "%3C" + $rz + "%3A" + $Ri + "%3A" + $Rp + "%3Btransport=" + $proto + "%3Blr%3Breceived=" + $si+":"+$sp+"%3E"; - $var(fs_contact) = "<" + $(ct{tobody.uri}) + ";fs_path=" + $var(fs_path) + ">"; + $var(params) = "fs_path="; + if($(ct{tobody.params}) != $null) { - $var(fs_contact) = $var(fs_contact) + ";" + $(ct{tobody.params}); + $var(params) = $(ct{tobody.params}{s.escape.common}) + ";" + $var(params); + } + + if ($avp(AVP_RECV_PARAM) == $null) { + $var(fs_contact) = "<" + $(ct{tobody.uri}) + ";" + $var(params) + ">"; + } else { + $var(fs_contact) = ""; } - xlog("L_INFO", "$ci|end|successful registration with contact $var(fs_contact)"); - $var(register_contants) = " 'Presence-Hosts' : 'n/a', 'Profile-Name' : 'sipinterface_1', 'Status' : 'Registered', 'Event-Timestamp' : '" + $TS + "'"; + $var(register_contants) = ' "Presence-Hosts" : "n/a", "Profile-Name" : "sipinterface_1", "Status" : "Registered", "Event-Timestamp" : "' + $TS + '"'; + if($var(expires) != $null) { - $var(register_contants) = $var(register_contants) + ", 'Expires' : " + $var(expires); + $var(register_contants) = $var(register_contants) + ', "Expires" : ' + $var(expires); } - $var(amqp_payload_request) = "{'Event-Category' : 'directory', 'Event-Name' : 'reg_success', 'Contact' : '" + $var(fs_contact) + "', 'Call-ID' : '" + $ci + "', 'Realm' : '" + $fd +"', 'Username' : '" + $fU + "', 'From-User' : '" + $fU + "', 'From-Host' : '" + $fd + "', 'To-User' : '" + $tU +"', 'To-Host' : '" + $td + "', 'User-Agent' : '" + $ua +"' ," + $var(register_contants)+ " }"; + + $var(amqp_payload_request) = '{"Event-Category" : "directory", "Event-Name" : "reg_success", "Contact" : "' + $var(fs_contact) + '", "Call-ID" : "' + $ci + '", "Realm" : "' + $fd + '", "Username" : "' + $fU + '", "From-User" : "' + $fU + '", "From-Host" : "' + $fd + '", "To-User" : "' + $tU + '", "To-Host" : "' + $td + '", "User-Agent" : "' + $ua + '" ,' + $var(register_contants) + ' }'; $var(amqp_routing_key) = "registration.success." + $(fd{kz.encode}) + "." + $fU; - kazoo_publish("callmgr", $var(amqp_routing_key), $var(amqp_payload_request)); - + kazoo_publish("callmgr", $var(amqp_routing_key), $var(amqp_payload_request)); + exit; } }