]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-10704 [core] add event-uuid-name
authorlazedo <luis.azedo@factorlusitano.com>
Mon, 4 Jun 2018 11:01:52 +0000 (11:01 +0000)
committerlazedo <luis.azedo@factorlusitano.com>
Fri, 8 Jun 2018 12:24:43 +0000 (12:24 +0000)
this allows for external call control to provide a app name

src/switch_core_session.c
src/switch_ivr.c

index e6da6b7a63238c251607e53046f3102c81b7c89f..2877751d24c35055a31be00e8a41405e74761638 100644 (file)
@@ -2756,7 +2756,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_exec(switch_core_session_t *
        const char *var;
        switch_channel_t *channel = switch_core_session_get_channel(session);
        char *expanded = NULL;
-       const char *app, *app_uuid_var;
+       const char *app, *app_uuid_var, *app_uuid_name;
        switch_core_session_message_t msg = { 0 };
        char delim = ',';
        int scope = 0;
@@ -2765,10 +2765,15 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_exec(switch_core_session_t *
 
        if ((app_uuid_var = switch_channel_get_variable(channel, "app_uuid"))) {
                app_uuid = (char *)app_uuid_var;
+               switch_channel_set_variable(channel, "app_uuid", NULL);
        } else {
                switch_uuid_str(uuid_str, sizeof(uuid_str));
        }
 
+       if((app_uuid_name = switch_channel_get_variable(channel, "app_uuid_name"))) {
+               switch_channel_set_variable(channel, "app_uuid_name", NULL);
+       }
+
        switch_assert(application_interface);
 
        app = application_interface->interface_name;
@@ -2853,6 +2858,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_exec(switch_core_session_t *
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application", application_interface->interface_name);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application-Data", expanded);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application-UUID", app_uuid);
+               switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application-UUID-Name", app_uuid_name);
                switch_event_fire(&event);
        }
 
@@ -2877,13 +2883,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_exec(switch_core_session_t *
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application-Data", expanded);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application-Response", resp ? resp : "_none_");
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application-UUID", app_uuid);
+               switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application-UUID-Name", app_uuid_name);
                switch_event_fire(&event);
        }
 
-       if(app_uuid != uuid_str) {
-               switch_channel_set_variable(channel, "app_uuid", NULL);
-       };
-
        msg.message_id = SWITCH_MESSAGE_INDICATE_APPLICATION_EXEC_COMPLETE;
        switch_core_session_receive_message(session, &msg);
 
index 770c3bb81f60f461f504e5b4fa128847a7fff775..f3ff3d5fbebca3d6748a7a19eaa16dabec4d95c8 100644 (file)
@@ -550,6 +550,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_parse_event(switch_core_session_t *se
        if (cmd_hash == CMD_EXECUTE) {
                char *app_name = switch_event_get_header(event, "execute-app-name");
                char *event_uuid = switch_event_get_header(event, "event-uuid");
+               char *event_uuid_name = switch_event_get_header(event, "event-uuid-name");
                char *app_arg = switch_event_get_header(event, "execute-app-arg");
                char *content_type = switch_event_get_header(event, "content-type");
                char *loop_h = switch_event_get_header(event, "loops");
@@ -628,6 +629,9 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_parse_event(switch_core_session_t *se
                                if (event_uuid) {
                                        switch_channel_set_variable(channel, "app_uuid", event_uuid);
                                }
+                               if (event_uuid_name) {
+                                       switch_channel_set_variable(channel, "app_uuid_name", event_uuid_name);
+                               }
 
                                switch_channel_set_variable_printf(channel, "current_loop", "%d", x + 1);
                                switch_channel_set_variable_printf(channel, "total_loops", "%d", loops);