Browse Source

Merge pull request #31 from 2600hz/KAZOO-3308

KAZOO-3308 call-park redirect in kamailio
3.20
lazedo 11 years ago
parent
commit
9b2a7bd20f
2 changed files with 24 additions and 0 deletions
  1. +13
    -0
      kamailio/default.cfg
  2. +11
    -0
      kamailio/dispatcher-role.cfg

+ 13
- 0
kamailio/default.cfg View File

@ -530,6 +530,13 @@ route[EXTERNAL_TO_INTERNAL_RELAY]
} }
#!endif #!endif
##### CALL-PARK ####
if(is_method("REFER")) {
$avp(refer_to) = $hdr(Refer-To);
$avp(refer_to_uri) = $rt;
$avp(referred_by) = $hdr(Referred-By);
}
remove_hf_re("^X-.*"); remove_hf_re("^X-.*");
append_hf("X-AUTH-IP: $si\r\n"); append_hf("X-AUTH-IP: $si\r\n");
@ -578,6 +585,12 @@ onreply_route[INTERNAL_REPLY]
setflag(FLAG_SESSION_PROGRESS); setflag(FLAG_SESSION_PROGRESS);
} }
##### CALL-PARK ####
if (is_method("REFER") && $T_reply_code == "202" ) {
$sht(park=>$(avp(refer_to_uri){uri.user})@$(avp(refer_to_uri){uri.domain})) = "sip:" + $(ct{tobody.uri}{uri.host}) + ":" + $(ct{tobody.uri}{uri.port});
xlog("L_INFO", "PARK $(avp(refer_to_uri){uri.user})@$(avp(refer_to_uri){uri.domain}) = sip:$(ct{tobody.uri}{uri.host}):$(ct{tobody.uri}{uri.port})");
}
if ($rs < 300) { if ($rs < 300) {
xlog("L_INFO", "$ci|pass|$T_req($si):$T_req($sp)"); xlog("L_INFO", "$ci|pass|$T_req($si):$T_req($sp)");
} }


+ 11
- 0
kamailio/dispatcher-role.cfg View File

@ -1,5 +1,6 @@
######## Generic Hash Table container in shared memory ######## ######## Generic Hash Table container in shared memory ########
modparam("htable", "htable", "failover=>size=16;autoexpire=120") modparam("htable", "htable", "failover=>size=16;autoexpire=120")
modparam("htable", "htable", "park=>size=4;autoexpire=600")
####### Dispatcher module ######## ####### Dispatcher module ########
loadmodule "dispatcher.so" loadmodule "dispatcher.so"
@ -69,6 +70,7 @@ route[DISPATCHER_FIND_ROUTES]
#!endif #!endif
if (is_method("INVITE")) { if (is_method("INVITE")) {
if($hdr(Replaces)!= $null) { if($hdr(Replaces)!= $null) {
$var(replaced_call_id) = $(hdr(Replaces){s.select,0,;}); $var(replaced_call_id) = $(hdr(Replaces){s.select,0,;});
xlog("L_INFO", "$ci|log|replaces call-id $var(replaced_call_id)"); xlog("L_INFO", "$ci|log|replaces call-id $var(replaced_call_id)");
@ -82,6 +84,15 @@ route[DISPATCHER_FIND_ROUTES]
} }
} }
} }
##### CALL-PARK ####
if($(ru{uri.user}) =~ "\*3" && $sht(park=>$(ru{uri.user})@$(ru{uri.domain})) != $null) {
$du = $sht(park=>$(ru{uri.user})@$(ruri{uri.domain}));
$sht(park=>$(ru{uri.user})@$(ruri{uri.domain})) = $null;
xlog("L_INFO", "$ci|log|redirecting park request to $du");
return;
}
} }
if (!ds_select_dst("$var(ds_group)", "0") || $(avp(ds_dst)[0]) == $null) { if (!ds_select_dst("$var(ds_group)", "0") || $(avp(ds_dst)[0]) == $null) {


Loading…
Cancel
Save