]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add a mechanism to tell if a file played from sendmsg over event socket for the guy...
authorAnthony Minessale <anthony.minessale@gmail.com>
Mon, 8 Dec 2008 15:42:37 +0000 (15:42 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Mon, 8 Dec 2008 15:42:37 +0000 (15:42 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10653 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_types.h
src/mod/applications/mod_dptools/mod_dptools.c
src/switch_core_session.c

index 698820f0a806bab6ece3dcc2b75f23fb395ced07..20eb491b5ff17fe2bdf98381c35e89d0aac0ce77 100644 (file)
@@ -110,6 +110,9 @@ SWITCH_BEGIN_EXTERN_C
 #define SWITCH_PATH_SEPARATOR "/"
 #endif
 #define SWITCH_URL_SEPARATOR "://"
+#define SWITCH_CURRENT_APPLICATION_VARIABLE "current_application"
+#define SWITCH_CURRENT_APPLICATION_DATA_VARIABLE "current_application_data"
+#define SWITCH_CURRENT_APPLICATION_RESPONSE_VARIABLE "current_application_response"
 #define SWITCH_ENABLE_HEARTBEAT_EVENTS_VARIABLE "enable_heartbeat_events"
 #define SWITCH_BYPASS_MEDIA_AFTER_BRIDGE_VARIABLE "bypass_media_after_bridge"
 #define SWITCH_READ_RESULT_VARIABLE "read_result"
index de49415c6e2971d80993a7701ab3bbffbc5a169f..3bff7c73167500f88d8ecc5e207d9aabf40c5b57 100644 (file)
@@ -1646,12 +1646,27 @@ SWITCH_STANDARD_APP(playback_function)
 {
        switch_input_args_t args = { 0 };
        switch_channel_t *channel = switch_core_session_get_channel(session);
+       switch_status_t status;
 
        args.input_callback = on_dtmf;
 
        switch_channel_set_variable(channel, SWITCH_PLAYBACK_TERMINATOR_USED, "" );
 
-       switch_ivr_play_file(session, NULL, data, &args);
+       status = switch_ivr_play_file(session, NULL, data, &args);
+
+       switch (status) {
+       case SWITCH_STATUS_SUCCESS:
+       case SWITCH_STATUS_BREAK:
+               switch_channel_set_variable(channel, SWITCH_CURRENT_APPLICATION_RESPONSE_VARIABLE, "FILE PLAYED");
+               break;
+       case SWITCH_STATUS_NOTFOUND:
+               switch_channel_set_variable(channel, SWITCH_CURRENT_APPLICATION_RESPONSE_VARIABLE, "FILE NOT FOUND");
+               break;
+       default:
+               switch_channel_set_variable(channel, SWITCH_CURRENT_APPLICATION_RESPONSE_VARIABLE, "PLAYBACK ERROR");
+               break;
+       }
+
 }
 
 SWITCH_STANDARD_APP(gentones_function)
index afe34dc531d86778286f152fbbf6ba1073baedda..58f385304114002281789696b1eea4cb1516e945 100644 (file)
@@ -1306,9 +1306,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_exec(switch_core_session_t *
                }
        }
        
-       switch_channel_set_variable(channel, "current_application", application_interface->interface_name);
-       switch_channel_set_variable(channel, "current_application_data", arg);
-
+       switch_channel_set_variable(channel, SWITCH_CURRENT_APPLICATION_VARIABLE, application_interface->interface_name);
+       switch_channel_set_variable(channel, SWITCH_CURRENT_APPLICATION_DATA_VARIABLE, arg);
+       switch_channel_set_variable(channel, SWITCH_CURRENT_APPLICATION_RESPONSE_VARIABLE, NULL);
+       
        if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_EXECUTE) == SWITCH_STATUS_SUCCESS) {
                switch_channel_event_set_data(session->channel, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application", application_interface->interface_name);
@@ -1325,9 +1326,11 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_exec(switch_core_session_t *
        application_interface->application_function(session, arg);
        
        if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_EXECUTE_COMPLETE) == SWITCH_STATUS_SUCCESS) {
+               const char *resp = switch_channel_get_variable(session->channel, SWITCH_CURRENT_APPLICATION_RESPONSE_VARIABLE);
                switch_channel_event_set_data(session->channel, event);
                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", arg);
+               switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application-Response", resp ? resp : "_none_");
                switch_event_fire(&event);
        }