]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
sense att xfer in valet
authorAnthony Minessale <anthony.minessale@gmail.com>
Fri, 9 Oct 2009 02:09:49 +0000 (02:09 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Fri, 9 Oct 2009 02:09:49 +0000 (02:09 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@15126 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/applications/mod_valet_parking/mod_valet_parking.c
src/mod/endpoints/mod_sofia/sofia.c

index 484cd6c2f3307f42d532754749a14ad446032d10..c55cdb1f4ff1a0acf72a72bb5b111bfa8fb349f4 100644 (file)
@@ -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");
                }
index 7f6f3707e6dd07239e03dfc947b64f4123ecc668..5ec7e03b79b8c9716ed2b1b4db8b785fe208b72c 100644 (file)
@@ -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"),