<para>Skip the playback of instructions for leaving a message to the
calling party.</para>
</option>
+ <option name="t">
+ <argument name="x" required="false" />
+ <para>Play a custom beep tone to the caller instead of the default one.
+ If this option is used but no file is specified, the beep is suppressed.</para>
+ </option>
<option name="u">
<para>Play the <literal>unavailable</literal> greeting.</para>
</option>
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 {
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[] = {
unsigned int flags;
signed char record_gain;
char *exitcontext;
+ char *beeptone;
};
static void generate_msg_id(char *dst)
/* 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 */
/* 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 */
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);
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';