diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c index 871a8e59eb..b59510fd4c 100644 --- a/src/mod/applications/mod_dptools/mod_dptools.c +++ b/src/mod/applications/mod_dptools/mod_dptools.c @@ -45,6 +45,14 @@ static void sleep_function(switch_core_session_t *session, char *data) } } +static void answer_function(switch_core_session_t *session, char *data) +{ + switch_channel_t *channel; + channel = switch_core_session_get_channel(session); + assert(channel != NULL); + switch_channel_answer(channel); +} + static void set_function(switch_core_session_t *session, char *data) { switch_channel_t *channel; @@ -118,11 +126,19 @@ static const switch_application_interface_t set_application_interface = { /*.application_function */ set_function }; +static const switch_application_interface_t answer_application_interface = { + /*.interface_name */ "answer", + /*.application_function */ answer_function, + NULL,NULL,NULL, + &set_application_interface + +}; + static const switch_application_interface_t strftime_application_interface = { /*.interface_name */ "strftime", /*.application_function */ strftime_function, NULL,NULL,NULL, - &set_application_interface + &answer_application_interface }; diff --git a/src/mod/applications/mod_playback/mod_playback.c b/src/mod/applications/mod_playback/mod_playback.c index 4bc91740c5..cc167aae3a 100644 --- a/src/mod/applications/mod_playback/mod_playback.c +++ b/src/mod/applications/mod_playback/mod_playback.c @@ -91,7 +91,7 @@ static void speak_function(switch_core_session_t *session, char *data) switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); } - switch_channel_answer(channel); + switch_channel_pre_answer(channel); switch_ivr_speak_text(session, engine, voice, timer_name, codec->implementation->samples_per_second, on_dtmf, text, buf, sizeof(buf)); }