diff --git a/conf/voicemail.conf.xml b/conf/voicemail.conf.xml
index 43335ce1ae..c91affe6e9 100644
--- a/conf/voicemail.conf.xml
+++ b/conf/voicemail.conf.xml
@@ -29,6 +29,11 @@
+
+
+
ff_key = *ff_key;
*profile->rew_key = *rew_key;
*profile->urgent_key = *urgent_key;
+ *profile->operator_key = *operator_key;
+ profile->operator_ext = switch_core_strdup(globals.pool, operator_ext);
profile->storage_dir = switch_core_strdup(globals.pool, storage_dir);
profile->tone_spec = switch_core_strdup(globals.pool, tone_spec);
profile->callback_dialplan = switch_core_strdup(globals.pool, callback_dialplan);
@@ -1665,6 +1675,20 @@ static switch_status_t voicemail_leave_main(switch_core_session_t *session, cons
if (*buf != '\0') {
if (!strcasecmp(buf, profile->main_menu_key)) {
voicemail_check_main(session, profile_name, domain_name, id, 0);
+ } else if(!strcasecmp(buf, profile->operator_key) && !switch_strlen_zero(profile->operator_key)) {
+ int argc;
+ char *argv[4];
+ char *mycmd;
+
+ if (!switch_strlen_zero(profile->operator_ext) && (mycmd = switch_core_session_strdup(session, profile->operator_ext))) {
+ argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+ if(argc >= 1 && argc <= 4) {
+ switch_ivr_session_transfer(session, argv[0], argv[1], argv[2]);
+ /* the application still runs after we leave it so we need to make sure that we dont do anything evil */
+ send_mail=0;
+ goto end;
+ }
+ }
} else {
goto greet;
}