--- apps/app_voicemail.c.orig 2021-04-15 13:19:02.910629611 -0400
+++ apps/app_voicemail.c 2021-04-15 17:10:45.254683287 -0400
@@ -149,6 +149,11 @@
Skip the playback of instructions for leaving a message to the
calling party.
+
@@ -582,15 +587,17 @@
OPT_DTMFEXIT = (1 << 7),
OPT_MESSAGE_Urgent = (1 << 8),
OPT_MESSAGE_PRIORITY = (1 << 9),
- OPT_EARLYM_GREETING = (1 << 10)
+ OPT_EARLYM_GREETING = (1 << 10),
+ OPT_BEEP = (1 << 11)
};
enum vm_option_args {
OPT_ARG_RECORDGAIN = 0,
OPT_ARG_PLAYFOLDER = 1,
OPT_ARG_DTMFEXIT = 2,
+ OPT_ARG_BEEP_TONE = 3,
/* This *must* be the last value in this enum! */
- OPT_ARG_ARRAY_SIZE = 3,
+ OPT_ARG_ARRAY_SIZE = 4,
};
enum vm_passwordlocation {
@@ -609,7 +616,8 @@
AST_APP_OPTION_ARG('a', OPT_AUTOPLAY, OPT_ARG_PLAYFOLDER),
AST_APP_OPTION('U', OPT_MESSAGE_Urgent),
AST_APP_OPTION('P', OPT_MESSAGE_PRIORITY),
- AST_APP_OPTION('e', OPT_EARLYM_GREETING)
+ AST_APP_OPTION('e', OPT_EARLYM_GREETING),
+ AST_APP_OPTION_ARG('t', OPT_BEEP, OPT_ARG_BEEP_TONE)
});
static const char * const mailbox_folders[] = {
@@ -6277,6 +6285,7 @@
unsigned int flags;
signed char record_gain;
char *exitcontext;
+ char *beeptone;
};
static void generate_msg_id(char *dst)
@@ -6938,7 +6947,10 @@
/* Now play the beep once we have the message number for our next message. */
if (res >= 0) {
/* Unless we're *really* silent, try to send the beep */
- res = ast_stream_and_wait(chan, "beep", "");
+ /* Play default or custom beep, unless no beep desired */
+ if (!ast_strlen_zero(options->beeptone)) {
+ res = ast_stream_and_wait(chan, options->beeptone, "");
+ }
}
/* Store information in real-time storage */
@@ -8473,6 +8485,7 @@
/* Send VoiceMail */
memset(&leave_options, 0, sizeof(leave_options));
leave_options.record_gain = record_gain;
+ leave_options.beeptone = "beep";
cmd = leave_voicemail(chan, mailbox, &leave_options);
} else {
/* Forward VoiceMail */
@@ -12298,6 +12311,11 @@
leave_options.exitcontext = opts[OPT_ARG_DTMFEXIT];
}
}
+ if (ast_test_flag(&flags, OPT_BEEP)) { /* Use custom beep (or none at all) */
+ leave_options.beeptone = opts[OPT_ARG_BEEP_TONE];
+ } else { /* Use default beep */
+ leave_options.beeptone = "beep";
+ }
} else {
char temp[256];
res = ast_app_getdata(chan, "vm-whichbox", temp, sizeof(temp) - 1, 0);
@@ -15450,6 +15468,7 @@
memset(&leave_options, 0, sizeof(leave_options));
leave_options.record_gain = record_gain;
+ leave_options.beeptone = "beep";
res = leave_voicemail(chan, mailbox, &leave_options);
if (!res)
res = 't';