From 2b2f921442e14632634f850b5193019e65289e82 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 14 Jun 2010 18:37:40 -0500 Subject: [PATCH] caller/callee id flipping for blind xfer --- src/switch_ivr.c | 15 +++++++++++++++ src/switch_ivr_bridge.c | 3 ++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/switch_ivr.c b/src/switch_ivr.c index d1abab3921..14f874289a 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -1406,6 +1406,21 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_ new_profile->destination_number = switch_core_strdup(new_profile->pool, extension); new_profile->rdnis = switch_core_strdup(new_profile->pool, profile->destination_number); + if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) { + if (profile->callee_id_name) { + switch_channel_set_variable(channel, "pre_transfer_caller_id_name", new_profile->caller_id_name); + new_profile->caller_id_name = switch_core_strdup(new_profile->pool, profile->callee_id_name); + profile->callee_id_name = NULL; + } + + if (profile->callee_id_number) { + switch_channel_set_variable(channel, "pre_transfer_caller_id_number", new_profile->caller_id_number); + new_profile->caller_id_number = switch_core_strdup(new_profile->pool, profile->callee_id_number); + profile->callee_id_number = NULL; + } + } + + switch_channel_set_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE, NULL); /* If HANGUP_AFTER_BRIDGE is set to 'true', SWITCH_SIGNAL_BRIDGE_VARIABLE diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index 9d58ae6d88..9cb56b2246 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -100,7 +100,8 @@ static void send_display(switch_core_session_t *session, switch_core_session_t * caller_channel = switch_core_session_get_channel(session); caller_profile = switch_channel_get_caller_profile(caller_channel); - if (switch_channel_direction(caller_channel) == SWITCH_CALL_DIRECTION_OUTBOUND) { + // if (switch_channel_direction(caller_channel) == SWITCH_CALL_DIRECTION_OUTBOUND) { + if (!switch_channel_test_flag(caller_channel, CF_BRIDGE_ORIGINATOR)) { name = caller_profile->callee_id_name; number = caller_profile->callee_id_number;