From 9fe1179ed19bd9778f6cbed3272de127ff6468df Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 8 Dec 2008 15:42:37 +0000 Subject: [PATCH] add a mechanism to tell if a file played from sendmsg over event socket for the guy on the mailing list git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10653 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/include/switch_types.h | 3 +++ src/mod/applications/mod_dptools/mod_dptools.c | 17 ++++++++++++++++- src/switch_core_session.c | 9 ++++++--- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/include/switch_types.h b/src/include/switch_types.h index 698820f0a8..20eb491b5f 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -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" diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index de49415c6e..3bff7c7316 100644 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -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) diff --git a/src/switch_core_session.c b/src/switch_core_session.c index afe34dc531..58f3853041 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -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); }