|
|
|
@ -2,7 +2,7 @@ |
|
|
|
modparam("htable", "htable", "park=>size=4;autoexpire=600") |
|
|
|
modparam("htable", "htable", "fp=>size=32;autoexpire=3600;"); |
|
|
|
|
|
|
|
route[ATTEMPT_FAST_PICKUP] |
|
|
|
route[FAST_PICKUP_ATTEMPT] |
|
|
|
{ |
|
|
|
if (!is_method("INVITE")) { |
|
|
|
return; |
|
|
|
@ -34,6 +34,7 @@ route[ATTEMPT_FAST_PICKUP] |
|
|
|
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" : true }'; |
|
|
|
$var(amqp_routing_key) = "call.status_req." + $(var(replaced_call_id){kz.encode}); |
|
|
|
sl_send_reply("100", "Attempting Kazoo query"); |
|
|
|
if(kazoo_query("callevt", $var(amqp_routing_key), $var(amqp_payload_request))) { |
|
|
|
$du = $(kzR{kz.json,Switch-URL}); |
|
|
|
if($du != $null) { |
|
|
|
@ -55,22 +56,6 @@ route[ATTEMPT_FAST_PICKUP] |
|
|
|
route(EXTERNAL_TO_INTERNAL_RELAY); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
##### CALL-PARK IN KAZOO #### |
|
|
|
if($(ru{uri.user}) =~ "\*3" && !($rd =~ "[0-9]{1,3}\.[0-9]{1,3}.[0-9]{1,3}\.[0-9]{1,3}") ) { |
|
|
|
xlog("L_INFO", "$ci|log|checking park request to $(ru{uri.user})@$(ru{uri.domain})"); |
|
|
|
$var(amqp_payload_request) = '{"Event-Category" : "call_event" , "Event-Name" : "query_user_channels_req", "Username" : "$(ru{uri.user})", "Realm" : "$(ru{uri.domain})", "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,Channels[0].switch_url}); |
|
|
|
if($du != $null) { |
|
|
|
xlog("L_INFO", "$ci|log|redirecting park request to $du, courtesy of kazoo"); |
|
|
|
route(EXTERNAL_TO_INTERNAL_RELAY); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
route[FAST_PICKUP_REFER] |
|
|
|
@ -89,8 +74,8 @@ route[FAST_PICKUP_REPLY] { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
$var(contact) = "sip:$(ct{tobody.uri}{uri.host}):$(ct{tobody.uri}{uri.port})"; |
|
|
|
xlog("L_INFO", "caching park info $(avp(refer_to_uri){uri.user})@$(avp(refer_to_uri){uri.domain}) = $var(contact)"); |
|
|
|
$var(contact) = "sip:" + $(ct{tobody.uri}{uri.host}) + ":" + $(ct{tobody.uri}{uri.port}); |
|
|
|
xlog("L_INFO", "$ci|log|caching park info $(avp(refer_to_uri){uri.user})@$(avp(refer_to_uri){uri.domain}) = $var(contact)"); |
|
|
|
|
|
|
|
$sht(park=>$(avp(refer_to_uri){uri.user})@$(avp(refer_to_uri){uri.domain})) = $var(contact); |
|
|
|
} |
|
|
|
|