Summary:ASTERISK-29349: Silent voicemail option is not completely silent
Reporter:N A (InterLinked)Labels:patch
Date Opened:2021-03-16 12:00:20Date Closed:2021-05-19 08:03:17
Versions:18.2.0 Frequency of
Environment:Debian 10Attachments:( 0) ASTERISK-29349.patch
( 1) ASTERISK-29349.patch
Description:I don't think this is necessarily a bug, but it is a drawback or caveat of the VoiceMail() application which, in my opinion, is non-sensical behavior.

I play my own audio files before going to the VoiceMail() application in Asterisk. This includes using custom beep tones as opposed to the default beep file that is provided. My problem is that the s option (skip instructions) does not suppress the beep. As a result, the workaround I have been using for several years is now to replace beep.ulaw with a short, silent audio file, so that callers do not hear two beeps. This is demonstrated below:

[Mar 16 12:48:11]     -- Executing [2311131@tad:6] VoiceMail("Local/2311131@tad-000022cd;2", "2311131@default,s") in new stack
[Mar 16 12:48:11]     -- <Local/2311131@tad-000022cd;2> Playing 'beep.ulaw' (language 'en')
[Mar 16 12:48:12]     -- Recording the message
[Mar 16 12:48:12]     -- x=0, open writing:  /var/spool/asterisk/voicemail/default/2311131/tmp/MITIHK format: wav49, 0x7f7ae020be00
[Mar 16 12:48:12]     -- x=1, open writing:  /var/spool/asterisk/voicemail/default/2311131/tmp/MITIHK format: gsm, 0x7f7ae01a0d20
[Mar 16 12:48:12]     -- x=2, open writing:  /var/spool/asterisk/voicemail/default/2311131/tmp/MITIHK format: wav, 0x7f7ae0250e90

I have a global variable called ${beep} I can use if I want to play an actual beep.

The problem here arises if I want to use the VoiceMail application more as it is intended, not with the s option. In that case, I cannot simply play my own beep beforehand, but rely on the built in one, which I have overwritten. This is to say, you either have to provide your own beep files all the time or can't use custom beep files at all. For most people, I agree this will be a minor issue, if one at all, but it is such a simple issue to fix that it makes no sense for this drawback to persist.

To rectify this issue, I would propose either:

- modifying the s option to suppress the beep, because you can manually play a beep in the dialplan beforehand if you want to. The downside is this is not backwards-compatible with existing behavior. I don't seriously believe this option would be considered.
- adding an additional option which, in addition to the s option, perhaps, would suppress the built in beep. That way, once can truly "silently" go into the voicemail application, and this option can be used when desired. For instance, a "q" option, for true silent/quiet operation.

I believe an additional quiet option is warranted in this case; I could patch the application code to not play the beep, but the beep would be desirable some of the time, so an option to selectively disable this would be very useful. This grants administrators much more flexibility in voicemail configuration and would make voicemail in the dialplan less clumsy.
Comments:By: Asterisk Team (asteriskteam) 2021-03-16 12:00:21.851-0500

Thanks for creating a report! The issue has entered the triage process. That means the issue will wait in this status until a Bug Marshal has an opportunity to review the issue. Once the issue has been reviewed you will receive comments regarding the next steps towards resolution. Please note that log messages and other files should not be sent to the Sangoma Asterisk Team unless explicitly asked for. All files should be placed on this issue in a sanitized fashion as needed.

A good first step is for you to review the [Asterisk Issue Guidelines|https://wiki.asterisk.org/wiki/display/AST/Asterisk+Issue+Guidelines] if you haven't already. The guidelines detail what is expected from an Asterisk issue report.

Then, if you are submitting a patch, please review the [Patch Contribution Process|https://wiki.asterisk.org/wiki/display/AST/Patch+Contribution+Process].

Please note that once your issue enters an open state it has been accepted. As Asterisk is an open source project there is no guarantee or timeframe on when your issue will be looked into. If you need expedient resolution you will need to find and pay a suitable developer. Asking for an update on your issue will not yield any progress on it and will not result in a response. All updates are posted to the issue when they occur.

Please note that by submitting data, code, or documentation to Sangoma through JIRA, you accept the Terms of Use present at [https://www.asterisk.org/terms-of-use/|https://www.asterisk.org/terms-of-use/].

By: Benjamin Keith Ford (bford) 2021-03-17 10:48:14.640-0500

Features requests without patches are not accepted through the issue tracker. Features requests are openly discussed on the mailing lists, forums, and IRC [1]. Please see the Asterisk Issue Guidelines [2] for more information on feature request and patch submission.

[1] http://asterisk.org/community/discuss
[2] https://wiki.asterisk.org/wiki/display/AST/Asterisk+Issue+Guidelines

By: Asterisk Team (asteriskteam) 2021-04-15 14:12:45.545-0500

This issue has been reopened as a result of your commenting on it as the reporter. It will be triaged once again as applicable.

By: N A (InterLinked) 2021-04-15 16:16:02.682-0500

All right, here is a patch that successfully resolves the issue, tested and fully working in all modes.

This option is additive in that existing behavior is not changed and not specifying the option does not change the behavior from how VoiceMail currently works.

This patch adds the t() option with one optional argument. If an argument is specified, it will be used as a custom beep tone to play instead of the default beep file. If no argument is specified, the tone will be suppressed entirely (no beep will be heard). This expands flexibility by allowing the beep to be suppressed entirely or changed, providing much needed dialplan flexibility.

By: Kevin Harwell (kharwell) 2021-04-15 16:35:17.656-0500

Thanks for the contribution! If you'd like your contribution to be included faster, you should submit your patch for code review by the Asterisk Developer Community. To do so, please follow the Code Review [1] instructions on the wiki. Be sure to:
* Verify that your patch conforms to the Coding Guidelines [2]
* Review the Code Review Checklist [3] for common items reviewers will look for
* If necessary, provide tests for the Asterisk Test Suite that verify the correctness of your patch [4]
* As this is a new feature, please read the New Feature Guidelines [5]
* Make sure your new feature applies cleanly to Asterisk trunk

When ready, submit your patch and any tests to Gerrit [6] for code review.


[1] https://wiki.asterisk.org/wiki/display/AST/Code+Review
[2] https://wiki.asterisk.org/wiki/display/AST/Coding+Guidelines
[3] https://wiki.asterisk.org/wiki/display/AST/Code+Review+Checklist
[4] https://wiki.asterisk.org/wiki/display/AST/Asterisk+Test+Suite+Documentation
[5] https://wiki.asterisk.org/wiki/display/AST/New+Feature+Guidelines
[6] https://wiki.asterisk.org/wiki/display/AST/Gerrit+Usage

By: N A (InterLinked) 2021-04-15 16:43:48.677-0500

Whoops, forgot the closing </para> tag for the documentation. Added that in this copy.

By: Friendly Automation (friendly-automation) 2021-05-19 08:03:20.221-0500

Change 15877 merged by Joshua Colp:
app_voicemail: Configurable voicemail beep


By: Friendly Automation (friendly-automation) 2021-05-19 08:03:34.865-0500

Change 15887 merged by Joshua Colp:
app_voicemail: Configurable voicemail beep


By: Friendly Automation (friendly-automation) 2021-05-19 08:03:51.898-0500

Change 15876 merged by Joshua Colp:
app_voicemail: Configurable voicemail beep