From 421a60906608d2bfc95a29a948d51c2ec5e0029a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 9 Oct 2009 02:09:49 +0000 Subject: [PATCH] sense att xfer in valet git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@15126 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- .../applications/mod_valet_parking/mod_valet_parking.c | 8 +++++++- src/mod/endpoints/mod_sofia/sofia.c | 10 ++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/mod/applications/mod_valet_parking/mod_valet_parking.c b/src/mod/applications/mod_valet_parking/mod_valet_parking.c index 484cd6c2f3..c55cdb1f4f 100644 --- a/src/mod/applications/mod_valet_parking/mod_valet_parking.c +++ b/src/mod/applications/mod_valet_parking/mod_valet_parking.c @@ -97,6 +97,7 @@ SWITCH_STANDARD_APP(valet_parking_function) switch_status_t status; switch_input_args_t args = { 0 }; char dbuf[10]; + char *dest; lot = valet_find_lot(lot_name); switch_assert(lot); @@ -152,7 +153,12 @@ SWITCH_STANDARD_APP(valet_parking_function) switch_mutex_unlock(lot->mutex); return; } - + + + dest = switch_core_session_sprintf(session, "valet_park:%s %s", lot_name, ext); + switch_channel_set_variable(channel, "inline_destination", dest); + + if (!(tmp = switch_channel_get_variable(channel, "valet_hold_music"))) { tmp = switch_channel_get_variable(channel, "hold_music"); } diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 7f6f3707e6..5ec7e03b79 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -4374,6 +4374,7 @@ void sofia_handle_sip_i_refer(nua_t *nua, sofia_profile_t *profile, nua_handle_t if (t_session) { switch_channel_t *t_channel = switch_core_session_get_channel(t_session); + const char *idest = switch_channel_get_variable(hup_channel, "inline_destination"); ext = switch_channel_get_variable(hup_channel, "destination_number"); if (!switch_strlen_zero(full_ref_by)) { @@ -4383,8 +4384,13 @@ void sofia_handle_sip_i_refer(nua_t *nua, sofia_profile_t *profile, nua_handle_t if (!switch_strlen_zero(full_ref_to)) { switch_channel_set_variable(t_channel, SOFIA_REFER_TO_VARIABLE, full_ref_to); } - - switch_ivr_session_transfer(t_session, ext, NULL, NULL); + + if (idest) { + switch_ivr_session_transfer(t_session, idest, "inline", NULL); + } else { + switch_ivr_session_transfer(t_session, ext, NULL, NULL); + } + nua_notify(tech_pvt->nh, NUTAG_NEWSUB(1), SIPTAG_CONTENT_TYPE_STR("message/sipfrag"),