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;